promotional bannermobile promotional banner

SwingTime

Clean, customizable weapon swing timer bars for World of Warcraft Classic Era.
Back to Files
File nameSwingTime-v1.1.0-classic.zip
Uploader
raizennnraizennn
Uploaded
Jul 26, 2026
Downloads
22
Size
64.0 KB
Flavors
Classic
File ID
8514557
Type
R
Release
Supported game versions
  • 1.15.9

What's new

SwingTime

v1.1.0 (2026-07-26)

Full Changelog Previous Releases

  • Add on-screen text warnings (OUT OF RANGE / NOT ATTACKING)
    A centered, draggable text block that warns when the target is out of
    range or auto-attack isn't running. Each message is independently
    toggleable and styled (custom text, LSM font, size, outline, color);
    both stack vertically when they apply at once. Shown only with a live
    attackable target in combat, and revealed by /st unlock for positioning
    (which doubles as the style preview).
    Detection lives in a new CombatState.lua rather than SwingCore.lua, whose
    contract is to run an OnUpdate only while auto-shooting; a 10 Hz range
    poll is a different concern, and the timing engine is the least testable
    code here. It reads only public SwingCore state, so that file is
    untouched.
    Range detection is layered by confidence: IsActionInRange off the scanned
    action slots, then IsSpellInRange, then CheckInteractDistance for melee
    only. Ranged fails open, since a false OUT OF RANGE while shooting at
    30 yd is worse than no warning. A Range check option overrides the
    melee/ranged heuristic. Both states are debounced asymmetrically so the
    text can't strobe at the range boundary or between auto-shots.
    Action slots are matched by spell id via GetActionInfo, because
    IsAttackAction/IsAutoRepeatAction report whether that attack is running
    right now rather than what the action is, and so find nothing when
    scanned at login. Ranged state reconciles via IsAutoRepeatAction, not
    IsCurrentAction, which goes false during the reload gap.
    Event registration is wrapped in pcall: an event name retired between
    client builds would otherwise throw and leave the module half-defined.
    Core gates both modules behind an init check so a failure there can never
    take down the bars or the config window.
    Co-Authored-By: Claude Opus 5 noreply@anthropic.com
  • Revise DESCRIPTION.md for improved clarity
    Updated the features and getting started sections for clarity and added a help command.

This mod has no additional files