Kroth Scolling Battle Text

Scrolling Combat Text addon with inspiration from miks scrolling battle text

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: 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.