File Details
BliZzi_Interrupts_v4.0.6
- R
- May 24, 2026
- 503.36 KB
- 30.1K
- 12.0.7+1
- Retail
File Name
BliZzi_Interrupts_v4.0.6.zip
Supported Versions
- 12.0.7
- 12.0.5
BliZzi Party Tools 4.0.6
- Party CDs: Pala Blessing of Freedom flag-twin pool reform. BoF (target-cast) shares the runtime
--I-flag-key with same-class Avenging Wrath (self-cast, currently disabled because its runtime aura cannot be cleanly disambiguated from BoF / DP / DS in the live API). The previous1+1-only mixed-bucket handling inMatchAuraByClassificationcombined BoF with AW into an unresolvable candidate set whenever the Pala'sUNIT_SPELLCAST_SUCCEEDEDevent failed to deliver (live-observed even in open world — Blizzard's per-unit cast event delivery has gotten noticeably worse in 12.x: party casts arrive only ~50% reliably, self-buff casts even less). Result: BoF never produced a glow when the Pala cast it, no matter the target - Party CDs: mixed-bucket branch extended from
1+1to1+N. IMPORTANT-flagged auras with one target-cast candidate plus any number of self-cast candidates (each spec-narrowed against the unit) now combine into a single candidate pool that the downstream narrowers can resolve. Previously the branch fell through tocandidates = {}→return nil, so a Ret Pala's{BoF target, AW self-disabled}set (post-spec narrowing — AC dropped by Holy-only spec, Sentinel dropped by Prot-only spec) gave up before any narrower could try - Party CDs: new eager non-disabled attribution with duration-probe verification. When the candidate pool collapses to exactly one non-disabled spell plus disabled flag-twins, the classifier eagerly attributes to the non-disabled candidate and queues a duration probe against the aura's
auraInstanceID. On aura-removal the observed buff lifetime confirms the attribution (BoF.dur=8s match → keep BoF) or swaps to the disabled twin (observed ≈ AW.dur=20s → clear the BoF tentative without committing AW). Trade-off: when a disabled twin silently fires without its cast event, a transient wrong-glow shows on the non-disabled twin for up to the twin's nominal duration before the probe swap clears it. Strictly better than the prior "BoF never glows" outcome — the disabled state itself was a workaround precisely BECAUSE the flag-twin produces misclassification, so a brief transient on the actual twin is no worse than the original tracking-confusion the disable was meant to prevent - Party CDs:
_reassignAttributiondisabled-newDef guard. When the duration-probe swap target is a disabled def, the helper now stops at the tear-down step (clears the tentative icon/CD state and the old_lastInstentry) and returns without committing a CD or icon state for the disabled def. Without this guard the disabled spell would receive a "just cast" CD bookkeeping entry even though we deliberately don't want it tracked - Interrupt Tracker: fixed phantom CD-tick on nearby off-CD party members during the local player's own kicks. Most visibly the "I press Disrupt as Demon Hunter, the Retri Paladin standing next to me sees their Rebuke CD tick down too" scenario. Root cause: an event-dispatch race between Blizzard's
UNIT_SPELLCAST_INTERRUPTED(on the mob) andUNIT_SPELLCAST_SUCCEEDED(on the player) for the same kick. When INTERRUPTED was dispatched first on a client tick, the inline candidate-attribution loop ran with_pendingKickAtstillnil(OnOwnKick hadn't observed SUCCEEDED yet),playerKickLikelyread false, and a nearby off-CD party member was picked as the kicker - Interrupt Tracker: candidate-attribution loop now defers 50ms via C_Timer. The window is large enough to swallow 1–3 frames of event-dispatch skew and tight enough that legitimate party-kick credits aren't perceptibly delayed. The mob's GUID is snapshotted before the deferral so the post-delay
UnitIsUnit("playertarget", unit)compare still resolves to the same unit even if the nameplate token was recycled in the window - Interrupt Tracker: new persistent
_lastOwnKickTimefield onBIT.Self. Set inOnOwnKickand never cleared byCorrelateSignals' own-success handler. Needed because the success correlation typically fires within ~16ms of SUCCEEDED and clears_pendingKickAtBEFORE the 50ms deferral timer fires — which would otherwise leave the deferred re-check seeing_pendingKickAtas nil and falling through to candidate-attribution._lastOwnKickTimeis the new source of truth for the deferred "player just kicked" check;_pendingKickAtstill drives the failed-kick watchdog timer and the own-success correlation (both want the clear-on-success semantic) - Interrupt Tracker:
CorrelateSignalsbestCast picker now player-precedence. When the local player's clean cast signal is anywhere in the 55ms match window, it wins over any party-member cast that happened to be time-closer to the interrupt event. Defends against the tainted-spellID fallback (which pushes a fake "cast" signal for any tainted party-member spell while their interrupt is off-CD) wrongly winning the time-closest tie-break when the player and a party member coincidentally cast within the same window. The player's cast signal only enters the tape from a cleanUNIT_SPELLCAST_SUCCEEDEDon the own-player slot (own spellIDs are untainted), so this precedence is always safe — it never overrides a genuine party-only kick

