promotional bannermobile promotional banner

BliZzi Party Tools

Multi-feature M+ utility for your group. Track who can interrupt and who's on cooldown, see party defensives & offensives at a glance, share keystones with one click, and announce status to chat.

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 previous 1+1-only mixed-bucket handling in MatchAuraByClassification combined BoF with AW into an unresolvable candidate set whenever the Pala's UNIT_SPELLCAST_SUCCEEDED event 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+1 to 1+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 to candidates = {}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: _reassignAttribution disabled-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 _lastInst entry) 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) and UNIT_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 _pendingKickAt still nil (OnOwnKick hadn't observed SUCCEEDED yet), playerKickLikely read 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 _lastOwnKickTime field on BIT.Self. Set in OnOwnKick and never cleared by CorrelateSignals' own-success handler. Needed because the success correlation typically fires within ~16ms of SUCCEEDED and clears _pendingKickAt BEFORE the 50ms deferral timer fires — which would otherwise leave the deferred re-check seeing _pendingKickAt as nil and falling through to candidate-attribution. _lastOwnKickTime is the new source of truth for the deferred "player just kicked" check; _pendingKickAt still drives the failed-kick watchdog timer and the own-success correlation (both want the clear-on-success semantic)
  • Interrupt Tracker: CorrelateSignals bestCast 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 clean UNIT_SPELLCAST_SUCCEEDED on the own-player slot (own spellIDs are untainted), so this precedence is always safe — it never overrides a genuine party-only kick