Skip to content

Boss tactics: interrupt rows were verified with the wrong rule (PreventionType = silence and flag 0x02 are required), audit all rows; make the SQL test read core data #246

Open

Description

@pjerra

Found 2026-10-20 while fixing the Zul'Farrak rows: the core's interrupt effect (tortoise-wow src/game/Spells/SpellEffects.cpp ~3375-3400, EffectInterruptCast) only stops a cast when PreventionType == SPELL_PREVENTION_TYPE_SILENCE and, for a generic cast, InterruptFlags & SPELL_INTERRUPT_FLAG_DAMAGE (0x02) (channels: ChannelInterruptFlags & CHANNEL_FLAG_INTERRUPT). Phases 1a (Sagiroth/TortoiseBots PR 1093), 1b (PR 1098) and the Zul'Farrak rows were reviewed with castingTimeIndex > 1 and interruptFlags having 0x04 (the 15/31 rule), never PreventionType, so some rows may be uninterruptible. Flags 15/31 include 0x02, flags 13/9/8 do not.
Work: (1) audit worker 'audit' writes ~/TortoiseBots-audit/INTERRUPT-AUDIT.txt (effective rows per boss, WRONG/OK/UNVERIFIABLE, plus how FindBossInterrupt in BossTacticsActions.cpp behaves for an uninterruptible row); (2) correction migration(s) removing WRONG rows on feat/dungeon-self-clear and on the ZF branch data/987-zf-boss-tactics before it merges; (3) update docs/guides/boss-tactics.md and the brief rules (the interrupt rule is: castingTimeIndex > 1 AND preventionType silence AND interruptFlags & 0x02, non-channel); (4) tools/test_boss_tactics_sql.py checks shape and keys only: add a core-data check mode (reads a core checkout path from an env var, skipped when absent) for spell id exists, castingTimeIndex, flags, preventionType, boss entry on the map, delete scope.

Activity

  1. pjerra commented on Oct 20, 2026

    @pjerra
    OwnerAuthor

    Audit done (~/TortoiseBots-audit/INTERRUPT-AUDIT.txt): 29 effective rows on feat/dungeon-self-clear, 27 OK, 2 WRONG (PreventionType 0): Tansha 3143 (map 822) and Shalk's add 36732 (map 820). Removed by Sagiroth/TortoiseBots Sagiroth/TortoiseBots#1117 (Codex approve), docs rule corrected. Zul'Farrak rows (7) all OK. Module behaviour: a row for an uninterruptible spell wastes the kick and pre-empts lower-priority actions while that cast is current and the kick is ready (not a permanent block: the kick cooldown frees it). Still open: the SQL test reads no core data (add the core-data check mode), and spells that qualify under the real rule but have no row (filler bolts 15801, 12739, 15537 are deliberate).

  2. added
    bugSomething isn't working
    plan-datadungeon/raid plans and exports
    dungeongenplan lints and generators
    on Nov 2, 2026
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

    bugSomething isn't workingdungeongenplan lints and generatorsplan-datadungeon/raid plans and exports

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions