Skip to content

Releases: RahvinCode/Gearswap

Rahvin GS 2.1.0

Choose a tag to compare

@RahvinCode RahvinCode released this 24 Sep 17:55
f1cda1e

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 from data/settings.xml into the new file, and
    Windower confirms it once with New file: data/<CharacterName>/settings.xml. The engine
    never writes to data/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. While data/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.Idle name. A Bard's instrument and a Geomancer's handbell still swap. With
    gs c warn on, 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 wears sets.WS, then the set named for the weaponskill, then the mode's set,
    such as sets.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, ...) or set_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 of sets.WS.ACC for 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.Ready and 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 as sets.Idle.Refresh for some other purpose, rename it, or it goes
    on every time Refresh does. Spell sets inside sets.Midcast, such as
    sets.Midcast.Refresh, stay spell sets. With gs c warn on, a name inside a mode set such
    as sets.OffenseMode.TP that 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 info and gs c gearreporting write your choice to the settings file, as
    gs c displaymode and gs c displaystyle do. 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 displaypos and gs c displaycells are engine commands, and display,
    displaymode, debug, warn, info and gearreporting take on or off. If your job
    file has its own gs c command by one of these names, rename yours. A mistyped argument to
    any of these, or to naked, weaponsonly, abysseaproc, capacity, aptitude,
    mecisto, dynamisrp, jubilee, disable or enable, is answered by the engine and
    never reaches your job file. gs c help replies with the list of groups, and
    gs c keybind with the modes or the keys it accepts. The rest reply with their usage line
    while gs c warn is on.

  • The engine supplies no round function. A job file that calls round stops 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 adds PDT.
    If you copy one of these samples, the offense mode key (F12 unless you changed it) and
    gs c offensemode have 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.Impetus sets.OffenseMode.Impetus, also worn on weaponskills as sets.WS.Impetus
    MNK sets.Foot_Work sets.OffenseMode.Footwork
    MNK sets.Boost sets.OffenseMode.Boost, also sets.Idle.Boost and sets.WS.Boost
    PLD sets.Cover sets.Idle.Cover and sets.OffenseMode.Cover
    PLD sets.Rampart sets.Midcast.Rampart, worn on every spell while Rampart is up, commented out and ready to fill
    RDM sets.Saboteur sets.Midcast.Enfeebling.Saboteur
    RUN sets.Embolden sets.Midcast.Enhancing.Embolden
    SAM sets.Seigan and sets.ThirdEye sets.OffenseMode.Seigan, with sets.OffenseMode.Seigan['Third Eye'] inside it, commented out and ready to fill
    SCH stratagem sets such as sets.Immanence and sets.Rapture buff sets inside its midcast sets, with Klimaform left in the file's own code

    A Monk file that still declares sets.Impetus, sets.Foot_Work or sets.Boost also keeps
    working, and the code it carries for them can go. The new RUN and SCH samples print no
    Embolden Set or stratagem ... Set line. The action line names each buff set a cast
    wears instead.

  • Every sample file ships empty XIRoll sets. sets.Idle.XIRoll and
    sets.Idle.TP.XIRoll (RDM has only the first) are ready for ...

Read more

Rahvin Gearswap 2.0

Choose a tag to compare

@RahvinCode RahvinCode released this 11 Sep 04:20
b8a379e

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.lua and
    GearSets-Include.lua are replaced by the RahvinGS folder. Delete the two old files
    from Windower4/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.xml loads, 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, warn and gear_reporting — and the multibox
    announce delay carry through untouched. If you would rather start from a blank file,
    delete settings.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_JA and check_buff_SP along with any Buff_Delay or Tank_Delay
    they used, and either clear a UI_Name reading Auto Tank or Runes or point that
    slot at something your own file acts on.

  • F10 cycles the weapon lock. gs c weaponlock decides 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 aptitude or
    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.

  • Unlocked and Locked leave your weapon-mode list. Take both values out of
    state.WeaponMode:options(...) and delete an empty sets.Weapons.Unlocked with 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 weaponlock is where to set it. Do not declare state.WeaponLock:options(...):
    the engine fixes that list per job — Unlocked and Locked everywhere, Songs on Bard,
    Locked+R on Corsair — and a job file's own :options() call wipes it. A file that wants
    to boot locked calls state.WeaponLock:set('Locked') and nothing else.

  • A //gs c jobmode macro carrying a value works only where your own file declares
    that value.
    Both job-mode slots offer OFF and ON until a job file widens them
    with state.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 Ammo key for every OffenseMode a ranged job offers, and that no set in the
    chain clears the slot.

  • //gs disable and //gs enable are not tracked by this engine; //gs c disable and
    //gs c enable are.
    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, .MEVA sets.WS.ACC.RA and friends
    sets.WS.RA.AM, .AM1, .AM2, .AM3 sets.WS.AM3.RA and friends
    sets.Midcast.RA.AM, .AM1, .AM2, .AM3 sets.Midcast.AM3 and friends
    sets.Precast.BlueMagic sets.Precast.Blue_Magic
    sets.Midcast.Drain, sets.Midcast.Aspir sets.Midcast.Enfeebling.Drain and .Aspir
    sets.DualWield sets.OffenseMode.DW
    sets.Precast.RA.Flurry, .Flurry_II sets.Precast.RA.ACC and other mode children
    sets.Pet_Midcast['<Action Name>'] sets.JA['Spur'] and other pet-command names

    Under sets.Midcast.Enfeebling the engine reads .MACC, .Potency and .Duration and
    nothing else. Under sets.Precast.RA it 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 the sets.Pet_Midcast family.

  • Eleven Dynamis Divergence necks are keyed by tier. Each of these job necks reads
    base, PlusOne and PlusTwo in the gear library, like every other tiered piece. The
    +2 is gear.<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 +2 The tier-less key, and what it wears
    WAR gear.warriorsBeadPlusTwo gear.warriorsBead — Warrior's Beads
    MNK gear.monkNodowaPlusTwo gear.monkNodowa — Monk's Nodowa
    RDM gear.duelistTorquePlusTwo gear.duelistTorque — Duelist's Torque
    PLD gear.knightsBeadPlusTwo gear.knightsBead — Knight's Beads
    BRD gear.bardCharmPlusTwo gear.bardCharm — Bard's Charm
    RNG gear.scoutGorgetPlusTwo gear.scoutGorget — Scout's Gorget
    DRG gear.dragoonCollarPlusTwo gear.dragoonCollar — Dragoon's Collar
    BLU gear.mirageStolePlusTwo gear.mirageStole — Mirage Stole
    COR gear.commodoreCharmPlusTwo gear.commodoreCharm — Commodore Charm
    SCH gear.arguteStolePlusTwo gear.arguteStole — Argute Stole
    GEO gear.baguaCharmPlusTwo gear.baguaCharm — Bagua Charm
  • What changed inside the sample files. All 22 ship refreshed. Copy...

Read more

Mirdain Gearswap Enhanced by Rahvin v 1.7.3

Choose a tag to compare

@RahvinCode RahvinCode released this 25 Aug 02:33
a9c7164

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 cp is now gs 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, Standard included.
  • Every mode you offer needs a set behind it. A mode named in your
    state.OffenseMode:options(...) line with no matching sets.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 base sets.OffenseMode still
    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, .MEVA sets.WS.ACC.RA and friends
    sets.WS.RA.AM, .AM1, .AM2, .AM3 sets.WS.AM3.RA and friends
    sets.Midcast.RA.AM, .AM1, .AM2, .AM3 sets.Midcast.AM3 and friends

    The two sets.WS rows 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.AM and its siblings are gone from the engine's own declarations.

  • Aftermath tier sets dress you on their own now. sets.WS.AM3 is 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 under sets.WS.RA,
    sets.OffenseMode and sets.Midcast.RA.

  • Five families of set are available and ship empty: sets.Midcast.Utsusemi,
    sets.Midcast.Phalanx, sets.Midcast.Divine, sets.Midcast.BlueMagic with its eight
    children (.ACC, .Breath, .Buff, .Enmity, .Healing, .Nuke, .Physical,
    .Skill), and sets.Helix with .Dark and .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.Precast is 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 aptitude and gs 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 with on or off to 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 /equipset or 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.Pianissimo entry 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 tomahawk and gs c angon find 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 info off, the line for a
    shot or a weaponskill is never built i...
Read more

Mirdain Gearswap Enhanced by Rahvin v 1.7.2

Choose a tag to compare

@RahvinCode RahvinCode released this 17 Aug 07:18
2c2213c

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, .Virelai and .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.Midcast like any other song whose family set is bare.
  • NIN sample: the time-of-day movement sets are siblings of sets.Movement, not
    children.
    Declare sets.Movement_Day, sets.Movement_Night and
    sets.Movement_Dusk beside a sets.Movement_Base, and rebuild from the base in
    Cycle_Timer as the sample shows. Rebuilding sets.Movement from 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 of Luopan() and Cycle_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] — and gs 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, and gs c checksets stays 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 OFF during 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

Choose a tag to compare

@RahvinCode RahvinCode released this 16 Aug 21:59
2df83ed

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 debug off — 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 +1 included: //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 cancel stops a use in progress, and issuing any new use command — gs c use, gs c warp and 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-Locked holds range and ammo outright. ON-Allow Critical stands 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 hoxneinfo prints everything the mode is acting on — a one-command health check.

Job abilities that need a thrown item

  • gs c tomahawk and gs c angon equip the throwing item, then use the ability on your target. Use these in macros in place of a raw /ja line, 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 checksets audits 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 gearreporting traces 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 over sets.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 declares sets.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

Choose a tag to compare

@RahvinCode RahvinCode released this 16 Aug 07:19
6f92b36

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 debug off — 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 +1 included: //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 cancel stops a use in progress, and issuing any new use command — gs c use, gs c warp and 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-Locked holds range and ammo outright. ON-Allow Critical stands 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 hoxneinfo prints everything the mode is acting on — a one-command health check.

Job abilities that need a thrown item

  • gs c tomahawk and gs c angon equip the throwing item, then use the ability on your target. Use these in macros in place of a raw /ja line, 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 checksets audits 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 gearreporting traces 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

Choose a tag to compare

@RahvinCode RahvinCode released this 14 Aug 03:09
b3d7529

Mirdain Enhanced GearSwap by Rahvin — v1.6.5 Patch Notes

Changed

  • SpellReceived modes simplified. ON-Locked and ON-Unlocked are collapsed into a single ON (behaves like the old ON-Locked). ON-Unlocked is gone as unnecessary. Update any macro/script still passing ON-Locked or ON-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 for SpellReceived and hoxne). Sending a command with no argument such as gs c spellreceived still cycles the mode forward exactly as before.
  • Status box redesigned. New compact glyph-based layout: TH, SR (SpellReceived), and HOX (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_Short2 job-file variables — optional 3-letter status-box labels for JobMode/JobMode2. If omitted, a label is auto-derived from UI_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 zero now also resets the debug box position, not just the status box.
  • One Line Display Mode
Screenshot 2026-08-13 211103
  • Full Stack Display Mode
Screenshot 2026-08-13 211137

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_Dragging global and a missing local on available_charges in the SCH stratagem check (was leaking as a global).
  • sub_job_change now 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 to bag="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 equipSet scratch variable in all the *_custom hook functions (precast_custom, midcast_custom, aftercast_custom, buff_change_custom, choose_set_custom, status_change_custom, pet_*_custom, etc.) and buff in check_buff_JA/check_buff_SP/check_tank are now declared local. Previously they were implicit globals, which could bleed state between unrelated calls.

Other

  • README updated to document the new SpellReceived values, 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-Locked or ON-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 → wardrobe fix is purely corrective; no action needed unless you had copied the old (broken) pattern into gear you added yourself, in which case switch it to bag="wardrobe".

Mirdain Gearswap Enhanced 1.6.4

Choose a tag to compare

@RahvinCode RahvinCode released this 13 Aug 06:15
da541e8

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