mirror of
https://github.com/brues-code/pfUI.git
synced 2026-09-21 23:26:56 +00:00
1108746949
ClassicAPI carries notInterruptible on C_Spell.UnitCastingInfo (arg 8) and UnitChannelInfo (arg 7); both call sites already stepped over it positionally. The target, focus and nameplate bars now paint it. There is no shield art to hang on the icon -- this client ships three CastingBar textures (Border, Flash, Spark), and Blizzard's shield arrived in 3.x -- so the state is carried by color instead: the bar and the icon's border both take a new appearance.castbar.shieldcolor, which keeps it legible on a bar configured without an icon. One api helper paints both so the two modules cannot drift apart on it. Dusty rose (.8,.45,.45) rather than a steel grey. Grey is the retail convention, but pfUI's casting color is already a near-grey pale blue, so the two separated on brightness alone and washed out against the bar texture. The rose sits above failcolor in luminance and well below it in saturation, and the two are further told apart by motion: a failed cast flashes the bar full and fades, a shielded one fills normally and tints the icon border, which failcolor never touches. Not on the player's own bar. The flag is measured against the reader's own interrupts and silences, so on your own cast it answers a question nobody asked. Stamped once at cast start, with the rest of the cast data, rather than re-polled. ClassicAPI evaluates lazily from the caster's live auras but does not yet fire the 3.3.5 UNIT_SPELLCAST_INTERRUPTIBLE / _NOT_INTERRUPTIBLE change events, and polling per frame would undo the event-driven rework these bars just got -- so a caster who bubbles mid-cast keeps the bar it started with until the next one. Two limits worth knowing when it stays dark. The value is relative to your own kit -- with no interrupt and no silence known it is never reported, whatever the cast -- and a creature's built-in interrupt immunity lives in creature_template, which 1.12's SMSG_SPELL_START does not carry, so a boss with that immunity reads interruptible while your kick still fails on it.