File Details
KBST-v2.1.3.zip
- R
- Mar 19, 2026
- 287.67 KB
- 1.2K
- 12.0.5
- Retail
File Name
KBST-v2.1.3.zip
Supported Versions
- 12.0.5
- feat: spell-cast correlated outgoing damage for Midnight
When CLEU is unavailable (WoW Midnight), use UNIT_SPELLCAST_SUCCEEDED
as a correlation gate for UNIT_COMBAT "target" events within a 400ms
window. This restores outgoing spell/ability damage display without
the false positives from showing all raid members' damage.
Auto-attacks are intentionally skipped on Midnight since they have
no cast event to correlate against. The CLEU-based attribution path
for Classic/Retail remains unchanged. - fix: ElvUI-safe styling with ownership cleanup (#15)
- fix: ElvUI-safe styling with ownership cleanup and Hide hook refactor
Skip all custom Strike Silver styling when ElvUI is detected to prevent
widget pool contamination. Replace ACD:Close cleanup hook with
hooksecurefunc on frame:Hide for reliable cleanup regardless of close
method. Remove Hide-blocking hack from OpenConfig that interfered with
normal window close behavior. - fix: replace garbled UTF-8 mojibake with ASCII arrow in test output
- fix: ElvUI-safe styling with ownership cleanup and Hide hook refactor
- fix: replace non-ASCII smart quotes with ASCII equivalents
UI/Config.lua contained Unicode left/right double quotes (U+201C/U+201D)
instead of ASCII double quotes in string literals. Lua does not recognize
smart quotes as string delimiters, causing parse errors that prevented
the options window from opening. Also fixed triple-encoded mojibake
arrow in ConfigTabs.lua test output and a smart apostrophe in Core.lua. - fix: reject unattributable UNIT_COMBAT target events when CLEU unavailable
UNIT_COMBAT "target" fires for ALL sources hitting the target (entire
raid/group). Without CLEU gating, damage from other players was being
processed as the player's own outgoing damage, causing inflated merge
totals and incorrect spell counts in raid content.
On Midnight (no CLEU), only register UNIT_COMBAT for "player" (incoming).
Defense-in-depth: handler also rejects "target" events without CLEU. - fix: first hit on target dropped when Combat Only mode enabled
UnitAffectingCombat("player") returns false for the combat-starting
hit because PLAYER_REGEN_DISABLED fires on the next frame. The
ShouldEmitNow gate was silently dropping the first damage/heal event.
Fix: ShouldEmitNow now accepts meta and allows probe events (real
combat hits from Outgoing/Incoming probes) through the combat-only
gate. Probe events are inherently combat actions — if we're receiving
damage/heal data, combat is happening regardless of the API flag. - fix: prevent AceGUI widget pool contamination of other addons
The real contamination vector was not the library version race but our
Config.lua directly modifying shared AceGUI widget instances. When our
config closed, styled widgets returned to the shared pool carrying our
custom backdrops, colors, and hooksecurefunc hooks — which then bled
into ElvUI and other addons that reused those pooled widgets.
Fix: ownership-flag pattern. All widgets we style get marked with
ksbtOwned=true on Open. All hooksecurefunc hooks (SelectTab tab
coloring, cooldown overlay visibility) now check ksbtOwned and no-op
if the widget isn't ours. On Close, ClearOwnership() recursively
clears ksbtOwned and tsbtStyled flags so pooled widgets are clean
and other addons' skinning can re-apply. - fix: comprehensive Ace3 lib hook preservation to prevent ElvUI skin contamination
PreLib/PostLib now snapshot and restore ALL function references on
AceGUI-3.0 and AceConfigDialog-3.0, not just RegisterAsWidget and
RegisterAsContainer. This prevents our higher-version bundled libs
from destroying hooksecurefunc hooks that ElvUI/AddOnSkins install
for frame skinning.