Spell Track Helper

A comprehensive World of Warcraft addon for tracking debuffs, buffs, cooldowns, and absorb shields on your action bars.

File Details

SpellTrackHelper 1.2 MoP Classic

  • R
  • Apr 8, 2026
  • 73.19 KB
  • 15
  • 5.5.3
  • MoP Classic

File Name

SpellTrackHelper_1_2_MoP_Classic.zip

Supported Versions

  • 5.5.3

SpellTrackHelper — Version History


v1.2.0 — Classic Compatibility & Improvements

🆕 New File: Core/Compat.lua

A compatibility shim layer was added to polyfill all Retail-only APIs for WoW Classic. This file is loaded first in the TOC.

Retail API Classic Equivalent
C_Spell.GetSpellInfo(id) GetSpellInfo() → wrapped into a data object
C_Spell.IsSpellUsable(id) IsUsableSpell()
C_Spell.GetSpellCooldown(id) GetSpellCooldown() → returns a table
C_UnitAuras.GetAuraDataByIndex() UnitBuff() / UnitDebuff() → same data structure
UnitGetTotalAbsorbs() Returns 0 on Classic Era (no absorb mechanic)
issecretvalue() Always returns false

SpellTrackHelper.toc

  • Interface version updated from 120000 to 11504 (Classic Era 1.15.x)
  • Core\Compat.lua added as the first loaded file

Core/Constants.lua

  • ACTION_BAR_PREFIXES converted from a flat string list to { prefix, count } format
  • ElvUI action bar prefixes added:
    • ElvUI_Bar1ButtonElvUI_Bar10Button (10 bars × 12 buttons each)
    • ElvUI_PetBarButton
  • scanAfterCombat flag added to STH.State

Modules/EventHandler.lua

  • UNIT_ABSORB_AMOUNT_CHANGED event removed — not available in Classic; absorb changes are covered by UNIT_AURA
  • PLAYER_REGEN_DISABLED: Action bar scan on combat entry removed — touching protected frames during combat caused ADDON_ACTION_BLOCKED errors
  • PLAYER_REGEN_ENABLED: Now checks the scanAfterCombat flag and triggers any deferred scan on combat exit

Modules/ActionBarScanner.lua

  • Updated to use the new { prefix, count } format from ACTION_BAR_PREFIXES
  • RequestScan: Scan is now deferred during combat (scanAfterCombat = true) and executed after combat ends
  • Added ._state_action fallback support for ElvUI buttons

Modules/GlowEffects.lua

  • ActionButton_ShowOverlayGlow and ActionButton_HideOverlayGlow calls are now guarded with InCombatLockdown() — calling these functions during combat could trigger ADDON_ACTION_BLOCKED errors

Core/Init.lua

  • Removed the automatic OnAddonLoaded() call on file load — the ADDON_LOADED event in EventHandler already handles this, preventing double initialization

Modules/AbsorbTracker.lua

  • UnitGetTotalAbsorbs is now provided via Compat.lua
  • Returns 0 on Classic Era (no absorb mechanic); works natively on WotLK Classic and later

Utils/SlashCommands.lua

  • /sth debug command updated to use the new { prefix, count } format from ACTION_BAR_PREFIXES

UI/FontSettings.lua

  • Removed the UIDropDownMenu-based font selector entirely
  • Replaced with a custom scrollable popup (STH_FontPickerPopup):
    • Wrapped in UIPanelScrollFrameTemplate, scrollable via mouse wheel and scroll bar
    • Each font is previewed using its own typeface in the list
    • On open, the currently selected font is automatically scrolled into view
    • If there is insufficient screen space below the button, the popup opens upward
    • Automatic horizontal position correction to prevent overflow off the right edge of the screen
    • Clicking the same button again closes the popup; also closeable with ESC
    • All font pickers share a single popup instance (memory efficient)
  • Anchor dropdown was left unchanged (only 9 entries, no overflow issue)

Modules/BuffTracker.lua

  • Frame edge margin (margin) is now a fixed value based on staticSpace, independent of the buffTrackerSpacing user setting
  • The buffTrackerSpacing slider now only affects the spacing between icons
  • Affected functions: CreateAbsorbIcon, CreateBuffIcon, UpdateFrameSize

Modules/TargetBuffTracker.lua

  • Same margin/spacing fix applied as in BuffTracker
  • Affected functions: CreateBuffIcon, RebuildIcons, ShowEditModeFrame, CreatePlaceholderIcon