Problem:
-It gets annoying and confusing setting up separate macro pages for JOB/SJ1, JOB/SJ2, JOB/SJ3, etc. There's the MacroChanger addon that helps find the main page but it does not take into account subjobs.
-Often have to leave spells off macro books, simply because of space restrictions. Effects efficiency.
-Can set up multiple page macro sets (as opposed to singular pages) but complicates quickly as multiple job/subjob combinations grow and spread out.
-Macro maintenance becomes overly complicated, small changes in setup are not reflected in each iteration.
-Macros in different locations in each set leads to fumbling and lost time when navigating unfamiliar sets.
Ex:
I set up 4 or 5 different macro pages for PLD/WAR, PLD/RDM, PLD/DNC, PLD/NIN depending on activity. Also; set up many similar pages for all the jobs using standard subjobs like /DNC and /NIN. In each page, macros are in slightly different spots, often based on where they would fit/necessity.
Solution:
Give each job and subjob their own 20 slot page and make SpellCast switch between main/sj macro pages automatically by reading which combination I am currently in; no matter which combination it is. From there, can spread out into multiple pages, but job and subjob tracked separately so it does not overcomplicate things. (ex: SCH spread over 3 pages is unrelated to this SJ switching.)
The Seteup:
First, I set up all my macro books according to MacroChanger, (ex: WAR book 1, page 1) then I set up the subjob pages in those same books but on page 10 (ex: WAR(SJ) book 1, page 10). So at this point, nothing has been done besides putting things in predictable places.
Note: The following sections go in Name_job.xml in your spellcast folder (ex: Zorndyke_run.xml). Put this in each Name_job.xml that you use to make it always on.
Next, I set up a trigger spell variable and a switch to keep track of which position (main or sub) it was currently in:
Code
<variables clear="True"> <var name="PageTrig">Diaga III</var> <var name="SJswitch">1</var> </variables>
Now, the complicated part: the actual switching. First, set 1 macro named Switch (or whatever you prefer, Main or Back, w/e) in each location to cast "/ma "Diaga III" <me>". I know, that spell doesn't make sense in that context, doesn't matter, it'll never cast. For my WAR example, this means setting a Diaga3 in book 1, page 1 and also one in DNC SJ location (book 19, page 10).
So, we need the rules that tell SpellCast to actually get to work. Here's that part (the real body of the project.)
Code
<rules> <if Spell="$PageTrig"> <if advanced='"$SJswitch" == "1"'> <if mainjob="RUN"> <action type="command">input /macro book 4;input /macro set 1;input /echo Rune Fencer macros equipped!;</action> </if> <elseif mainjob="WAR"> <action type="command">input /macro book 1;input /macro set 1;input /echo Warrior macros equipped!;</action> </elseif> <elseif mainjob="MNK"> <action type="command">input /macro book 2;input /macro set 1;input /echo Monk macros equipped!;</action> </elseif> <elseif mainjob="WHM"> <action type="command">input /macro book 3;input /macro set 1;input /echo White Mage macros equipped!;</action> </elseif> <elseif mainjob="RDM"> <action type="command">input /macro book 5;input /macro set 1;input /echo Red Mage macros equipped!;</action> </elseif> <elseif mainjob="THF"> <action type="command">input /macro book 6;input /macro set 1;input /echo Thief macros equipped!;</action> </elseif> <elseif mainjob="PLD"> <action type="command">input /macro book 7;input /macro set 1;input /echo Paladin macros equipped!;</action> </elseif> <elseif mainjob="DRK"> <action type="command">input /macro book 8;input /macro set 1;input /echo Dark Knight macros equipped!;</action> </elseif> <elseif mainjob="BST"> <action type="command">input /macro book 9;input /macro set 1;input /echo Beastmaster macros equipped!;</action> </elseif> <elseif mainjob="BRD"> <action type="command">input /macro book 10;input /macro set 1;input /echo Bard macros equipped!;</action> </elseif> <elseif mainjob="RNG"> <action type="command">input /macro book 11;input /macro set 1;input /echo Ranger macros equipped!;</action> </elseif> <elseif mainjob="SAM"> <action type="command">input /macro book 12;input /macro set 1;input /echo Samurai macros equipped!;</action> </elseif> <elseif mainjob="NIN"> <action type="command">input /macro book 13;input /macro set 1;input /echo Ninja macros equipped!;</action> </elseif> <elseif mainjob="DRG"> <action type="command">input /macro book 14;input /macro set 1;input /echo Dragoon macros equipped!;</action> </elseif> <elseif mainjob="SMN"> <action type="command">input /macro book 15;input /macro set 1;input /echo Summoner macros equipped!;</action> </elseif> <elseif mainjob="BLU"> <action type="command">input /macro book 16;input /macro set 1;input /echo Blue Mage macros equipped!;</action> </elseif> <elseif mainjob="COR"> <action type="command">input /macro book 17;input /macro set 1;input /echo Corsair macros equipped!;</action> </elseif> <elseif mainjob="PUP"> <action type="command">input /macro book 18;input /macro set 1;input /echo Puppetmaster macros equipped!;</action> </elseif> <elseif mainjob="DNC"> <action type="command">input /macro book 19;input /macro set 1;input /echo Dancer macros equipped!;</action> </elseif> <elseif mainjob="SCH"> <action type="command">input /macro book 20;input /macro set 5;input /echo Scholar macros equipped!;</action> </elseif> <elseif mainjob="GEO"> <action type="command">input /macro book 5;input /macro set 5;input /echo Geomancer macros equipped!;</action> </elseif> <elseif mainjob="BLM"> <action type="command">input /macro book 20;input /macro set 1;input /echo Black Mage macros equipped!;</action> </elseif> <var cmd="set SJswitch 0" /> <cancelspell /> <return/> </if> <elseif subjob="WAR"> <action type="command">input /macro book 1;input /macro set 10;input /echo Warrior macros equipped!;</action> </elseif> <elseif subjob="MNK"> <action type="command">input /macro book 2;input /macro set 10;input /echo Monk macros equipped!;</action> </elseif> <elseif subjob="WHM"> <action type="command">input /macro book 3;input /macro set 10;input /echo White Mage macros equipped!;</action> </elseif> <elseif subjob="RUN"> <action type="command">input /macro book 4;input /macro set 10;input /echo Rune Fencer macros equipped!;</action> </elseif> <elseif subjob="RDM"> <action type="command">input /macro book 5;input /macro set 3;input /echo Red Mage macros equipped!;</action> </elseif> <elseif subjob="GEO"> <action type="command">input /macro book 5;input /macro set 10;input /echo Geomancer macros equipped!;</action> </elseif> <elseif subjob="THF"> <action type="command">input /macro book 6;input /macro set 10;input /echo Thief macros equipped!;</action> </elseif> <elseif subjob="PLD"> <action type="command">input /macro book 7;input /macro set 10;input /echo Paladin macros equipped!;</action> </elseif> <elseif subjob="DRK"> <action type="command">input /macro book 8;input /macro set 10;input /echo Dark Knight macros equipped!;</action> </elseif> <elseif subjob="BST"> <action type="command">input /macro book 9;input /macro set 10;input /echo Beastmaster macros equipped!;</action> </elseif> <elseif subjob="BRD"> <action type="command">input /macro book 10;input /macro set 10;input /echo Bard macros equipped!;</action> </elseif> <elseif subjob="RNG"> <action type="command">input /macro book 11;input /macro set 10;input /echo Ranger macros equipped!;</action> </elseif> <elseif subjob="SAM"> <action type="command">input /macro book 12;input /macro set 10;input /echo Samurai macros equipped!;</action> </elseif> <elseif subjob="NIN"> <action type="command">input /macro book 13;input /macro set 10;input /echo Ninja macros equipped!;</action> </elseif> <elseif subjob="DRG"> <action type="command">input /macro book 14;input /macro set 10;input /echo Dragoon macros equipped!;</action> </elseif> <elseif subjob="SMN"> <action type="command">input /macro book 15;input /macro set 10;input /echo Summoner macros equipped!;</action> </elseif> <elseif subjob="BLU"> <action type="command">input /macro book 16;input /macro set 10;input /echo Blue Mage macros equipped!;</action> </elseif> <elseif subjob="COR"> <action type="command">input /macro book 17;input /macro set 10;input /echo Corsair macros equipped!;</action> </elseif> <elseif subjob="PUP"> <action type="command">input /macro book 18;input /macro set 10;input /echo Puppetmaster macros equipped!;</action> </elseif> <elseif subjob="DNC"> <action type="command">input /macro book 19;input /macro set 10;input /echo Dancer macros equipped!;</action> </elseif> <elseif subjob="SCH"> <action type="command">input /macro book 20;input /macro set 10;input /echo Scholar macros equipped!;</action> </elseif> <elseif subjob="BLM"> <action type="command">input /macro book 20;input /macro set 3;input /echo Black Mage macros equipped!;</action> </elseif> <var cmd="set SJswitch 1" /> <cancelspell /> <return/> </if>
Now, if you reload your SpellCast and hit those Switch macros, it should switch you between the two sets!
The beauty of this is that no matter what you switch your subjob to, this xml will move to the proper page when you hit your Switch macro! It will work for all job/subjob combinations and you won't have to tend 20 different /dnc sets for each main that uses /dnc! You need to up date 1 thing in /dnc? Go to book 19, page 10 and change it, any job using /dnc will reflect the update!
Benefits:
-40 macro slots available (20 main/20 sub)
-Automatically configures to ALL job/subjob combos
-Easy maintenance of subjob macro sets
-Subjob buttons always in same spots, less fumbling when changing (/dnc macros always in same position, whether NIN/DNC, PLD/DNC, THF/DNC, etc.)
Downsides:
-Cannot preview macros in other set until switching
-Significant investment to change from old way to this new way
In conclusion:
This new setup helps simplify the ever-increasing complication of leveling multiple jobs and subjobs. I believe this to be the best way of handling multiple job/subjob combinations. Please try it out and let me know what you think! Constructive criticism and feedback welcomed!
See you around!