Repository navigation
raid-walk: re-place hires frozen on a navmesh island at the placement point - #439
Merged
Merged
Conversation
… point Cause: the spread=5 place drops seats onto a disconnected navmesh island beside the ZG Jin'do place point, where every move fails with NOPATH. Rule: under 2 yd moved in 10 s, inside spread+6 yd of the point, over 35 yd from the MT, MT over 15 yd from the point, judged on the poll's time. Action: .go xyz onto the MT at z+2, landing confirmed, then .summon; at most 2 re-places per hire, with failure caps. Re-armed on every placement move. --no-place-unfreeze turns it off.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
After a raid-walk
--place, two seats in every Zul'Gurub Jin'do raid stood frozen at the placement point for the whole first fight. This happened in walks 54 and 55, in 20 of 20 raids. Fights with the pair frozen won 22 % of the time; fights without it won 50-71 %.Cause. A live repro on a test server found it. The
spread=5place drops those seats onto a small navmesh island next to the step-516 place point, and that island is disconnected from the rest of the mesh. From there every move fails with NOPATH (reach spell/reach meleereturndispatch-short path=0x8). An offlinepath-checkconfirms there is no path.Change: the unfreeze check. From 15 s to 120 s after the first watch sample following a place, the walk judges every hire. The judging uses the poll's own time, with a freshness limit of 15 s. A hire counts as frozen when all of these hold:
The 35 yd figure comes from the repro: the frozen pair was 58-60 yd from the MT's first fight.
Re-place. The commander goes
.go xyzonto the MT at z+2. The walk waits for the landing to be confirmed within 5 yd, then.summons the hire. Limits:.gofailures in a row;Every placement move re-arms the check (retry, retreat, reuse or bind gather), and the old arm's summary line is written first.
Logs.
placement: re-placed <bot> (frozen at x,y,z for <s>s), failure lines, and a closingplacement: frozen=<n> re-placed=<n>.Flag. On by default for
--place; turn it off with--no-place-unfreeze.Known limits:
.summoncounts as done when the GM line is sent. The walk does not wait for the hire's new position. The walk report's FROZEN-AT-PLACE flag catches a hire that stayed frozen.Tests. Table tests for the frozen rule, plus driver tests through the real
pollOncewith frames 6-13 s old. They cover:.gofailures;Mutations on each rule were caught.
vm-test tapasses in full, and the targeted-racerun (Unfreeze|FrozenBots|TestPlace|TestParse) passes.Reviews. Codex adversarial plus a cold review, three rounds.