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 ROTATION — cooldown 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 ROTATION — skip 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 ROTATION — proc 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 ROTATION — resource 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.)

