Repository navigation
raid-walk: --prepull-aura applies role buff lists once before each boss pull - #455
Merged
Merged
Conversation
…world buffs on at each boss row's pre-pull rest A walk that tests preparation (walk 100: tier 1 gear and full consumables) has to carry the same auras a real raid enters with. --prepull-aura role=<tank|melee|ranged|caster|healer|all>:<id,id,...|preset> is repeatable, one value per role; it fires at the pre-pull gate the --gm-instance-data boss-row resend already uses (an out-of-combat rest or gather of the step before a boss row, no later pull line of the page, no party bot in combat), once per boss row per walk, under a run pause that is always resumed. A wipe recovery clears the fired rows, so the boss row the recovery retries is buffed again (a death stripped the auras). The auras go on with the dungeon_run buffs kernel: internal/dungeon now exposes AuraPort, AuraCfg, ApplyAuras and AurasMissing, and both the dungeon Driver and raid-walk's port use them, so the first-aura check, the single retry and the 'landed on the caster is a miss' rule have one implementation. A new gm_aura RPC selects the player by guid, waits for the server to show that selection and sends '.aura <id>' only while it stands; it is gated like gm_kill (test servers only) and refuses a non-player guid or spell id 0. prepull-auras.json records the flag, the merged role lists, the boss rows fired and every bot's ids sent, seen and missing; a bot missing more than 2 fails the walk (exit 18). The mt/ot batches are tank and every other bot takes its class's role. 'world' is the new world-raid preset (the classic world buffs without Warchief's Blessing, which is Horde-only); dungeons/prepull/zg-preraid.json holds the ZG walk's sample lists, every id checked in the core's spell_template.
…isses A refused, unacknowledged or unconfirmed run pause now sends no aura: the fresh run status must show this plan paused on the rest step, party combat is re-read right before the first .aura and before every later send, and a pull mid-batch stops the batch and fails the walk. A boss row that becomes current without a verified fire fails the walk, and a row is recorded as done only after the verified application. Every requested aura must verify by default. --prepull-aura-tolerance N is the explicit opt-in for a per-bot miss bound; prepull-auras.json always carries the missing list, and a tolerated miss is logged as such instead of claiming every bot carries its list.
…mpts The combat recheck re-reads every living party member, not only the members --prepull-aura gives a list: a member the flag does not cover can pull too. A failed or unreadable unit read now counts as combat, so the batch stops and the walk fails instead of sending auras on a party it cannot show is out of combat. prepull-auras.json no longer records a failed fire as a boss row. boss_rows holds only the rows whose fire verified within the tolerance; a failed attempt goes to attempts with its boss row and reason, and the file is written on every fire so the evidence is always on disk. Tests cover an in-combat member without a list, an unreadable unit and a failed attempt; each fails on the previous code.
staticcheck S1009: len() of a nil slice is zero, so the nil test before the three-missing check adds nothing.
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.
What
raid-walk --prepull-aura <file>applies a per-role list of GM.aurabuffs to the walk's own bots once per boss row, at the existing pre-pull point. The lists cover flasks, elixirs, food and world buffs. This lets a walk test a boss with the full preparation a player would bring, as the TortoiseBots maintainer asked for ZG.Safety
run pauseand a freshrun status: paused, at the step before the boss row, on the same plan..aurait re-reads every living party member. Combat, a failed read or a failed pause stops it fail-closed, and no aura is sent.--prepull-aura-tolerance N(default 0).prepull-auras.jsonkeeps verified boss rows apart from failed attempts.Known limit: combat that starts during the final read-back, after every aura is sent, still records the row as verified. Nothing is applied in combat.
Reuse
The dungeon driver's aura code (
ApplyAuras,AurasMissing) is shared, not copied. The sample list isdungeons/prepull/zg-preraid.json.Tests
13 walk tests cover the fail-closed cases: combat mid-batch, an unlisted member in combat, an unreadable unit, a failed pause, a failed resume.
Review
Codex adversarial: 3 rounds, with the last point accepted as the limit above. Cold review: SHIP.