promotional bannermobile promotional banner

RankSwap

Automatically updates action bar spells to the highest learned rank when closing class trainers, with built-in Hunter ammo monitoring.
Back to Files

RankSwap 1.02

File nameRankSwap-1.02.zip
Uploaded
Nov 5, 2026
Downloads
127
Size
29.4 KB
Flavors
Forever
File ID
9449095
Type
R
Release
Supported game versions
  • 1.60.1

What's new

RankSwap Changelog

For World of Warcraft: Forever (client 1.60.1).

1.02 — 2026-11-04

Current version. Verified working on live Forever. Not yet uploaded to CurseForge.

Added

  • Trainer report on opening a class or profession trainer: lists ranks that are unlocked and not bought yet — higher ranks of spells already on your action bars, plus new spells available at that trainer. Run /rs trainer manually at any time while a trainer is open to see the list again after buying something.
  • Level-up reminder to visit a class trainer, since that is when new ranks usually unlock.
  • /rs trainerprobe — dumps the raw trainer services while a trainer is open, for diagnosing a trainer list that does not match what the addon reports.
  • /rs probe — dumps the raw spellbook returns (bank value, skill lines, slots 1–20 with and without the bank argument, item types, and IsSpellKnown / spellbook-slot results for each bar spell).
  • /rs debug — lists bar spells with no learned spellbook match or an outdated rank.
  • /rs fill — places every learned spell that is on no bar. Run once after installing if spells learned while the old version was broken are still missing from your bars.

Changed

  • Automatic scans after closing a trainer (and after learning a spell or leaving combat) are now quiet: they print nothing unless something was actually upgraded or placed, or a placement failed. No "Scanning..." and no "Scan complete." Manual /rs is still verbose.
  • Automatic trainer-open reports are silent when nothing is waiting at that trainer. Manual /rs trainer still says "no new ranks" so you know the check ran.
  • The scan's "maximum rank" message now says maximum learned rank, since a rank at a trainer does not count until you buy it.

Removed

  • Future-rank warnings. Spellbook FUTURESPELL entries and trainer services marked "unavailable" (not unlocked yet) are no longer reported — only ranks that are actually unlocked and not bought yet are shown, and only at a trainer.

Fixed

  • Profession icons reverting to a jewel icon when clicking RankSwap. Professions (Tailoring, Cooking, First Aid, and the other nine) have no Rank N, so the old map builder kept the last rank-0 spellbook entry for a name on a tie — and if that last entry was a different spellID with the same name but a different icon, the bar button was swapped to it. RankSwap now excludes all 12 Forever professions by name from the spellbook scan, from bar upgrades, from new-spell placement, and from trainer reports, and only a strictly higher rank now replaces an entry in the map. Profession buttons on your bars are left exactly as you set them. /rs debug now says "profession, skipped on purpose" for a profession bar spell, so you can check that the exclusion is working.
  • Rank swapping on live Forever. The launch version stopped ranking anything up and never placed newly learned spells. The rewrite now:
    • Scans the spellbook flat, keeping only learned SPELL entries, and picks the highest Rank N for each spell name — unlearned future ranks are never picked as "highest".
    • Places spells with C_SpellBook.PickupSpellBookItem using the exact spellbook slot, instead of C_Spell.PickupSpell, which silently does nothing for many spells on this client.
    • Only reports "Updated" when something was actually on the cursor after pickup. A failed pickup now reports "Could NOT place … (bar left unchanged)" instead of a fake success.
    • Places newly learned spells on the first empty main-bar slot (never form/stealth bonus bars 73–108). The first scan of a session is a baseline, so it does not flood your bars with your whole spellbook.
    • Listens for SPELLS_CHANGED and LEARNED_SPELL_IN_SKILL_LINE in addition to TRAINER_CLOSED, so spells learned outside a trainer close are picked up too.
    • Retries the spellbook scan leniently if the strict scan finds 0 learned spells, and a 0-count scan never becomes the session baseline.
    • Defers scans out of combat instead of failing silently.
    • Registers events with pcall, since an unknown event name throws on this client and can abort the whole file.

Notes

  • RankSwap never buys spells from a trainer — it only places ranks and spells you have already learned. It does not run on regular vendors or merchants, only on class and profession trainer windows. Weapon-skill services are filtered out of the new-spells list.
  • The hunter ammo checker/popup, minimap button, and addon compartment hooks are unchanged.

Before 1.02

The version that worked during the Forever beta and broke at launch on 2026-11-04: it matched spells by name with no rank or learned check, used C_Spell.PickupSpell without checking the cursor, only scanned bars that already had a spell on them, and only listened for TRAINER_CLOSED. All of the fixes above are in 1.02.

This mod has no additional files