fix: resolve the interrupt from the summoned pet, not the last known id - #1139
Merged
EllesmereGaming merged 2 commits intoAug 2, 2026
Merged
Conversation
Demonology Warlocks saw the target cast bar tinted with the wrong interrupt state and a wrong kick-prediction tick: kicking with the Felguard changed nothing on screen, because the tracked spell was never the one being cast. RefreshKickAbility treated the player and pet spell books as one pool and kept the LAST entry that answered as known, with no break. Resolution therefore depended on the order of the class table rather than on what the player can actually cast. A Demonology Warlock's only interrupt is the Felguard's Axe Toss, but a later Warlock entry also answered and overwrote it, leaving the tint and the prediction reading the cooldown of a spell that never fires. The pet book now wins: a summoned demon's interrupt IS the interrupt, and that is unambiguous in a way "which id answered last" is not. Last-match is preserved within each bank, so no other class's resolution changes -- only the pet-over-player precedence is new. Also re-resolve on UNIT_PET for the player. Swapping demons swaps the interrupt, and now that resolution reads the pet book it has to re-run on that swap. SPELLS_CHANGED covers most cases but is not guaranteed for every summon, and a stale pick is invisible until the user kicks.
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.
Problem
Reported for Demonology Warlocks: the target cast bar shows the wrong interrupt state and the kick-prediction tick sits in the wrong place. Kicking with the Felguard changes nothing on screen -- the bar stays tinted "interrupt ready". Other Warlock specs were reported as fine.
Cause
RefreshKickAbilitytreated the player and pet spell books as one pool and kept the last entry that answered as known, with no break:Resolution therefore depended on the order of the class table rather than on what the player can actually cast. A Demonology Warlock's only interrupt is the Felguard's Axe Toss, but a later Warlock entry also answered and overwrote it, leaving
activeKickSpellpointing at a spell that never fires.Both reported symptoms follow from that single value:
ComputeCastBarTintand the kick-prediction tick each read the cooldown ofactiveKickSpell, so if it names the wrong spell the tint never leaves "ready" and the tick is placed off a cooldown that never moves.Fix
The pet book now wins. A summoned demon's interrupt is the interrupt, and which demon is out is unambiguous in a way "which id answered last" is not.
Last-match is preserved within each bank, so no other class's resolution changes -- only the pet-over-player precedence is new. Classes with no pet entries resolve exactly as before.
Also re-resolves on
UNIT_PETfor the player. Swapping demons swaps the interrupt, and now that resolution reads the pet book it has to re-run on that swap.SPELLS_CHANGEDcovers most cases but is not guaranteed for every summon, and a stale pick is invisible until the user kicks.A note on scope
A standalone harness over the resolution logic shows Affliction and Destruction flipping as well, but that rests on an assumption about which ids report as known in those states, and the reporter observed no problem there. That result is offered as evidence of the ordering hazard, not as a claim about those specs. The change is correct either way, since the pet book is authoritative for which demon is actually summoned.
Testing
luac -pclean. Verified in game on a Demonology Warlock: with a Felguard out, kicking with Axe Toss now flips the cast bar to the on-cooldown tint immediately, and the prediction tick lands where Axe Toss actually returns. Re-checked across a Felguard to Felhunter swap, which exercises theUNIT_PETre-resolve.Reviewers can see the state most clearly with Unit Frames > Target > CAST BAR > cog > Show Kick Ready Mid-Cast Bar enabled, and visibly distinct colours set for Interruptible and Interrupt on CD.