Skip to content

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

Closed

Description

@pjerra

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.

Activity

  1. pjerra commented on Oct 22, 2026

    @pjerra
    OwnerAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions