Releases: RahvinCode/Gearswap
Release list
Rahvin GS 2.1.0
Patch Notes
Release-by-release detail for Rahvin GearSwap, and for the Mirdain-era releases it grew from.
The README describes what the engine does now. This file records
what changed and when, newest first, and keeps every release. Check your running
version in game with //gs c version.
Each release is broken into the same four headings, so you can scan for what matters:
- Notices — changes that need something from you before they take effect.
- New and Changed Features — what the release adds or does differently.
- Optimizations — the same behavior, cheaper.
- Bug Fixes — things that now work as intended.
A heading is omitted when a release has nothing under it.
Credits. Mirdain-Include was created by Mirdain; version 1.5.12 is the original
and the base this suite was forked from. Everything from 1.6.0 forward — engine
revisions and sample job files alike — was conceived and programmed by Rahvin. From
2.0 the suite is released as Rahvin GearSwap, continuing the same sequence.
| Version | Summary |
|---|---|
| 2.1 | Buff sets worn while a buff is up, day and weather gear chosen by what it adds, weapons kept in hand through every weaponskill, your own mode keys, one settings file per character |
| 2.0 | Rahvin GearSwap: new name, new folder; four display styles and the slot rig; the weapon lock on F10; the disable and strip holds; the capacity cape and Dynamis neck locks; a much larger gear library |
The releases below shipped under the suite's former name, Mirdain Gearswap Enhanced by
Rahvin; 2.0 above follows 1.7.3 directly.
| Version | Summary |
|---|---|
| 1.7.3 | Sets that were equipping nothing now equip; two commands to hold an item in a slot; Aftermath gear layers correctly; every sample job file refreshed |
| 1.7.2 | Crash fixes for subtarget macros; reporting reaches pet actions and songs; weapon-mode and auto-buff costs cut |
| 1.7.1 | Per-action gear reporting and warning throttle; status box redesign; the HP-priority gear library |
| 1.7.0 | Thrown-item job abilities; cancel and override for item use; reload recovery; gs c enchinfo and gs c hoxneinfo |
| 1.6.6 | Enchanted item engine rebuilt around live cooldowns; Hoxne split into two on states |
| 1.6.5 | Status box rebuild; mode arguments validated; SpellReceived reduced to OFF/ON |
| 1.6.4 | 196 blue magic spells classified; item-search bag list corrected |
| 1.6.0 – 1.6.3 | The initial enhancement work over Mirdain 1.5.x |
| 1.5.12 | Mirdain's original |
2.1
2.1 puts on gear for a buff with no code in your job file, chooses day, weather and distance
gear by what each piece adds, and keeps your weapons in hand through every weaponskill. You
can choose your own mode keys, and each character keeps its own settings file. Most job files
written for 2.0 need no edits. The Notices below cover the ones that do.
Notices
-
Each character has its own settings file. The settings file holds your box positions,
display style, chat toggles and keys. It lives in
Windower4/addons/GearSwap/data/<CharacterName>/settings.xml, the same folder GearSwap
checks for that character's own job files. The first time each character loads 2.1, the
engine copies that character's settings fromdata/settings.xmlinto the new file, and
Windower confirms it once withNew file: data/<CharacterName>/settings.xml. The engine
never writes todata/settings.xml. Edit the character's own file from now on, and only
with GearSwap unloaded (//lua unload gearswap), because every save rewrites the whole
file. To start a character over from defaults, delete its file. Whiledata/settings.xml
is still there, the next load copies it again, so delete that one too once every character
has a file of its own. -
A weaponskill keeps your weapons in hand. Swapping main or sub resets your TP, and so
does swapping a ranged weapon, so a weaponskill that swapped one would fail. Main, sub and
range stay exactly as they are for the whole weaponskill, whatever your weaponskill sets or
sets.Idlename. A Bard's instrument and a Geomancer's handbell still swap. With
gs c warnon, a set that names one of those slots is pointed out once a minute:[Savage Blade] sets.Idle names main, sub; a weaponskill keeps the weapons in hand. Silencing warnings for 60s.Take the slot out of the set it names, since weapons belong in
sets.Weapons. Under the
weapon lock the slots stay put without the line. -
A weaponskill mode set names only what the mode changes. In any offense mode but
TP,
a weaponskill wearssets.WS, then the set named for the weaponskill, then the mode's set,
such assets.WS.ACC. The mode's set goes on last, so one built from the whole base set,
sets.WS.ACC = set_combine(sets.WS, { ... }), puts every base piece back over your named
weaponskill's gear. To check your own file, look for a mode set written as
set_combine(sets.WS, ...)orset_combine(sets.WS.RA, ...). To fix it, keep only the
pieces the mode changes:sets.WS.ACC = { ... }. A weaponskill's own mode set, such as
sets.WS['Savage Blade'].ACC, takes the place ofsets.WS.ACCfor that weaponskill. -
A table named after a buff is a buff set. Inside
sets.OffenseMode,sets.Idle,
sets.WS,sets.Midcast,sets.Helix,sets.Storms, a Geomancy spell's own set,
sets.Geomancy.Indi,sets.Geomancy.Geo,sets.Diffusion,sets.Readyand the sets the
engine wears from them, a table whose name is a buff's name is worn automatically while that
buff is on you. New and Changed Features lists exactly where. If your own
file keeps a table such assets.Idle.Refreshfor some other purpose, rename it, or it goes
on every time Refresh does. Spell sets insidesets.Midcast, such as
sets.Midcast.Refresh, stay spell sets. Withgs c warnon, a name inside a mode set such
assets.OffenseMode.TPthat is neither a gear slot nor a buff is pointed out as your file
loads:sets.OffenseMode.TP.Footwrk is not a buff name -
sets.Weapons['Light Bonus']is worn exactly as you wrote it. On a Cure, Cura or
Curaga cast on Lightsday or in Light weather, a Light Bonus set with gear in it goes on
whole, whether or not you carry Chatoyant Staff. Its own main and sub go on too, unless the
weapon lock holds them. If you leave the set empty, the engine puts Chatoyant Staff in main
when you carry one. If you declared this set, check what it names. -
Five commands save as they change.
gs c display,gs c debug,gs c warn,
gs c infoandgs c gearreportingwrite your choice to the settings file, as
gs c displaymodeandgs c displaystyledo. A channel you turn off for one fight stays
off after a reload until you turn it back on. -
The engine handles four new commands and more arguments.
gs c help,gs c keybind,
gs c displayposandgs c displaycellsare engine commands, anddisplay,
displaymode,debug,warn,infoandgearreportingtakeonoroff. If your job
file has its owngs ccommand by one of these names, rename yours. A mistyped argument to
any of these, or tonaked,weaponsonly,abysseaproc,capacity,aptitude,
mecisto,dynamisrp,jubilee,disableorenable, is answered by the engine and
never reaches your job file.gs c helpreplies with the list of groups, and
gs c keybindwith the modes or the keys it accepts. The rest reply with their usage line
whilegs c warnis on. -
The engine supplies no
roundfunction. A job file that callsroundstops with a
Lua error naming it,attempt to call global 'round' (a nil value), until it carries a
copy of its own.
If you copy a 2.1 sample file:
-
Three samples offer one more offense mode. DRK and RDM add
MEVA, and PUP addsPDT.
If you copy one of these samples, the offense mode key (F12 unless you changed it) and
gs c offensemodehave one more stop in their cycle. Take the mode out of
state.OffenseMode:options(...)if you do not want it. -
Six sample files wear their buff gear through buff sets. A job file you keep works
unchanged. If you copy one of these samples, its buff gear sits at the new names below and
needs no code of its own:Sample In the 2.0 sample In the 2.1 sample MNK sets.Impetussets.OffenseMode.Impetus, also worn on weaponskills assets.WS.ImpetusMNK sets.Foot_Worksets.OffenseMode.FootworkMNK sets.Boostsets.OffenseMode.Boost, alsosets.Idle.Boostandsets.WS.BoostPLD sets.Coversets.Idle.Coverandsets.OffenseMode.CoverPLD sets.Rampartsets.Midcast.Rampart, worn on every spell while Rampart is up, commented out and ready to fillRDM sets.Saboteursets.Midcast.Enfeebling.SaboteurRUN sets.Emboldensets.Midcast.Enhancing.EmboldenSAM sets.Seiganandsets.ThirdEyesets.OffenseMode.Seigan, withsets.OffenseMode.Seigan['Third Eye']inside it, commented out and ready to fillSCH stratagem sets such as sets.Immanenceandsets.Rapturebuff sets inside its midcast sets, with Klimaform left in the file's own code A Monk file that still declares
sets.Impetus,sets.Foot_Workorsets.Boostalso keeps
working, and the code it carries for them can go. The new RUN and SCH samples print no
Embolden Setor stratagem... Setline. The action line names each buff set a cast
wears instead. -
Every sample file ships empty
XIRollsets.sets.Idle.XIRolland
sets.Idle.TP.XIRoll(RDM has only the first) are ready for ...
Rahvin Gearswap 2.0
Patch Notes
Release-by-release detail for Rahvin GearSwap, and for the Mirdain-era releases it grew from.
The README describes what the engine does now. This file records
what changed and when, newest first, and keeps every release. Check your running
version in game with //gs c version.
Each release is broken into the same four headings, so you can scan for what matters:
- Notices — changes that need something from you before they take effect.
- New and Changed Features — what the release adds or does differently.
- Optimizations — the same behavior, cheaper.
- Bug Fixes — things that now work as intended.
A heading is omitted when a release has nothing under it.
Credits. Mirdain-Include was created by Mirdain; version 1.5.12 is the original
and the base this suite was forked from. Everything from 1.6.0 forward — engine
revisions and sample job files alike — was conceived and programmed by Rahvin. From
2.0 the suite is released as Rahvin GearSwap, continuing the same sequence.
| Version | Summary |
|---|---|
| 2.0 | Rahvin GearSwap: new name, new folder; four display styles and the slot rig; the weapon lock on F10; the disable and strip holds; the capacity cape and Dynamis neck locks; a much larger gear library |
The releases below shipped under the suite's former name, Mirdain Gearswap Enhanced by
Rahvin; 2.0 above follows 1.7.3 directly.
| Version | Summary |
|---|---|
| 1.7.3 | Sets that were equipping nothing now equip; two commands to hold an item in a slot; Aftermath gear layers correctly; every sample job file refreshed |
| 1.7.2 | Crash fixes for subtarget macros; reporting reaches pet actions and songs; weapon-mode and auto-buff costs cut |
| 1.7.1 | Per-action gear reporting and warning throttle; status box redesign; the HP-priority gear library |
| 1.7.0 | Thrown-item job abilities; cancel and override for item use; reload recovery; gs c enchinfo and gs c hoxneinfo |
| 1.6.6 | Enchanted item engine rebuilt around live cooldowns; Hoxne split into two on states |
| 1.6.5 | Status box rebuild; mode arguments validated; SpellReceived reduced to OFF/ON |
| 1.6.4 | 196 blue magic spells classified; item-search bag list corrected |
| 1.6.0 – 1.6.3 | The initial enhancement work over Mirdain 1.5.x |
| 1.5.12 | Mirdain's original |
2.0
The suite becomes Rahvin GearSwap 2.0, continuing the numbering after 1.7.3, and the
engine moves into a RahvinGS folder split into its parts. Your gear sets, your modes and
your macros carry over — the shape on disk is what changes, and a handful of job-file edits
go with it. The Notices below are what to do first; the refreshed sample files carry every
one of them already.
Notices
-
New files, and two include lines to update.
Mirdain-Include.luaand
GearSets-Include.luaare replaced by theRahvinGSfolder. Delete the two old files
fromWindower4/addons/GearSwap/data/, copy the whole folder in beside your job
files, and change the two include lines at the top of each job file to:include('RahvinGS/GearSets-Include') include('RahvinGS/Rahvin-Engine')
The refreshed samples carry the new lines already.
-
Your
settings.xmlloads, and nothing has to be deleted. The first time each character
loads 2.0, the display settings return to their defaults — the style and the view, whether
the status box is shown, and each box's font, size, colors and background — along with the
HALO style's colors; the box positions you dragged are kept. One line per group says so:Display settings reset to defaults (version 2); box positions kept Halo settings reset to defaults (version 1)Your channel toggles —
debug,info,warnandgear_reporting— and the multibox
announce delay carry through untouched. If you would rather start from a blank file,
deletesettings.xml, but unload GearSwap first (//lua unload gearswap): the engine
rewrites the whole file whenever it saves, so a file deleted while GearSwap is running
comes back within seconds. -
Auto Buff, Auto Tank and the Runes mode are retired. Self-buffing belongs to the
automation tools most players already run alongside GearSwap, and the engine hands it
back. The engine names each leftover in chat as your job file loads, so there is
nothing to hunt for:Auto Buff was removed: this job file still defines check_buff_JA or check_buff_SP and nothing calls them. They can be deleted. Auto Tank and Runes were removed: this job file still names one, so the mode is still shown but now drives nothing.Delete
check_buff_JAandcheck_buff_SPalong with anyBuff_DelayorTank_Delay
they used, and either clear aUI_NamereadingAuto TankorRunesor point that
slot at something your own file acts on. -
F10 cycles the weapon lock.
gs c weaponlockdecides whether anything but
your weapon set may write main and sub, and the key steps through its values. The capacity
point cape lock is reached by command —gs c capacity,gs c aptitudeor
gs c mecisto— so bind one of those yourself if you want it on a key. The engine lists
every keybind in chat as your job file loads. -
UnlockedandLockedleave your weapon-mode list. Take both values out of
state.WeaponMode:options(...)and delete an emptysets.Weapons.Unlockedwith them; the
nine shipped templates that offered either value carry neither now. A file that keeps a
value still works — it bridges onto the weapon lock, and the engine says so — but
gs c weaponlockis where to set it. Do not declarestate.WeaponLock:options(...):
the engine fixes that list per job —UnlockedandLockedeverywhere,Songson Bard,
Locked+Ron Corsair — and a job file's own:options()call wipes it. A file that wants
to boot locked callsstate.WeaponLock:set('Locked')and nothing else. -
A
//gs c jobmodemacro carrying a value works only where your own file declares
that value. Both job-mode slots offerOFFandONuntil a job file widens them
withstate.JobMode:options(...), and the shipped PLD and RUN templates leave both
slots unnamed. Declare the options you want in your file, or the value is answered
with the valid list instead of being acted on. -
Every ranged action's built set has to name an
ammo. A ranged attack, shot or ranged
weaponskill whose set leaves the slot undeclared, blank or cleared is canceled rather than
fired on whatever round happens to be loaded:No round named for Last Stand: ammo is undeclared in the built set. Canceling.Check the
Ammokey for every OffenseMode a ranged job offers, and that no set in the
chain clears the slot. -
//gs disableand//gs enableare not tracked by this engine;//gs c disableand
//gs c enableare. A native word carrying a slot name answers with one line pointing at
the tracked form, so update a macro that carries it:Disable: //gs disable leaves the slot untracked -- use //gs c disable <slot>... instead.A bare
//gs disable, which switches your whole job file off, is left alone. -
Set paths worth a search in your own file. Gear declared at a name the engine does not
read equips nothing, silently.Put it here Not here sets.WS.RA.ACC,.PDL,.SB,.CRIT,.MEVAsets.WS.ACC.RAand friendssets.WS.RA.AM,.AM1,.AM2,.AM3sets.WS.AM3.RAand friendssets.Midcast.RA.AM,.AM1,.AM2,.AM3sets.Midcast.AM3and friendssets.Precast.BlueMagicsets.Precast.Blue_Magicsets.Midcast.Drain,sets.Midcast.Aspirsets.Midcast.Enfeebling.Drainand.Aspirsets.DualWieldsets.OffenseMode.DWsets.Precast.RA.Flurry,.Flurry_IIsets.Precast.RA.ACCand other mode childrensets.Pet_Midcast['<Action Name>']sets.JA['Spur']and other pet-command namesUnder
sets.Midcast.Enfeeblingthe engine reads.MACC,.Potencyand.Durationand
nothing else. Undersets.Precast.RAit reads the two Flurry children and nothing else.
And a pet command — Fight, Heel, Spur, Deploy and the rest — has no set of its own: your
pet's own actions are dressed by thesets.Pet_Midcastfamily. -
Eleven Dynamis Divergence necks are keyed by tier. Each of these job necks reads
base,PlusOneandPlusTwoin the gear library, like every other tiered piece. The
+2isgear.<name>PlusTwo, and the tier-less key names the base neck — so a job file
naming one of the keys on the right dresses the base piece until you point it at the tier
you mean.Job The +2The tier-less key, and what it wears WAR gear.warriorsBeadPlusTwogear.warriorsBead— Warrior's BeadsMNK gear.monkNodowaPlusTwogear.monkNodowa— Monk's NodowaRDM gear.duelistTorquePlusTwogear.duelistTorque— Duelist's TorquePLD gear.knightsBeadPlusTwogear.knightsBead— Knight's BeadsBRD gear.bardCharmPlusTwogear.bardCharm— Bard's CharmRNG gear.scoutGorgetPlusTwogear.scoutGorget— Scout's GorgetDRG gear.dragoonCollarPlusTwogear.dragoonCollar— Dragoon's CollarBLU gear.mirageStolePlusTwogear.mirageStole— Mirage StoleCOR gear.commodoreCharmPlusTwogear.commodoreCharm— Commodore CharmSCH gear.arguteStolePlusTwogear.arguteStole— Argute StoleGEO gear.baguaCharmPlusTwogear.baguaCharm— Bagua Charm -
What changed inside the sample files. All 22 ship refreshed. Copy...
Mirdain Gearswap Enhanced by Rahvin v 1.7.3
Patch Notes
Release-by-release detail for Mirdain-Include Enhanced by Rahvin.
The README describes what the engine does now. This file records
what changed and when, newest first, and keeps every release. Check your running
version in game with //gs c version.
Each release is broken into the same four headings, so you can scan for what matters:
- Notices — changes that need something from you before they take effect.
- New and Changed Features — what the release adds or does differently.
- Optimizations — the same behaviour, cheaper.
- Bug Fixes — things that now work as intended.
A heading is omitted when a release has nothing under it.
Credits. Mirdain-Include was created by Mirdain; version 1.5.12 is the original
and the base this suite was forked from. Everything from 1.6.0 forward — engine
revisions and sample job files alike — was conceived and programmed by Rahvin.
| Version | Summary |
|---|---|
| 1.7.3 | Sets that were equipping nothing now equip; two commands to hold an item in a slot; Aftermath gear layers correctly; every sample job file refreshed |
| 1.7.2 | Crash fixes for subtarget macros; reporting reaches pet actions and songs; weapon-mode and auto-buff costs cut |
| 1.7.1 | Per-action gear reporting and warning throttle; status box redesign; the HP-priority gear library |
| 1.7.0 | Thrown-item job abilities; cancel and override for item use; reload recovery; gs c enchinfo and gs c hoxneinfo |
| 1.6.6 | Enchanted item engine rebuilt around live cooldowns; Hoxne split into two on states |
| 1.6.5 | Status box rebuild; mode arguments validated; SpellReceived reduced to OFF/ON |
| 1.6.4 | 196 blue magic spells classified; item-search bag list corrected |
| 1.6.0 – 1.6.3 | The initial enhancement work over Mirdain 1.5.x |
| 1.5.12 | Mirdain's original |
1.7.3
A correctness release. A lot of gear that was quietly equipping nothing now equips:
sets whose names were misspelled, sets declared where the engine does not look, and
modes offered with no set behind them. Every sample job file carries the fixes. One
command is renamed, and a few things in your own job file are worth a look — the
Notices below are the short list.
Notices
-
gs c cpis nowgs c trizek. Same Trizek Ring, same behaviour. Update any macro
or keybind carrying the old word. -
Take the sample job file for your job if you can. All 22 changed. What each one
gets you, in play:Sample What you get WAR Ranged weaponskills wear the gear you wrote for them — the sets were sitting under a name the engine does not read. Also a set for the PDT mode the file offers, and a Savage Blade set of its own rather than one shared with the weaponskill-damage set. PLD Shield Bash and Chivalry fire on their recasts, and Enlight applies. Plus a Rampart set to put gear in. COR Your Aeolian Edge set carries the bullet you named for it. BRD The Subtle Blow and Critical Hit modes dress you — both now build on your full TP set. Evisceration wears the set you wrote for it. RNG Your TP ammunition, your Bounty Shot ammunition, and the ammunition chosen on a weapon-mode change all resolve to real ammunition. BLM Curaga wears your cure set, and Dematerialize wears the set you wrote for it. GEO The Physical Damage Limit and Subtle Blow modes dress you, and Dematerialize wears the set you wrote for it. RDM A Subtle Blow set, and a set behind the Physical Damage Limit mode. RUN A Divine magic set, which Vivacious Pulse wears. SAM Accuracy ammunition, and a set behind the Physical Damage Limit mode. PUP A set behind the Physical Damage Limit mode. BST A Puppetmaster ability branch taken out, where a Beastmaster never reaches it. DRG, DRK Provoke wears your enmity set. BLM, BRD, SCH, SMN, WHM Ring entries that name a key the gear library actually defines, so those ring slots dress. BST, COR, DNC, DRG, DRK, MNK, NIN, PUP, RNG, RUN, SAM, WAR Warrior self-buffing that asks for Berserk, Aggressor and Warcry at the levels Warrior learns them. Seven of these ask on any Warrior subjob at all, however low. COR, RNG Job-mode weapon swapping that covers every job mode the file offers, Standardincluded. -
Every mode you offer needs a set behind it. A mode named in your
state.OffenseMode:options(...)line with no matchingsets.OffenseMode.<mode>costs
you the rest of the engaged build — your weapons, your shield or dual-wield offhand,
Aftermath and Treasure Hunter all go with it. Your basesets.OffenseModestill
equips, which is what makes this easy to miss: you look dressed. An empty declaration
is enough to close it:sets.OffenseMode.PDL = set_combine(sets.OffenseMode, {})
-
Three set paths are worth checking in your own file. Gear declared at a name the
engine does not read equips nothing, silently.Put it here Not here sets.WS.RA.ACC,.PDL,.SB,.CRIT,.MEVAsets.WS.ACC.RAand friendssets.WS.RA.AM,.AM1,.AM2,.AM3sets.WS.AM3.RAand friendssets.Midcast.RA.AM,.AM1,.AM2,.AM3sets.Midcast.AM3and friendsThe two
sets.WSrows are the shape the engine has always read — it is the WAR sample
that carried them the other way round, so check your file if you built it from that
one.sets.Midcast.AMand its siblings are gone from the engine's own declarations. -
Aftermath tier sets dress you on their own now.
sets.WS.AM3is a base layer, and
sets.WS.AM3['<Weapon Mode>']goes on over it for one weapon mode. Gear you put in the
tier itself equips whichever weapon you are holding, and a weapon-mode set you declared
and left empty holds nothing back. The same applies undersets.WS.RA,
sets.OffenseModeandsets.Midcast.RA. -
Five families of set are available and ship empty:
sets.Midcast.Utsusemi,
sets.Midcast.Phalanx,sets.Midcast.Divine,sets.Midcast.BlueMagicwith its eight
children (.ACC,.Breath,.Buff,.Enmity,.Healing,.Nuke,.Physical,
.Skill), andsets.Helixwith.Darkand.Light. Filling them is optional — left
alone they fall back like any other family set, and they warn on the same once-a-minute
throttle as everything else. -
Bards:
sets.Weapons.Songs.Precastis read. Declare it to hold a particular
instrument or weapon pair through a song's precast; leave it out and precast keeps
whatever you are holding. -
Two pieces of job-file boilerplate moved into the engine — the job-mode weapon
swap and the Warrior sub-job self-buff chain — so the sample files are shorter. Your
own copies keep working exactly as they did. The README's Customization Hooks section
shows the shorter form if you want it. -
The subjob-change hook receives the new and previous subjob. If you wrote a branch
against those, it runs with real values in it now.
New and Changed Features
- Hold an item in a slot:
gs c aptitudeandgs c jubilee. They wear the Aptitude
Mantle and the Jubilee Ring and keep them there against your normal gear. Type either
bare to flip it, or withonoroffto set it. They stand aside for an enchanted
item use, the Hoxne Ampulla lock and incoming spell-received gear, and say so when they
do. If the item leaves your bags or a level sync drops it, the mode switches itself off
rather than holding an empty slot shut — and gear taken back by/equipsetor a
server-forced unequip is noticed and reclaimed. - Confirmations and diagnostics always answer. Mode and setting confirmations, the
lock-mode announcements, the startup keybind list, the version and every diagnostic
reply print whatever your chat channels are set to — so a toggle can confirm itself and
a diagnostic you typed never answers with silence. Gear and action reporting stays on
gs c info, which is still the channel to turn down in a long fight. - Weaponskill and shot reports name the Aftermath gear they wore, in a clause of
their own. The set your weaponskill chose stays at the head of the line: Aftermath goes
on over it rather than replacing it. - Bards: instrument overrides cover every song. An
Instrument.Pianissimoentry is
honoured for all 25 song families, Hymnus included. Enfeebling songs wear
Instrument.Enfeebling, and under Nightingale they wear it at precast too. - Bards: your offhand is respected through a song. A declared offhand wins where dual
wield allows one, and stands aside where it does not. gs c tomahawkandgs c angonfind the item anywhere you can equip it from — any
bag, any stack, and a copy you are already wearing is preferred. Under the Hoxne
Ampulla lock the ability is refused with its reason on every press.- An enchanted item keeps its slot for the whole use. A combat rebuild, a buff
wearing off or a weapon-mode change leaves it in place until the use finishes. Zoning
cancels the use and gives the slot straight back. - Long casts keep their midcast gear. Blue magic, avatar and spirit summons, and
Trust summons hold the gear they cast in for the whole cast, so a buff landing partway
through does not dress you back into idle or engaged gear. Trust summons report their
gear like any other cast.
Optimizations
- Dying costs nothing. While you are dead the Hoxne Ampulla mode stops searching your
bags and re-equipping, and picks up again when you are raised. - Reports cost nothing when their channel is off. With
gs c infooff, the line for a
shot or a weaponskill is never built i...
Mirdain Gearswap Enhanced by Rahvin v 1.7.2
1.7.2
A hardening release: crash fixes reported from the field, gear reporting extended to
the last actions outside it, and the two remaining per-action stalls removed.
Notices
- Five song family sets are new and ship empty:
sets.Midcast.Fugue,.Hum,
.Hymnus,.Virelaiand.Nocturne. Cactuar Fugue, Chocobo Hum, Goddess's Hymnus,
Maiden's Virelai and Pining Nocturne route to them, so every castable song now has a
family set. Declare gear in them if you want it; left alone, those songs fall back to
sets.Midcastlike any other song whose family set is bare. - NIN sample: the time-of-day movement sets are siblings of
sets.Movement, not
children. Declaresets.Movement_Day,sets.Movement_Nightand
sets.Movement_Duskbeside asets.Movement_Base, and rebuild from the base in
Cycle_Timeras the sample shows. Rebuildingsets.Movementfrom sets nested inside
it deletes those sets on the first tick and freezes the feet on whichever period was
active at load — if your NIN file follows the old sample's pattern, copy the new one. - GEO sample: the idle Luopan check performs the swap now. When the Luopan crosses
its HP threshold while you stand idle, the head swap happens within about two
seconds. If your GEO file carries its own copy ofLuopan()andCycle_Timer, take
the sample's new pair to get the same behaviour.
New and Changed Features
- Pet actions report their gear. A wyvern breath, blood pact or jug-pet move names
the set it wore —[sets.Pet_Midcast.Flame Breath][Used]— with the same fallback
line, empty-set warning and trace as a spell. - Songs report their family set the same way. A song names the family set it used;
one that is declared and empty shows both ends of the fallback —
[sets.Midcast.Paeon][Not Usable] -> [sets.Midcast][Used]— andgs c gearreporting
carries the full path. - Bindga routes to
sets.Midcast.Enfeebling.Duration, beside Bind.
Optimizations
- Weapon-mode changes answer from memory. Whether a weapon is two-handed is
resolved once per weapon name and remembered, instead of scanning the full item
database on every press — about two milliseconds off every weapon-mode macro, paid in
the same frame as the swap. - Auto-buff checks are paced to once a second, resuming immediately after each
action so a buff chain keeps its pace. With AutoBuff on, the recast queries this
saves are about ninety percent of what the hooks were paying. - Less work per event in a large fight. Expanding an AoE broadcast to nearby party
members reads the party data already in hand; a weaponskill from elsewhere in the
alliance closing a skillchain compares ids without fetching the mob; the movement
poll skips its position read while mounted or mid-action; auto-buff ability and spell
names are resolved once per name; multibox messages parse in a single pass.
Bug Fixes
- A macro aimed at an open subtarget cursor —
/ma "Cure IV" <stpt>,
/ws "Aeolian Edge" <stnpc>— completes without a Lua error. This covers every
tracked spell and every elemental weaponskill. - Geo-Refresh wears
sets.Geomancy.Geo. - Breakga wears the enfeebling duration set.
- Casting a song leaves your song sets exactly as you declared them: a set you left
empty keeps warning as empty, andgs c checksetsstays accurate however many songs
you cast. - After an Accession or Divine Seal charge is spent, the next single-target cast is
announced to your other characters as single-target. - Multibox target matching is exact, so a character whose name contains another
character's name cannot take gear swaps meant for them. - Turning SpellReceived
OFFduring an incoming cast releases the borrowed slots at
once. - A tracked cast at a target outside render range equips gear and announces to your
other characters normally. - The earth-element, day-bonus and weather-bonus gear notices honour
gs c info. - Tzee Xicu's Blade carries the two-handed ordering token in the gear library, so
entering a weapon mode built on it orders the swap correctly.
Mirdain Gearswap Enhanced by Rahvin v 1.7.1
See patch notes and readme.md. Now includes gear swap hp prioritization through GearSets-Include.lua as an optional feature.
New in 1.7
What the 1.7 line adds over 1.6.5, including the 1.6.6 work that shipped inside 1.7.0. Nothing here requires a change to your job files — every existing job file, custom command and keybind keeps working as-is.
Release-by-release detail, back to the original, is in PATCH NOTES.md.
Performance Simulation Results
Measured, not guessed: a simulated Dynamis Divergence alliance fight — a six-client multibox party inside an 18-player alliance with a full mob wave, every entity acting every one to three seconds — puts this engine and the original Mirdain-Include 1.5.12 side by side on identical timelines.
- 1.7 runs at roughly 70% of 1.5.12's CPU cost and 72% of its allocation rate, with Hoxne, spell-received tracking, enchanted-item automation and the gear diagnostics all running. With every chat channel on, it costs what 1.5.12 costs running silent.
- Frame rate is never at risk from the engine. The worst single frame in twenty minutes of simulated combat is about 1% of a 60 fps frame budget on 1.5.12, and about half that on 1.7. Both engines together, across all six clients, use under 0.03% of one CPU core.
- Chat volume is the one load that scales with settings rather than engine: with every channel on, six clients emit about 1,400 lines a minute; with chat off, effectively none. For long fights, keep
debugoff — it is worth three orders of magnitude more rendered chat than any other choice.
The full write-up — per-cast costs, frame-budget analysis, allocation, chat volume, and methodology — is in the repository at https://github.com/RahvinCode/Gearswap/blob/master/Performance%20Impact%20Report.md
New Features and Optimizations
Enchanted items
gs c use <item>equips and uses any enchanted item — over five hundred are supported — handling the slot, the equip delay and the cooldown for you. Type the name in lower case, spaces and any+1included://gs c use prishe's boots +1.- Cooldowns are tracked and read live from the item, so they survive a reload or a relog. A use on cooldown is refused with the time remaining; an equip delay is waited out quietly. Every refusal names its reason — item missing, wrong job, level too low, on cooldown.
gs c cancelstops a use in progress, and issuing any new use command —gs c use,gs c warpand friends — takes over from the one already running. See Changing your mind.gs c enchinfo <item>prints an item's live charges, equip delay and cooldown when the timing looks wrong.
Hoxne Ampulla
- Two on states, cycled with
//gs c hoxne.ON-Lockedholds range and ammo outright.ON-Allow Criticalstands aside for bard songs, Geomancy, Tomahawk and Angon, then takes the slot back — the one for Bards and Geomancers. See Hoxne. - Fully automatic use. While a mode is on, the Ampulla is kept equipped, used whenever its enchantment is down and it is ready, and put back when anything knocks it out. Switching a mode on during a cooldown reports the wait once, then uses the item when it is ready. Zoning turns the mode
OFF. - It recovers itself after a reload. An Ampulla left stranded in your ammo slot is detected and released within a few seconds, with your normal gear restored.
gs c hoxneinfoprints everything the mode is acting on — a one-command health check.
Job abilities that need a thrown item
gs c tomahawkandgs c angonequip the throwing item, then use the ability on your target. Use these in macros in place of a raw/jaline, which the game refuses while the item is not worn. The ability's recast is checked before any gear moves.
Gear reporting and diagnostics
- Every action names the set it used, on the info channel:
[sets.Midcast.Cure][Used]. When the set it reached for holds nothing, the same line shows both ends of the fallback:[sets.Midcast.Cure][Not Usable] -> [sets.Midcast][Used]. - Everything reports, not just spells. Job abilities, weaponskills, stratagems, Corsair rolls and shots, Dancer steps, Waltzes, Runes and item uses each report at the point their gear is chosen — one line per action, whatever the action is. Gear equipped for an incoming spell reports the same way.
- A set that holds no gear is named, with the reason:
[sets.Midcast.Cure] not found!if you never declared it,[sets.Midcast.Regen] is empty!if you declared it and left it bare. - Warnings stay readable in a long fight. Each set warns at most once a minute and says so —
Silencing warnings for 60s— and when it speaks again it reports what it held back,(4 silenced since the last), so quiet never means fixed. gs c checksetsaudits a job file: how many sets carry gear, how many engine sets you never declared, and — named individually — any set you declared but left empty. It also clears the warning silences.gs c gearreportingtraces precast, midcast and aftercast, one labelled line each, including the whole fallback path when a set was bare. Off by default.
Healing magic
- Raise, Arise, Reraise, the -na spells, Esuna and Sacrifice use
sets.Midcast.Enhancing. - Cursna has its own set,
sets.Midcast.Cursna, layered oversets.Midcast.Enhancing— declare either, both, or neither.
The status box
- Clearer layout. The indicators run SR, TH, HOX; in the stacked layout the header spans the full box, evenly spaced, and each mode value sits between its chevrons with a single space on either side.
- More legible. Mode status shows as a solid coloured square, and the text carries a dark outline so it reads against any background.
- Chat notices were re-coloured so warnings, the gear trace and debug output are distinguishable at a glance.
Fixes
- Treasure Hunter gear is merged at precast for weapon skills, ranged attacks and job abilities against untagged mobs. Spell precasts keep your fast-cast gear; the Treasure Hunter set arrives at midcast instead, which is when the tag lands.
- Twilight Cape equips only for Cura and Curaga, so single-target cures keep the back piece your set specifies.
- Item names that contain command words —
gs c use hoxne ampulla— reach the right command. - A use that succeeds is not reported as "not accepted".
- Slots left locked by a previous load are released at startup.
- Reporting covers every set the engine can choose, including sets your job file leaves undeclared, and names the set that actually dressed you.
- Weaponskill chat shows the Aftermath tier and ammunition count alongside the set line, rather than folded into it.
- Blindna is recognised by the precast healing-magic set.
- Blue magic precast reads
sets.Precast.BlueMagic. If your job file declaressets.Precast.Blue_Magic, rename it — the underscored spelling is inert. - Sample job files for all 22 jobs are included.
If you see warnings you do not want
A warning means a set exists and is empty, not that a set is missing — the engine never asks for a set you have not declared. To silence one for an ability you do not want special gear for, delete the sets.JA["Name"] = {} line rather than leaving it blank; put gear in sets.JA to cover everything you have not given a specific set. gs c checksets lists every empty set at once, and gs c warn turns the channel off entirely.
Mirdain Gearswap by Rahvin v 1.7.0
New in 1.7.0
The first public release since 1.6.5, and it carries the 1.6.6 work with it. Nothing here requires a change to your job files — every existing job file, custom command and keybind keeps working as-is.
Performance Simulation Results
Measured, not guessed: a simulated Dynamis Divergence alliance fight — a six-client multibox party inside an 18-player alliance with a full mob wave, every entity acting every one to three seconds — puts this engine and the original Mirdain-Include 1.5.12 side by side on identical timelines.
- 1.7.0 runs at roughly 70% of 1.5.12's CPU cost and 72% of its allocation rate, with Hoxne, spell-received tracking, enchanted-item automation and the gear diagnostics all running. With every chat channel on, 1.7.0 costs what 1.5.12 costs running silent.
- Frame rate is never at risk from the engine. The worst single frame in twenty minutes of simulated combat is about 1% of a 60 fps frame budget on 1.5.12, and about half that on 1.7.0. Both engines together, across all six clients, use under 0.03% of one CPU core.
- Chat volume is the one load that scales with settings rather than engine: with every channel on, six clients emit about 1,400 lines a minute; with chat off, effectively none. For long fights, keep
debugoff — it is worth three orders of magnitude more rendered chat than any other choice.
The full write-up — per-cast costs, frame-budget analysis, allocation, chat volume, and methodology — is in the repository at https://github.com/RahvinCode/Gearswap/blob/master/Performance%20Impact%20Report.md
New Features and Optimizations
Enchanted items
gs c use <item>equips and uses any enchanted item — over five hundred are supported — handling the slot, the equip delay and the cooldown for you. Type the name in lower case, spaces and any+1included://gs c use prishe's boots +1.- Cooldowns are tracked and read live from the item, so they survive a reload or a relog. A use on cooldown is refused with the time remaining; an equip delay is waited out quietly. Every refusal names its reason — item missing, wrong job, level too low, on cooldown.
gs c cancelstops a use in progress, and issuing any new use command —gs c use,gs c warpand friends — takes over from the one already running. See Changing your mind.gs c enchinfo <item>prints an item's live charges, equip delay and cooldown when the timing looks wrong.
Hoxne Ampulla
- Two on states, cycled with
//gs c hoxne.ON-Lockedholds range and ammo outright.ON-Allow Criticalstands aside for bard songs, Geomancy, Tomahawk and Angon, then takes the slot back — the one for Bards and Geomancers. See Hoxne. - Fully automatic use. While a mode is on, the Ampulla is kept equipped, used whenever its enchantment is down and it is ready, and put back when anything knocks it out. Switching a mode on during a cooldown reports the wait once, then uses the item when it is ready. Zoning turns the mode
OFF. - It recovers itself after a reload. An Ampulla left stranded in your ammo slot is detected and released within a few seconds, with your normal gear restored.
gs c hoxneinfoprints everything the mode is acting on — a one-command health check.
Job abilities that need a thrown item
gs c tomahawkandgs c angonequip the throwing item, then use the ability on your target. Use these in macros in place of a raw/jaline, which the game refuses while the item is not worn. The ability's recast is checked before any gear moves.
Gear diagnostics
- A cast that finds no gear says so, naming the set and why:
[sets.Midcast.Cure] not found!if you never declared it,[sets.Midcast.Regen] is empty!if you declared it and left it bare. gs c checksetsaudits a job file: how many sets carry gear, how many engine sets you never declared, and — named individually — any set you declared but left empty.gs c gearreportingtraces which set each cast actually used, and the whole fallback path when the set it reached for was bare. Off by default.
The status box
- Clearer layout. The indicators run SR, TH, HOX; in the stacked layout the header spans the full box, evenly spaced, and each mode value sits between its chevrons with a single space on either side.
- More legible. Mode status shows as a solid coloured square, and the text carries a dark outline so it reads against any background.
- Chat notices were re-coloured so warnings, the gear trace and debug output are distinguishable at a glance.
Fixes
- Treasure Hunter gear is merged at precast for weapon skills, ranged attacks and job abilities against untagged mobs. Spell precasts keep your fast-cast gear; the Treasure Hunter set arrives at midcast instead, which is when the tag lands.
- Twilight Cape equips only for Cura and Curaga, so single-target cures keep the back piece your set specifies.
- Item names that contain command words —
gs c use hoxne ampulla— reach the right command. - A use that succeeds is not reported as "not accepted".
- Slots left locked by a previous load are released at startup.
- Sample job files for all 22 jobs are included.
Mirdain Gearswap 1.6.5
Mirdain Enhanced GearSwap by Rahvin — v1.6.5 Patch Notes
Changed
SpellReceivedmodes simplified.ON-LockedandON-Unlockedare collapsed into a singleON(behaves like the oldON-Locked).ON-Unlockedis gone as unnecessary. Update any macro/script still passingON-LockedorON-Unlocked— it will now be rejected with a suggestion instead of silently doing the wrong thing.- Command argument validation. Every
//gs c <mode> [value]command now validates its argument against that mode's real option list (case-insensitive). An unrecognized value changes nothing and prints a usage message with a "did you mean" suggestion instead of either throwing a raw Lua error or being loosely/incorrectly matched (previously true forSpellReceivedandhoxne). Sending a command with no argument such asgs c spellreceivedstill cycles the mode forward exactly as before. - Status box redesigned. New compact glyph-based layout:
TH,SR(SpellReceived), andHOX(Hoxne) now render as a single colored circle (green = on or TH Full Time, amber = TH Tag, cyan = THF SATA TH, hollow grey = off) instead of full text, freeing up space. Other modes (Stance, DPS, JobMode, JobMode2) keep full text between chevrons (<DT>). Column widths are now derived from each mode's full option list, so the box no longer resizes as you cycle through modes. - New
UI_Short/UI_Short2job-file variables — optional 3-letter status-box labels for JobMode/JobMode2. If omitted, a label is auto-derived fromUI_Name/UI_Name2(a small alias table, then a general first-letters rule), so existing job files need no changes. - Display drag/save reworked. Dragging now uses the text library's own hover/drag handling instead of a custom mouse-hook, and the position save on release is silent (no chat spam).
//gs c zeronow also resets the debug box position, not just the status box. - One Line Display Mode
- Full Stack Display Mode
Bug Fixes
- Fixed
//gs c display(toggling the status box) not updating its draggable state, so a hidden-then-reshown box could stop responding to drags. - Fixed the debug box not resetting its cached state when re-enabled via
//gs c debug, which could leave it showing stale values. - Fixed a leftover unused
is_Draggingglobal and a missinglocalonavailable_chargesin the SCH stratagem check (was leaking as a global). sub_job_changenow invalidates the status box layout, so subjob swaps that change available mode options no longer leave the box mis-sized.
Sample Job Files (all 22 jobs)
- Fixed a wardrobe bag-name bug:
bag="wardrobe1"has been corrected tobag="wardrobe"everywhere it appeared (left-ring entries for Stikini Ring, Moonlight Ring, Eshmun's Ring, etc.)."wardrobe1"is not a valid bag name — GearSwap's real primary wardrobe is"wardrobe"— so any gear that specified it as the only location was silently failing to be found/equipped whenever the item wasn't a duplicate. - Fixed global-variable leakage: the local
equipSetscratch variable in all the*_customhook functions (precast_custom,midcast_custom,aftercast_custom,buff_change_custom,choose_set_custom,status_change_custom,pet_*_custom, etc.) andbuffincheck_buff_JA/check_buff_SP/check_tankare now declaredlocal. Previously they were implicit globals, which could bleed state between unrelated calls.
Other
- README updated to document the new
SpellReceivedvalues, argument validation behavior, status box glyphs/labels, and drag/save behavior; version bumped to 1.6.5 throughout.
Upgrade notes for existing users
- If you have a macro, third-party trigger, or saved binding that sends
//gs c SpellReceived ON-LockedorON-Unlocked, change it to//gs c SpellReceived ON. - No action needed for
UI_Short/UI_Short2— the auto-derived label will just appear. Set them explicitly only if you dislike the derived 3-letter label. - The
wardrobe1→wardrobefix is purely corrective; no action needed unless you had copied the old (broken) pattern into gear you added yourself, in which case switch it tobag="wardrobe".
Mirdain Gearswap Enhanced 1.6.4
Mirdain Gearswap Enhanced v 1.6.4
Bug Fixes:
- Removed target_assist section that was not working and had several broken sections. No gain or loss in function, but cleans up a couple repetitive unnecessary calls.
- Split recasttimers and hasrecasttimers to allow checking of all spell abilities while retaining lockouts only for some. Allows smn and blu spells to be checked in pretargetcheck(), cancelling if still on cooldown before changing to precast gear.
- Fixed redundant pretarget_custom call
- Fixed a gain buff and lose buff error on unknown ids for buffs with a guard clause
- Fixed Chatoyant Staff not equipping if sets.Weapons['Light Bonus'] was also defined.
- Fixed wardrobe 8 not being searched for Hoxne Ampulla. Was previously looking in safe2 instead.
Optimizations
- Changed another action handler to raw_register_event to reduce unnecessary equip_set allocation in the background prior to forcing equip_set_command()
- Changed nearly all set_combine() calls into a custom merge_into function that does not pre-allocate tables for everything. Saves 200-300 table allocations per second per character during combat.
- Fixed BLU spell tables to account for all BLU spells in the include. Stat priority for gear is commented for each category. Check your BLU.lua and optimize your sets with the new physical, buff healing and and breath categories