promotional bannermobile promotional banner

Synaptic - Rotation Assistant

Lightweight rotation assistant inspired by Hekili, built on WoW’s Assisted Combat system to provide clear, real-time ability suggestions. Enhance it with priority spells, cooldown tracking, and optional custom rotations you can create and share.

File Details

Synaptic - Rotation Assistant 0.2.1

  • R
  • Mar 20, 2026
  • 109.06 KB
  • 328
  • 12.0.5
  • Retail

File Name

RotationHelper.zip

Supported Versions

  • 12.0.5

PRIORITY POTIONS — whitelist system
  - Replaced the automatic action-bar scan (classID/subclassID filter) with a
    user-defined potion whitelist, modelled on the existing priority spells list.
  - Added a Priority Potions section to Options Panel Tab 1 with a text input,
    add (+) button, remove (x) per-entry, and a browse (...) button.
  - Browse button opens a bag picker popup listing potions that are both in your
    bags and placed on an action bar — items not on any action bar are excluded.
  - Potion list is stored per-spec alongside priority spells; switching specs
    swaps the list automatically. Existing saved profiles are back-filled safely.
  - Fixed nil crash (bad argument #1 to 'ipairs') on characters whose saved data
    pre-dated the priorityPotions field.

COOLDOWN STRIP
  - Trinket cooldown strip now sources potions from the whitelist instead of
    scanning action bars, matching the new priority potion logic.
  - Priority spells now always appear in the strip whenever the list is non-empty,
    regardless of whether the "Spells" priority toggle is enabled.

HIDE OUT OF COMBAT — mouse passthrough
  - When the main frame fades out (hideOutOfCombat enabled), mouse interaction is
    now disabled immediately rather than at the end of the fade, so the invisible
    frame no longer intercepts clicks on the game world.

MANUAL ROTATIONcooldown awareness
  - Manual rotation now correctly detects spells on real cooldown and shows them
    desaturated with a cooldown sweep, rather than glowing as if castable.
  - Fixed: unticking a priority toggle (e.g. Potions) while in manual mode now
    immediately clears the priority suggestion from the display.
  - Fixed: trinkets, potions, and priority spells now update correctly in the
    cooldown strip during manual rotation.

MANUAL ROTATIONskip loop (taint-safe rewrite)
  - Replaced all C_Spell.GetSpellCooldown comparisons in the rotation skip logic.
    In Midnight, these return "secret numbers" whose comparisons throw even inside
    pcall, causing spells on long cooldowns to never be skipped.
  - New approach: cooldown end times are tracked as plain GetTime() timestamps
    (manualCooldownEnd table), populated from:
      * GetSpellBaseCooldown() when a spell is cast during combat (taint-free
        static data);
      * C_Spell.GetSpellCooldown() at profile load and on PLAYER_REGEN_ENABLED
        (outside combat, giving accurate talent-modified durations).
  - After combat ends the table is re-seeded from the live API, replacing the
    base-CD estimates with exact values for the next fight.

MANUAL ROTATION two-phase step selection
  - The rotation now uses a two-phase search each tick:
      Phase 1 — find the next step that is both off-cooldown AND has sufficient
                resources; show it with a glow (ready to cast).
      Phase 2 — if no fully-castable step exists, find the next off-CD step and
                show it desaturated (waiting for resources).
      Fallback — if every step is on cooldown, hold the current position and
                display the CD sweep.
  - This replaces the previous behaviour where a resource-locked step would block
    display of a later step that was fully castable.
  - Edge case handled: if ALL steps are either on cooldown or resource-locked, the
    display holds on the current step desaturated rather than cycling indefinitely.

MANUAL ROTATIONproc spell transforms
  - Spells that transform via procs (e.g. Festering Strike → Festering Scythe,
    Sinister Strike → Ambush) are now handled correctly:
      * Display: the proc'd spell icon and name are shown while the override is
        active; reverts automatically when the proc expires.
      * Advancement: casting either the base spell or its proc override counts as
        completing that rotation step.
      * Validation: the profile is not paused when a proc override temporarily
        replaces the base spell on the action bar.

MANUAL ROTATIONresource skip fix
  - Removed insufficient-resource checks from the cooldown-skip predicate; the
    rotation no longer skips steps purely because resources are temporarily low
    when no other step is available. (Superseded by the two-phase selection above.)