promotional bannermobile promotional banner

Super Swing Timer

Super Swing Timer tracks white-hit swing timers across main hand, off hand, and ranged attacks. It is tuned for Classic/TBC mechanics such as next-melee-attack abilities, dual-wield desync, parry haste, extra-attack suppression, haste rescaling, and more

File Details

SuperSwingTimerv0.1.2

  • R
  • Jun 1, 2026
  • 125.72 KB
  • 522
  • 2.5.5+1
  • Classic + 1

File Name

SuperSwingTimerv0.1.2.zip

Supported Versions

  • 2.5.5
  • 1.15.8

v0.1.2 - 2026-06-01

  • Shaman init crash fix (SetDrawLayer sublevel): Fixed a hard init-blocker on Anniversary 2.5.5 where SetDrawLayer("OVERLAY", 10) used sublevel 10, outside the valid -8 to 7 range. All four Shaman weave overlay calls (MH spark, OH spark, top/bottom triangle markers) now use sublevel 7, resolving the Texture:CSimpleRegion::SetDrawLayerScript() error that prevented Shaman bars from rendering at all.

  • Addon init error hardening: Wrapped the full OnAddonLoaded() body in pcall with geterrorhandler() so any init-time error surfaces via Bugsack/error frame instead of silently breaking the addon for the rest of the session.

  • Shaman fail-open OnUpdate chain fix: If SetupEnhShaman() fails, InitClassMods() now saves ns.OnUpdate before calling into Shaman setup and restores it on failure, preventing a partially-installed Shaman wrapper from corrupting bar rendering. Fail-open cleanup also clears ns.OnBarsCreated and ns.UpdateShamanWindfuryIcd.

  • Warrior Overpower glow: the Overpower proc cue now uses a pulsing border glow on the MH bar instead of a flat fill tint, making the proc easier to notice without obscuring the bar.

  • Naming consistency cleanup: normalized remaining C_Spell alias usage in the class-mod runtime so the code follows one spelling convention instead of mixing lowercase and uppercase variants.

  • Flurry icon replacement: both Warrior and Shaman Flurry displays are now 30x30 spell-icon frames (DIALOG strata) centered above all bars, replacing the old ⚡N text badges. Each icon shows the Flurry spell texture, remaining stack count (gold, bottom-right), and a countdown timer (gray, centered below, from GetTimePreciseSec). Only renders while the Flurry buff is active. The shared GetFlurryBuffInfo() scan correctly dispatches between TBC Anniversary and older Classic UnitBuff payload shapes (spellId at position 10 vs 11, expirationTime at position 6 vs 7), with explicit UnitBuff nil guard.

  • Weave cast-motion hardening: weave indicator motion now prefers live UnitCastingInfo / UnitChannelInfo timestamps for the current player cast, then falls back to haste-adjusted spell time only when live timestamps are unavailable. Spark/marker overlays were moved onto a dedicated higher overlay frame so the red moving spark remains visible above the bar stack.

  • Flame Shock end-warning glow: the Shaman Flame Shock helper now adds a self-resetting orange border glow during the last 4 seconds of the aura so the user gets a clear recast warning without affecting the countdown logic.

  • Slider track hardening (all sliders): replaced row BACKGROUND-only slider track rendering with a dedicated per-row track layer frame and ARTWORK textures anchored to each slider, with explicit frame-level ordering relative to OptionsSliderTemplate. This makes slider tracks visible across Classic/TBC template variance.

  • Texture browser z-order fix: texture browser popup now forces FULLSCREEN_DIALOG strata + top-level frame behavior and reapplies top frame-level/raise on show, preventing the picker from rendering behind the main config UI.

  • Shaman lightning tracker gap slider: added a new Appearance slider (Lightning Tracker Gap) for Shamans, wired through defaults + migration (v48), live runtime updates, config refresh, and reset-defaults.

  • Slider track visibility fix: slider rows now render a dedicated centered track texture anchored to the actual slider widget so track lines remain visible across template/layout variance.

  • Shaman weave visual behavior update: active weave casts now force a red moving spark (instead of icon-swapping the spark), and upper/lower weave indicators move with cast progress toward bar end while casting.

  • Spellcast payload safety fix: hardened spell-event token resolution so cast GUID payloads are no longer treated as spell identifiers when spellID is absent, preventing rare spellcast routing mismatches on UNIT_SPELLCAST_* fallbacks.

  • Shaman weave rank selection: weave family catalog rebuild now resolves the highest known spell rank per enabled family (with Classic-safe known-spell API fallbacks) so leveling characters track their real learned ranks instead of defaulting toward rank-1 IDs.

  • Shaman shield tracker spacing polish: Lightning/Water Shield charge tracker left offset now uses an explicit spacing constant for cleaner separation from the MH/OH stack.

  • Shaman weave reliability: UpdateWeaveVisuals() now attempts an on-demand OnBarsCreated() recovery before bailing when weave textures are missing, so weave markers/spark can recover if bar overlays are rebuilt or late-created.

  • Shaman Flame Shock bar: added a new thin 6px status bar above MH that tracks the remaining duration of your own Flame Shock on the current target (player-filtered debuff scan, target-change refresh, target aura refresh, and shared visibility refresh integration).

  • Shaman constants: added rank-safe Flame Shock spell-ID lookup table for Classic/TBC (8050, 8052, 8053, 10447, 10448, 29228, 25457) plus localized fallback name resolution.

  • Shaman Lightning Shield reliability: fixed the shield tracker aura wiring to read spell IDs from the shared GetHelpfulAuraData() helper correctly, added immediate UNIT_AURA player refresh hooks, and removed an OnBarsCreated() early-return edge case that could skip creating the shield tracker container if weave textures already existed.

  • Unlocked camera behavior: while bars are unlocked, right-click over bars now explicitly forwards to MouselookStart() / MouselookStop() so camera look still works; left-click drag behavior is unchanged.

  • Shaman helper UI wiring: Flame Shock helper now has a full DB-backed Quick Controls checkbox (Flame Shock Bar) with runtime hide/show gating, migration defaults, and reset-defaults support.

  • Shaman checkbox polish: renamed the existing Lightning Shield quick toggle label to Lightning Shield Tracker for clearer intent while keeping existing functionality and color swatch behavior.

  • Shaman tracker sizing polish: Lightning Shield charge tracker now matches MH height in single-bar mode and expands to the full MH+OH stack height (including the inter-bar gap) when OH is visible.

  • Shaman shield detection hardening: Lightning/Water shield tracker matching now uses both spell IDs and normalized aura-name fallback tables so tracker updates still work when Classic/TBC aura payloads omit or vary spell IDs.

  • Water/Mana shield compatibility: expanded Water Shield ID coverage (including rank IDs and observed alternate aura mappings), plus alias-safe name matching (Water Shield / Mana Shield) to avoid no-show edge cases from client/build variance.

  • Druid de-bloat cleanup: removed stale post-streamline Druid badge/timer defaults and migration writes (showDruidTigerFuryBadge, showDruidFaerieFireBadge, showDruidMangleTimer, showDruidRipTracker, plus associated Mangle/Rip color seeding) so stripped features are no longer reintroduced into SavedVariables on fresh or old profiles.

  • Right-click camera reliability (unlocked bars): switched unlocked-bar right-click handling to world-style TurnOrActionStart() / TurnOrActionStop() with MouselookStart() / MouselookStop() fallback and per-frame active-state guards, so right-click camera movement works while bars remain left-draggable.

  • Combat camera safety guard: bars now force EnableMouse(false) during combat regardless of lock state, so swing frames cannot intercept mouse input and disrupt camera movement mid-fight. Left-drag repositioning remains available out of combat when bars are unlocked.

  • Out-of-combat right-click pass-through: draggable status bars now opt into SetPropagateMouseClicks(true) when available, so right-click camera/world input can pass through the bars naturally while preserving left-click drag handling when unlocked.

  • Right-click fallback bugfix: fixed propagate-click capability detection in bar handlers by tracking explicit support (sstHasPropagateMouseClicks) instead of method-presence checks on frame scripts, restoring correct fallback camera behavior on clients without click propagation.

  • Input fallback hardening: upgraded right-click camera fallback path with safe guarded wrappers (pcall around turn/mouselook start/stop), visibility-aware mouse gating (IsShown + alpha), and auto-cleanup of active camera fallback state when bars are mouse-disabled, reducing edge-case input drift.

  • CLEU fallback guard: hardened ns.HandleCLEU() entrypoint with API-availability and payload-shape checks so malformed or unavailable CombatLogGetCurrentEventInfo states cannot hard-fail runtime dispatch.

  • Migration ladder refactor: converted MigrateDB() from a long sequential if (version < X) ladder into an ordered table-driven migration pipeline, preserving behavior while making future migration edits safer and easier to audit.

v0.1.1 - 2026-05-30

  • Shaman Lightning Shield tracker: 3 thin vertical rectangles (5px, 1px gap) to the left of the MH bar that fill with class color per active shield charge. Water Shield forces light blue. Configurable toggle + color swatch in Quick Controls.
  • Shaman weave dual-wield support: bottom triangle anchors below OH bar when dual-wielding. OH spark mirrors MH spark during casts.
  • Paladin class colors fix: per-seal MH bar color and label now skip when "Use Class Colors" is enabled, preserving the class color on the bar.
  • Rogue Slice and Dice height: wired GetRogueSliceAndDiceBarHeight into ApplyBarSize so SnD bar respects the proper derived height formula.
  • Misc: v0.1.1 version bump.