You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Driven-run start: commanderTo checks only the flat distance after .go xyz, never z (a wrong z puts the commander under the terrain and the bots follow into packs) #292
Found in the 2026-10-22 placement investigation (r10 Zul'Farrak, wiped party before any run started; evidence in ~/TortoiseBots-audit/tests/r10-19z29/slot2 and slot1, method file TARGETED-TEST-METHOD.md).
Root cause of the 'fake z': there is no teleport offset. .go xyz X Y Z uses the z you type and never snaps to the ground (core Commands.cpp HandleGoXYZ). At ZF 1895 1075 and 1915 1080 the ground is a raised shelf at about z 25 and 28, so a commander sent to z 9.5 stood 15-19 yd UNDER it; the agent only drops to a navmesh floor below it (internal/session/fall.go, actions.go) so with the ground above it (or no tile loaded) it keeps the typed z and sets z_unknown=true. .groupgo then placed the bots on the real ground (z 25-28), and they walked down toward the buried commander into a roaming patrol. .bot summon copies the commander's z exactly (PlayerConvenience.cpp:64-133), so it puts a bot under the ground or in the air whenever the commander's z is wrong (measured in the Barrens: 15 yd under -> bot stuck under the ground 21 s later).
Gap in the agent: internal/dungeon/start.go commanderTo (around lines 644-681) verifies only the flat distance after .go xyz, never z.
Fix: after the .go xyz, read .gps (server heights: GroundZ = top surface, FloorZ = floor under the commander's current z), re-send .go xyz X Y FloorZ+0.3, and require status z within 0.5 of FloorZ (and FloorZ equal to the leg's level when FloorZ and GroundZ differ); refuse the start with the numbers otherwise. Add a test with a fake .gps reply (z under the shelf) and a mutation proof.
Fixed by PR #293 (merged into dev, b067735): after .go xyz the start selects the commander by GUID, sends .gps and compares FloorZ; it re-sends .go xyz once at the floor height when the commander stands off the floor, and refuses the start with a plain reason when the floor is far from the target. Replies about another unit are ignored. Reviewed (Opus cold + Codex, no open finding); CI green.
Activity
Driven-run start: check the commander's z against .gps FloorZ (#292)
Start z check: select the commander before .gps and ignore replies ab…
Merge pull request #293 from pjerra/fix/start-commander-z-check
pjerra commentedon Oct 22, 2026
Fixed by PR #293 (merged into dev, b067735): after .go xyz the start selects the commander by GUID, sends .gps and compares FloorZ; it re-sends .go xyz once at the floor height when the commander stands off the floor, and refuses the start with a plain reason when the floor is far from the target. Replies about another unit are ignored. Reviewed (Opus cold + Codex, no open finding); CI green.