|
Spellcast for Dummies!
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-21 20:28:42
Work in progress.
When I came back to FFXI I needed new Macros and everyone I talked to, recommended just using Spellcast. It's been around for a while, but every time I had looked at it in the past, it made my eyes bleed, and I was just overwhelmed with all of the information, possibilities and furthermore confused by the many different ways, people were accomplishing the same task. Even while reading through the guides, they appeared as if they weren't actually directed at people like me. (Completely clueless) The second option was to just copy/paste someone elses Spellcast and edit it to your liking, but again some of them are so complex, I was intimidated to even edit a simple line, yet alone attempt to comprehend what they next 870 lines did.
So I'm going to provide a simple guide, that I would have personally liked to see myself. Spellcast for Dummies!
Step 1: Windower 4
Download Here: http://www.windower.net/
This is the program that makes all of the fancy applications work.
Step 2: Notepad ++
Download Here: http://notepad-plus-plus.org/
This is the program that you use to actually create and edit the 'code' that spellcast uses and runs off of. For all intents and purposes, it's no more than a word document really.
Step 3: Spellcast
Open Windower4
The default tab is listed as "Profiles"
Next to it you'll see "Addons" and "Plugins"
You can automatically Download any Addon or Plugin here
"Spellcast" is listed under "Plugins"
Download it, or make sure it's in the 'on' position
Step 4: Finding your spellcast script
Right click "start"
Select "Explore" (Windows Explorer)
Locate your Windower4 Folder
Default should be as follows: (I'm on Windows 7)
Local Disk C:
Program Files (x86)
Windower4
Plugins
Spellcast
Now, in here you should see an XML file listed as your Character name. At this point, I recommend you rename the file, and use specific files for each job. For the time being, just name the file: Cambion_Dnc
*Use your own Character name of course :)
*Each file you create for other jobs, will be named Cambion_War etc and Spellcast will automatically load the correct spellcast, as soon as you change jobs in your mog house.
If you attempt to open it, it will open in an Internet Browser
In order to actually edit the Spellcast file you will need to Right Click "Open With > Notepad ++"
Step 5: Editing your Spellcast
Once inside you'll see some lines, spaced out, indented etc. Feel free to just ignore it all at for the time being.
We're going to start with an extremely simple build, and slowly add on.
Part 1: Gear Sets
To begin Delete everything inside your current XML and paste the following into the document:
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
</group>
</sets>
<rules>
</rules>
</spellcast>
Okay. The above spellcast won't actually do anything.
But this is where you put your gear sets, and name them.
I name mine very simple:
"Idle" is the gear that will be equipped when you are just standing around, not engaged on a mob.
"TP" is the gear that will be equipped when you are engaged to a mob.
"Exen" is the gear that will be equipped prior to using Exenterator (Can be any WS)
You can use any type of gear you want in these situations, you can even use the same gear if you want, and copy/paste it into all 3 of these sets, until you get more gear. Personally I idle in Regen, -Physical Damage Taken, or Evasion gear and movement speed. Doesn't matter what you use, just go ahead and insert your own gear in each respective slot, for each set. (We'll add more sets later, but if you're feeling saucy go ahead copy/paste a set, change the name to any WS you want, and apply the correct gear. You can do this for any specific set you have, NOT just Weapon Skills. Waltz Sets, Evasion Sets, -PDT sets etc and so on.
*The tabs and spaces don't mean anything and are not required for correct execution or formatting. It just makes it easy to see where you Open and Close certain things, to prevent errors. (A Single error in your XML, and it won't load, meaning you can't use any of it.)
Because of this, I recommend you only add one thing at a time, and load it to verify it works, before you move on.
Alternatively, if you have/use Firefox browser you can open the file normally, and check for errors in your internet browser.
Part 2: Telling the gear sets how & when to be applied
This is considered a "rule" and therefor goes in between the
<rules>
</rules>
section posted above.
Paste the following between the rules lines: Code <if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
In short, the above just tells spellcast what "set" to "equip" based on your current "status",
which at this current point, it just engaged, or not engaged.
If you don't care how or why it works, you just want it to work, then skip to part 3. If you want to understand what it's actually doing, check the spoiler.
In an attempt to turn this code into a logical process that we can read & understand, I think of it like this:
If my status is idle
Equip the set named "Idle"
If my status is engaged
Equip the set named "TP"
The "When=", is just a check point
So anytime you go from engaged to disengaged(idle) spellcast detects that, and will change your gear to the corresponding gearset.
The second part of it, is 'aftercast' which means that after every spell you cast, or job ability you preform, spellcast checks if you are engaged or not, and equips the set you dictate.
So... it will look like this:
You're standing around.
As soon as you 'Attack' a Mob (whether you are actually attacking or not, your weapons just have to be drawn)
Spellcast will detect that you are 'engaged' and change your gear to the set named 'TP'.
If you disengage, it will automatically detect this, and equip your gear set names 'Idle'.
After every spell or Job Ability you preform, spellcast will check if you are engaged or idle.
Immediately after the Spell, Job Ability or Weaponskill is completed it will equip a gear set, that correspends to your current status.
If you're engaged it will equip "TP"
Or 'else' it will equip "Idle"
That's how I view the "if" and "else" lines, so that I can read them as a logical step by step process.
Part 3: Weaponskills
Ok, now we'll input our Weaponskills and the gear 'set' associated with each one.
This also goes in between the <Rules> section, so place it just below the first rule we made:
The <!--- Stuff --> is just a note to yourself, that helps you easily locate specific sections later on. They are not needed, so you can delete them if you desire.
Code
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
Now, I only have these 4 listed, but you can add as many as you want, there's no limit.
if spell="This is where you put the name of the Weaponskill"
Equip when="precast" just means you're installing the set before the weaponskill.
*It sounds silly for WSs, but for mages, you can use this to equip things PreCast, MidCast, and Aftercast.
set="This is the name of the Gear set you want equipped"
This "Set" is whatever you named it in part 1.
Now, if you did the first 3 correctly, you'll have a very simple spellcast that will work properly for gear swaps for engaged, idle and WS's. Should look like this:
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
</group>
</sets>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
</rules>
</spellcast>
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-21 20:28:51
Part 4?: Groups
So, if you played around with the spellcast above, you probably noticed the same thing I did, "Crap, how do I make it keep my Evasion set on?" Because after every action, it automatically changes your gear to "TP" regardless of what gear you may have switched manually or with an old school FFXI or windower macro.
This is done by creating a new "Group".
If you look closely in our spellcast above, we already have a group we named 'Dnc' on Line 5 of our script:
<group name="DNC" Default="true">
Notice that this is just under the line <sets> line, and make a mental note that <sets> and <set> are different.
<set> if for a single gear set. (For us it's "Tp" "Idle" and "Exen")
<sets> is all inclusive of ALL of your sets (it hold all 3 of the above)
The above is just to make sure you're discerning the differences between specific tags, and that you follow along, with where you new "group" will go, as well as all future groups; inside the <sets> lines.
Okay, down to the nitty gritty.
At this point, all we're really doing, is adding a new <group> of gear, just below our other <group>.
In our current format, you see our first </group> ends at line 54.
Just beneath it, is our </sets> on line 55.
So, we want our new "group" to go in between these two lines.
I have named the group "Eva" for Evasion, but you can use this for any specific situation you might have, as well as multiple 'groups'. I actually use two, Eva, and PDT. But for now, we're just going to do one. Once you get comfortable with that, you should be able to easily add as many 'groups' for as many situations that you need.
The code to be copied in is this:
Code <group name="Eva" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Torero Torque</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Blur Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
</group>
So, you see I have the "Group" named Eva.
The "Set" is still named "TP" because it follows the rules of "If engaged equip "TP", remember?
All this "group" does, is alter your "TP" set, when you hit a specific macro that tells it to.
The inherit="Dnc" line, just means it's going to inherit all other 'sets' from your original "Dnc" group.
*This just means, it's still going to use your "Exen" and "Idle" sets that are listed in your "Dnc" group.
You can put all 3 sets here if you want, but personally, I only care that it changes my "TP" gear.
I still want to Idle, and WS in the same exact gear as previously.
The above is 25% Haste, +50 Agi, and 52 Evasion. I'm sure there's far better, but this is what I currently use, just make sure you don't forget to change it to the gear you use.
Our new Script should look exactly like this:
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
</group>
<group name="Eva" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Torero Torque</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Blur Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
</group>
</sets>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
</rules>
</spellcast>
All we've really added is a single new gear set, but we put it inside of a "group".
Now, we need a way to Trigger this 'group' from within FFXI.
I'm sure there are a lot fancier and more efficient ways to do this, but this is how I do it:
If you're just coming into spellcast, I'm sure you had an old "TP Gear" Macro, and also a macro for your "Evasion Gear".
Keep those macro positions, and use them the exact same way you did before spellcast.
The only difference is what we write in those macros.
It's two simple lines, and all they do is tell Spellcast to change "group".
In FFXI open up your macros and make your "Normal Gear" Macro with 2 simple lines exactly as follows:
/sc group Dnc
/console update
That's it. The sc is just short for SpellCast, and the /update just forces spellcast to change gear, even without having to preform a Job Ability, Cast a spell, or engage a mob.
Now, for your "Evasion Gear" Macro, you do the same exact thing, but instead it will be:
/sc group Eva
/console update
Now, you have two macros, one that tells spellcast to you the Dnc group, and one that tells it to use the Eva group. Make sure you use the correct group name. If you've been switching names, then you have to use your own, or if you're doing this twice, one for -Physical Damamge Taken then just make sure you name the group, and the FFXI macro the same.
*Note
If you're like me, the first thing you did was go out and see if it works!
You're hitting your macro and... your gear isn't changing... What gives?
Remember, we're using the exact same 'Idle' and 'Exen' gear sets. Your gear will only change when spellcast knows you're using your 'TP' set, which we know is only used when we are 'engaged'. :)
*Another note
If you're already logged in to FFXI, changes you make to your spellcast aren't automatic.
You don't have to log out, just simply re-load spellcast:
//sc r
Which is just shorthand for SpellCast Reload.
This is how you make sure your spellcast loads correctly anyway, which you should always do after each change you make, to ensure you didn't break it! It's a lot easier to find a mistake, when you know it came from a very specific few lines, lol.
Part 5: Waltz'
If you're a quick learner, you probably already figured out how to do what you want for waltz, because it's essentially the same exact thing as a Weaponskill.
The code for a Waltz can go directly below your Weaponskills, (Within the <Rules> and </rules>) because it is just another <rule> and looks like this:
Code <!-- Waltzes -->
<if spell="Curing Waltz V">
<equip when="precast" set="Waltz1245" />
</if>
As you can see, this only covers Waltz 5.
You can add as many Waltz' as you want, and you don't have to make a new rule, you can add spells the the code above.
Each one is separated by a |
Which you can create by holding "Shift + \" (Just above 'Enter' on your keyboard)
So, to add all of your waltz' or perhaps specific waltz it will look like this:
Code <!-- Waltzes -->
<if spell="Curing Waltz V|Curing Waltz IV|Divine Waltz II|Divine Waltz|Curing Waltz II|Curing Waltz">
<equip when="precast" set="Waltz1245" />
</if>
First you'll notice I have this rule linking to a gear set called "Waltz1245" which doesn't exist yet. That is our next step!
Go back to the top of your spellcast, and we're going to add a new <set> to our original <group>. You can name it whatever you like, just make sure you use the same name in both the <set> and the rule where you tell it which <Set> to use.
Here is the set I use which should be pretty close to yours I assume: Code <set name = "Waltz1245" >
<ammo>Potestas Bomblet</ammo>
<head>Etoile Tiara</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
Again, make sure this is in your original <group> not the new one we made in Part 4.
The second thing you might notice, is that I do not have Waltz III included in this rule.
This is because when I'm using all other Waltz' NOT named III, I want to use my max potency gear.
When I'm spamming Waltz III on myself, I use my Anwig Salade with -2 Waltz Timer, to be efficient and to remain alive!
From here, you have three choices:
1: Add Waltz III to the rule we just made above and use Max Potency for all your Waltz'
2: Add Waltz III to the rule we just made above, but change your 'set' to use Anwig Salade and use -timer for all your Waltz'.
3: Create a second rule, specifically for Waltz III
1 & 2 are straight forward, but if you chose 3:
You're going to add a second rule, just beneath the Waltz Rule we just made a second ago. Code <if spell="Curing Waltz III">
<equip when="precast" set="Waltz3" />
</if>
Now, as we did before, we have to create a set named "Waltz3" so that this will work. You can copy and paste the exact set we used from Waltz1245 and just change the <head> equipment, but just in case:
Code <set name = "Waltz3" >
<ammo>Potestas Bomblet</ammo>
<head>Anwig Salade</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
Now you have 2 new rules, for Waltz.
One that used Maximum Potency for all Waltz.
And one that uses Potency + the -2 Delay Head Piece for Waltz III.
If you want to keep things simple, feel free to skip this part.
If you want to get a little fancy, this next rule is something I created when I noticed it bothering me in game.
Essentially, the problem I ran into, was when I'm tanking, and taking damage, I clearly want to use my Anwig Salade, which was the point of using it in my Waltz III macro. But what I quickly realized, was that when I was inbetween reives and wanted to use Waltz III on myself, it was still using my Anwig Salade, even though I didn't have to worry or care about my Ability Timer.
In short, I only want to use my Anwig Salade for Waltz III IF I'm engauged to a mob. Makes sense right?
If that makes logical sense to you, then you can replace the Waltz III rule above with this: (Note that the other rule doesn't need to be changed, we still want to use Max Potency on those) Code <if spell="Curing Waltz III">
<if status="engaged">
<equip when="precast" set="Waltz3" />
</if>
<else>
<equip when="precast" set="Waltz1245" />
</else>
</if>
Logical Breakdown:
If the Spell is Waltz III
A: If I'm engaged equip set "Waltz3" (Our -timer set)
B: Or <else> equip my "Waltz1245" set (Max Potency)
In all honesty, this is one of the things that made the most sense to me.
Do Option 1, or else do option 2.
So assuming you followed my 2 Waltz Set rules, our current Script should look exactly like this:
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>$TPNeck</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>$TPBack</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
<set name = "Waltz3" >
<ammo>Potestas Bomblet</ammo>
<head>Anwig Salade</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
<set name = "Waltz1245" >
<ammo>Potestas Bomblet</ammo>
<head>Etoile Tiara</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
</group>
<group name="Eva" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Torero Torque</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Blur Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
</group>
</sets>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
<!-- Waltzes -->
<if spell="Curing Waltz V|Curing Waltz IV|Divine Waltz II|Divine Waltz|Curing Waltz II|Curing Waltz">
<equip when="precast" set="Waltz1245" />
</if>
<if spell="Curing Waltz III">
<if status="engaged">
<equip when="precast" set="Waltz3" />
</if>
<else>
<equip when="precast" set="Waltz1245" />
</else>
</if>
</rules>
</spellcast>
Next:
Part 6: More Sets and Single Piece Gear swaps
So, lets say you have a job ability where you only want to swap 1 piece of gear, and don't need to make an entire <Set>.
This is pretty simple and straight forward, and I'm going to continue with our Waltz section, and now create a Healing Waltz macro, with a single gear swap. (Anwig Salade, for the -timer delay)
Just below our two Waltz Rules go ahead and put: Code <if spell="Healing Waltz">
<equip when="precast">
<head>Anwig Salade</head>
</equip>
</if>
There's not a whole lot to explain here.
If the spell is healing waltz, equip Anwig Salade before the cast.
Only thing worthy of note, is that you aren't limited to a single gear swap, you can just add another line, with the right <slot>Item Name</slot>
Knowing this, we're going to go ahead and make a handful of rules right now.
Don't get overwhelmed, this is just a lot of single rules, for the things we do on a regular basis.
You don't have to add any of these if you don't like. Code <!-- Samba -->
<if spell="Drain Samba III|Drain Samba II|Haste Samba">
<equip when="precast">
<head>Dancer's Tiara</head>
</equip>
</if>
<!-- Flourish -->
<if spell="Reverse Flourish">
<equip when="precast">
<hands>Charis Bangles +2</hands>
</equip>
</if>
<if spell="Climactic Flourish">
<equip when="precast">
<head>Charis Tiara +2</head>
</equip>
</if>
<if spell="Violent Flourish">
<equip when="precast">
<body>Etoile Casaque</body>
</equip>
</if>
<!-- Steps -->
<if spell="Feather Step">
<equip when="precast">
<feet>Charis Shoes +2</feet>
</equip>
</if>
<!-- Jigs -->
<if spell="Spectral Jig">
<equip when="precast">
<legs>Etoile Tights +2</legs>
</equip>
</if>
<!-- Utsusemi -->
<if spell="Utsusemi: Ni|Utsusemi:Ichi">
<equip when="precast">
<neck>Magoraga Beads</neck>
<lear>Loquac. Earring</lear>
<waist>Twilight Belt</waist>
</equip>
</if>
Again, this is no different, just different abilities, with different gear swaps.
You can just copy and past that all into your spellcast and you're good to go.
All of your macros and gear swaps should now be able to run through spellcast, the only thing your FFXI macros need to have, are the physical command, and spellcast will do the rest of the work.
This is nice, because you can save your spellcast script somewhere public online, backup all of your FFXI macros to the server, and have 100% complete use of all of your gear swaps, regardless of where you are, or who's computer you use. (Of course they need windower and spellcast, but you can just drop your script into their folder, and it will work)
Additionally, I'm going to add my other Weapon Skill gear sets now, so that Evis, PK and AEdge will have corresponding gear sets, and the clutter shouldn't confuse anyone.
Our current progress should look exactly like this:
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>$TPNeck</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>$TPBack</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Evis" >
<ammo>Charis Feather</ammo>
<head>Thurandaut Chapeau</head>
<neck>Rancor Collar</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
<set name = "AEdge" >
<ammo>Potestas Bomblet</ammo>
<head>Chimera Hairpin</head>
<neck>Stoicheion Medal</neck>
<lear>Hecate's Earring</lear>
<rear>Novio Earring</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "PK" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Soil Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Rancorous Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Waltz3" >
<ammo>Potestas Bomblet</ammo>
<head>Anwig Salade</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
<set name = "Waltz1245" >
<ammo>Potestas Bomblet</ammo>
<head>Etoile Tiara</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
</group>
<group name="Eva" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Torero Torque</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Blur Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
</group>
</sets>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
<!-- Samba -->
<if spell="Drain Samba III|Drain Samba II|Haste Samba">
<equip when="precast">
<head>Dancer's Tiara</head>
</equip>
</if>
<!-- Flourish -->
<if spell="Reverse Flourish">
<equip when="precast">
<hands>Charis Bangles +2</hands>
</equip>
</if>
<if spell="Climactic Flourish">
<equip when="precast">
<head>Charis Tiara +2</head>
</equip>
</if>
<if spell="Violent Flourish">
<equip when="precast">
<body>Etoile Casaque</body>
</equip>
</if>
<!-- Steps -->
<if spell="Feather Step">
<equip when="precast">
<feet>Charis Shoes +2</feet>
</equip>
</if>
<!-- Jigs -->
<if spell="Spectral Jig">
<equip when="precast">
<legs>Etoile Tights +2</legs>
</equip>
</if>
<!-- Utsusemi -->
<if spell="Utsusemi: Ni|Utsusemi:Ichi">
<equip when="precast">
<neck>Magoraga Beads</neck>
<lear>Loquac. Earring</lear>
<waist>Twilight Belt</waist>
</equip>
</if>
</rules>
</spellcast>
Tomorrow I'll get into Cancel spell and variables.
[+]
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-21 20:28:58
Part 7: Cancel
Cancel is another Plugin that you'll need to download through WIndower 4, just like we did with Spellcast. If you already have it downloaded, just ensure that the switch is in the 'on' position.
Cancel is exactly what it sounds like. It's cancels spells, or in our case, abilities. I'm not sure there's another job that benefits more from Cancel than Dancers, but I could be mistaken.
As a Dancer we have multiple abilities, that restrict other abilities.
Fan Dance means we can't Samba, it also means we can't Saber Dance.
Saber Dance means we can't cure, or use Fan Dance.
Ever been using Saber Dance, pull hate, or link mobs, and needed to pop a quick fan dance or cure to save your life, and couldn't because you have to manually cancel the icon in FFXI? Cancel simply does this for you, no more, no less.
This text will also go in the rules section, just below our Waltz' from above! Code <!-- Dances -->
<if spell="Saber Dance">
<if buffactive="Fan Dance">
<cmd when="precast">cancel 411</cmd>
</if>
</if>
<if spell="Fan Dance">
<if buffactive="Saber Dance">
<cmd when="precast">cancel 410</cmd>
</if>
</if>
<if Type="Waltz" BuffActive="Saber Dance">
<command when="precast">cancel 410</command>
<castdelay delay="0.5" />
</if>
<elseif spell="Trance" BuffActive="Saber Dance">
<command when="midcast">cancel 410</command>
</elseif>
<elseif Type="Samba" BuffActive="Fan Dance">
<command when="precast">cancel 411</command>
<castdelay delay="0.5" />
</elseif>
The first three are kind of obvious.
If I use 'Saber Dance'
and 'Fan Dance' is active
Cancel 411 (This is the code for Fan Dance)
The next one is the exact opposite, if you try to use Fan Dance, and the game sees that you already have Saber Dance active, it will cancel 401 (Saber Dance). It automatically cancels the current ability, and just proceeds with using the ability you originally tried to activate.
The third one, is for Cures, that instead of manually fumbling through your icons to try and cancel Saber Dance so that you can cure yourself, it will automatically cancel it, and then follow through with the cure you initiated. I found that these 3 alone, greatly helped promote the use Saber Dance more often because of how simple it is, and how much less risk is involved. This allows you to be more efficient as a DD, when curing isn't needed, and you can ride it out, until the last second you know you need a cure.
The fourth one is for our 2 hour, where if you use Trance, to cancel Saber Dance (so that you can cure yourself)
Admittedly this part I stole from someone else's spellcast, I've never personally use it, in fact, I'm not sure I've ever 2houred on Dance to be honest. I'm also not sure why the fifth part is within the 4th part, but I didn't want to screw with it.
Having said that, the fifth part, is just to cancel Fan Dance, when you try to use a Samba.
Part 9: Combining Cancel and Small Gear Swaps
This part will be for our Jigs.
Firstly, for our Jigs we want to make sure we /equip our Etoile Tights +2, to extend the duration.
Secondly, we want to cancel "Sneak" any time we use spectral jig.
We do this because Sneak doesn't overwrite itself, nor does Spectral Jig overwrite sneak.
This wouldn't be a big deal, but unfortunately for Dancers, if the Sneak part of our Spectral Jig fails, so with the Invisible part.
If you've ever ran into a groups of mobs, assuming you had Sneak & Invisible because you just used your Jig, and then shortly died, then you know exactly why this is a helpful tool, to ensure you never make that silly mistake again.
Code <!-- Jigs -->
<elseif spell="*Jig*">
<if spell="Spectral Jig">
<if buffactive="sneak">
<cmd when="precast">cancel 71</cmd>
</if>
<equip when="precast">
<legs>Etoile Tights +2</legs>
</equip>
</if>
</elseif>
You'll notice that if spell = *Jig*, that Jig has * * around it.
All this does, is apply it to every "Jig" we have, regardless of it's specific name.
So... If we use a "jig"
And that jig is "Spectral Jig"
And the buff known as "sneak" is already active
Cancel 71 (Sneak)
Then /equip Etoile Legs +2
Now, we're going to do the same exact thing for Utsusemi.
Code
<!-- Utsusemi -->
<elseif spell="Utsusemi*">
<if spell="Utsusemi: Ichi">
<midcastdelay delay="3.0" />
<cmd when="midcast">cancel 66</cmd>
<equip when="precast">
<neck>Magoraga Beads</neck>
<lear>Loquac. Earring</lear>
<waist>Twilight Belt</waist>
</equip>
</if>
</elseif>
If we use Utsusemi* (Of any kind)
At midcast (where we pre-define midcast at exactly 3 seconds)
Cancel 66 (Utsusemi: Ni)
And equip three gear pieces before the cast
This way we never have to worry about the perfect timing for shadows, or whether Ich i will overwrite Ni, whether the mob misses, etc.
If Ni is up, and you cast Ichi, it will automatically cancel Ni 3 seconds into your cast, to ensure you don't get the 'No effect' slap in the face, and your shadows won't fail.
*I haven't actually tested this yet, but it follows the exact same rules as our previous Jig rules, so I'm not sure why it wouldn't, I'll try to get verification in a minute.
*Note: For Jig we used 2 *, once before, one after.
For Utsusemi we only used 1 after.
To be perfectly honest, I'm not positive why, but I assume it's because:
*Jig* has to account for alternate names before, and after 'Jig'
Whereas all Utsusemi, is before the name that follows.
* = anything
So:
*Anything Jig
Utsusemi *Anything
For people who might want to use a full 'set' for Utsusemi
as well as people who want to use 2 sets, 1 for Pre-cast, 1 for Mid cast. *****
Without Cancel Spell Code
<!-- Utsusemi -->
<if spell="Utsusemi: Ni|Utsusemi:Ichi">
<equip when="precast" set="PreCastNameHere"/>
<equip when="midcast" set="MidCastNameHere"/>
</equip>
</if>
With Cancel Spell Code
<!-- Utsusemi -->
<elseif spell="Utsusemi*">
<if spell="Utsusemi: Ichi">
<midcastdelay delay="3.0" />
<cmd when="midcast">cancel 66</cmd>
<equip when="precast" set="PreCastNameHere"/>
<equip when="midcast" set="MidCastNameHere"/>
</equip>
</if>
</elseif>
*****
Part 9: Useful Step Tool
This is for Presto, I'm not sure how other people decide when or how to use presto, but prior to spellcast, I just had it in my Step Macro, and it always attempted to use it, with a /wait 1 in between the lines. This caused a 1 second wait on every step, which is not very efficient. This kinda sorta eliminates that, but to be honest, it isn't as quick as I had hoped, and sometimes it feels like it's still always waiting to attempt Presto. Perhaps someone can chime in on a more time effective way to do this.
But regardless this is what I currently use: Code <!-- Steps -->
<elseif spell="*step">
<if notBuffActive="Presto" >
<action type = "CastDelay" delay = "2"/>
<action type = "Command" when = "Precast">input /raw /ja Presto <me></action>
</if>
</elseif>
<if spell="Feather Step">
<equip when="precast">
<feet>Charis Shoes +2</feet>
</equip>
</if>
If I use a step
And Presto is not active
Attempt to use presto
And
If the spell is Feather Step
/Equip Charis Shoes +2 before the spell/step.
After doing this, you can change your FFXI step macro to just a single line of:
/ja "Whatever step you want" <t>
and it will automatically attempt Presto if it isn't already up, and equip your shoes if the Step used was Feather.
There are some scripts, that do some fancy things for steps, like automatically rotate them and I think someone created an addon that actually keeps track of what level 'daze' the mob already has on it, but I don't use either of these and I'm not sure we should get into it.
At this current point, assuming you've done everything I've done, our spellcast should looked extremely similar to this:
*Note that you may have listed Certain Job Abilities in a different order than I did, the order doesn't matter.
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Evis" >
<ammo>Charis Feather</ammo>
<head>Thurandaut Chapeau</head>
<neck>Rancor Collar</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
<set name = "AEdge" >
<ammo>Potestas Bomblet</ammo>
<head>Chimera Hairpin</head>
<neck>Stoicheion Medal</neck>
<lear>Hecate's Earring</lear>
<rear>Novio Earring</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "PK" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Soil Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Rancorous Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Waltz3" >
<ammo>Potestas Bomblet</ammo>
<head>Anwig Salade</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
<set name = "Waltz1245" >
<ammo>Potestas Bomblet</ammo>
<head>Etoile Tiara</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
</group>
<group name="Eva" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Torero Torque</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Blur Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
</group>
</sets>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
<!-- Waltzes -->
<if spell="Curing Waltz V|Curing Waltz IV|Divine Waltz II|Divine Waltz|Curing Waltz II|Curing Waltz">
<equip when="precast" set="Waltz1245" />
</if>
<if spell="Curing Waltz III">
<if status="engaged">
<equip when="precast" set="Waltz3" />
</if>
<else>
<equip when="precast" set="Waltz1245" />
</else>
</if>
<if spell="Healing Waltz">
<equip when="precast">
<head>Anwig Salade</head>
</equip>
</if>
<!-- Dances -->
<if spell="Saber Dance">
<if buffactive="Fan Dance">
<cmd when="precast">cancel 411</cmd>
</if>
</if>
<if spell="Fan Dance">
<if buffactive="Saber Dance">
<cmd when="precast">cancel 410</cmd>
</if>
</if>
<if Type="Waltz" BuffActive="Saber Dance">
<command when="precast">cancel 410</command>
<castdelay delay="0.5" />
</if>
<elseif spell="Trance" BuffActive="Saber Dance">
<command when="midcast">cancel 410</command>
</elseif>
<elseif Type="Samba" BuffActive="Fan Dance">
<command when="precast">cancel 411</command>
<castdelay delay="0.5" />
</elseif>
<!-- Samba -->
<if spell="Drain Samba III|Drain Samba II|Haste Samba">
<equip when="precast">
<head>Dancer's Tiara</head>
</equip>
</if>
<!-- Flourish -->
<if spell="Reverse Flourish">
<equip when="precast">
<hands>Charis Bangles +2</hands>
</equip>
</if>
<if spell="Climactic Flourish">
<equip when="precast">
<head>Charis Tiara +1</head>
</equip>
</if>
<if spell="Violent Flourish">
<equip when="precast">
<body>Etoile Casaque</body>
</equip>
</if>
<!-- Steps -->
<elseif spell="*step">
<if notBuffActive="Presto" >
<action type = "CastDelay" delay = "2"/>
<action type = "Command" when = "Precast">input /raw /ja Presto <me></action>
</if>
</elseif>
<if spell="Feather Step">
<equip when="precast">
<feet>Charis Shoes +2</feet>
</equip>
</if>
<!-- Jigs -->
<elseif spell="*Jig*">
<if spell="Spectral Jig">
<if buffactive="sneak">
<cmd when="precast">cancel 71</cmd>
</if>
<equip when="precast">
<legs>Etoile Tights +2</legs>
</equip>
</if>
</elseif>
<!-- Utsusemi -->
<elseif spell="Utsusemi*">
<if spell="Utsusemi: Ichi">
<midcastdelay delay="3.0" />
<cmd when="midcast">cancel 66</cmd>
<equip when="precast">
<neck>Magoraga Beads</neck>
<lear>Loquac. Earring</lear>
<waist>Twilight Belt</waist>
</equip>
</if>
</elseif>
</rules>
</spellcast>
At this point, we have a fully functioning spellcast script, that covers every job ability & every gear swap.
You can add whatever you need, but there's one more section after this, that we'll use to edit Spellcast, and that's variables. It's a little bit trickier, but very useful for special situations, that call for special gear changes. Still saving it for last.
Part 10: AutoExec and Automatic Macro Swaps
This part is quick and painless.
The only purpose of this, is to force FFXI to change your Current Macro Pallate, Book and Page, every time you change jobs.
So, every time you change your job to Dancer, it will move your Current Macros to "This Book" and "This Page"
Then any time you change to Warrior, it will swap them to "This other book" and "this other page"
It's easy, the coding is very straightforward and it's done with 'AutoExec'.
First download, install or turn on 'AutoExec' in the 'Plugin' tab of Windower.
Now open the file:
Right click "start"
Select "Explore" (Windows Explorer)
Default should be as follows: (I'm on Windows 7)
Local Disk C:
Program Files (x86)
Windower4
Plugins
AutoExec
And then you'll see another XML file, just like our spellcast file was.
Right Click, Open With Notepad ++ just like we've been doing thus far.
Inside you'll see some words. Ignore it all, delete it all and paste this into the file:
Code <?xml version="1.0" ?>
<autoexec>
<register silent="true" event="jobchangefull_war99/*">input /macro book 1;wait .1;input /macro set 1</register>
<register silent="true" event="jobchangefull_pld99/*">input /macro book 2;wait .1;input /macro set 1</register>
<register silent="true" event="jobchangefull_smn99/*">input /macro book 3;wait .1;input /macro set 1</register>
<register silent="true" event="jobchangefull_cor99/*">input /macro book 4;wait .1;input /macro set 1</register>
<register silent="true" event="jobchangefull_dnc99/*">input /macro book 5;wait .1;input /macro set 1</register>
<register silent="true" event="jobchangefull_whm99/*">input /macro book 6;wait .1;input /macro set 1</register>
<register silent="true" event="jobchangefull_bst99/*">input /macro book 7;wait .1;input /macro set 1</register>
</autoexec>
These are the 7 jobs I have, and clearly you'll edit it to match your own.
I'm going to dissect a single line, to ensure you understand what each part is related to.
<register silent="true" event="jobchangefull_war99/*">
input /macro book 1;
wait .1;
input /macro set 1</register>
Looks a lot less technical when you break it down like this, eh?
First, Change war99 to whatever job you want to list first
the /* means it applies regardless of your sub job.
*You can make it load different books/pages/palates for each sub job if you want to. I'll touch on that later.
The second line "input /macro book 1;
You change the 1 to the correct number that corresponds to your FFXI list.
In FFXI if you hit Menu > Right Arrow > Macros >You should have a list of 20 "books"
The top one is Book 1, the Bottom is Book 20.
Just match the first job you chose, to the correct number book where your macros are
Third line is a wait
Forth line inputs what 'Macro Set' on that specific book, it will automatically go to.
I have all of my Macro Sets on the #1 page, but some people have them in all different places. Just match yours up accordingly, repeat this process for each job you have and you'll never be on the wrong palate again. Quick, easy, and once you get use to it, very convenient.
Last and final Thing for our Spellcast is Variables...
DUN DUN DUN. Tomorrow!
[+]
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-21 20:29:04
Part 14: Variables
Variables are, in fact, a variable based on an active event.
They aren't very hard to setup, but they are a bit more complex, so I'm going to start with a single variable, that I personally use.
When Fan Dance is active
Change my "TP" Back to Shadow Mantle
And what the variable does, is essentially inputs the Shadow Mantle to your "TP" Set if "Fan Dance" is active or <else> use my Atheling Mantle.
The code for this, is split up into sections.
One of which goes into our <Variables> (Which we don't actually have yet)
The second goes in our <Rules> section
and the Third is a small altercation to our "TP" <set>
Still with me? lol. I'm going to do it one part at a time to make sure everyone can follow along.
Step one: Create a Variables Section!
We're going to put this at the Very top of our spell cast, directly below <spellcast> and directly above <sets>:
Code <variables clear="True">
</variables>
So that our first 6 lines actually look like this:
Code <?xml version="1.0" ?>
<spellcast>
<variables clear="True">
</variables>
<sets>
Now, here we're going to insert one Variable at a time, which goes between our <variable> tags.
Our first variable is as follows: Code <var name="TPBack">Atheling Mantle</var>
Variable Name=
"TPBack" (You can use any gear slot you want) TPNeck, TPlring, etc.
Atheling Mantle (This is the default piece of gear you want under normal conditions.
So, now were at this point: Code <?xml version="1.0" ?>
<spellcast>
<variables clear="True">
<var name="TPBack">Atheling Mantle</var>
</variables>
<sets>
Step 2: Adding the 'Rule'
This section goes immediately after our <rules> tag, above our engaged idle rules and will look like this: Code <!---------------Variable Gear -->
<if Buffactive="Fan Dance" >
<var cmd="set TPBack Shadow Mantle" />
</if>
<else>
<var cmd="set TPBack Atheling Mantle" />
</else>
And all this does, is set a simple rule:
<if> Fan Dance is Active
Set TPBack to Shadow Mantle
or <else>
Set TPBack to Atheling Mantle
Easy stuff right? The script follows a logical explanation in plain English. That's the stuff I like!
Part 3: Adding a variable Gear slot
Now that you have the Variable and the Rule set, now you have to change the <back> gear piece in your <set> to allow for it to be changed based on variables.
Probably the easiest part of this process, simply go to your "TP" gear set, and change your Gear Name to:
$TPBack
Code <set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>$TPBack</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
And you can see, that now instead of a static peice of gear in our back slot, we have $TPBack which just means that spellcast will fill that position, with a piece of gear, that changes based on the variables of FFXI. In this case, the variable is just Fan Dance.
Now... For those of you who don't currently use or need a variable, I'd still recommend you go through these steps. The only difference, would be, to put "Atheling Mantle" in both parts of Step 2. This way, all of the code is already there, and at any given time, you can go back, and just change the name and/or gear slot to account for whatever piece you want to be a variable.
So, with a single variable, our Final version of spellcast will look like this: Code <?xml version="1.0" ?>
<spellcast>
<variables clear="True">
<var name="TPBack">Atheling Mantle</var>
</variables>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>$TPBack</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Evis" >
<ammo>Charis Feather</ammo>
<head>Thurandaut Chapeau</head>
<neck>Rancor Collar</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
<set name = "AEdge" >
<ammo>Potestas Bomblet</ammo>
<head>Chimera Hairpin</head>
<neck>Stoicheion Medal</neck>
<lear>Hecate's Earring</lear>
<rear>Novio Earring</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "PK" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Soil Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Rancorous Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Waltz3" >
<ammo>Potestas Bomblet</ammo>
<head>Anwig Salade</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
<set name = "Waltz1245" >
<ammo>Potestas Bomblet</ammo>
<head>Etoile Tiara</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
</group>
<group name="Eva" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Torero Torque</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Blur Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
</group>
</sets>
<rules>
<!---------------Variable Gear -->
<if Buffactive="Fan Dance" >
<var cmd="set TPBack Shadow Mantle" />
</if>
<else>
<var cmd="set TPBack Atheling Mantle" />
</else>
<!--------------Status Rules -->
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
<!-- Waltzes -->
<if spell="Curing Waltz V|Curing Waltz IV|Divine Waltz II|Divine Waltz|Curing Waltz II|Curing Waltz">
<equip when="precast" set="Waltz1245" />
</if>
<if spell="Curing Waltz III">
<if status="engaged">
<equip when="precast" set="Waltz3" />
</if>
<else>
<equip when="precast" set="Waltz1245" />
</else>
</if>
<if spell="Healing Waltz">
<equip when="precast">
<head>Anwig Salade</head>
</equip>
</if>
<!-- Dances -->
<if spell="Saber Dance">
<if buffactive="Fan Dance">
<cmd when="precast">cancel 411</cmd>
</if>
</if>
<if spell="Fan Dance">
<if buffactive="Saber Dance">
<cmd when="precast">cancel 410</cmd>
</if>
</if>
<if Type="Waltz" BuffActive="Saber Dance">
<command when="precast">cancel 410</command>
<castdelay delay="0.5" />
</if>
<elseif spell="Trance" BuffActive="Saber Dance">
<command when="midcast">cancel 410</command>
</elseif>
<elseif Type="Samba" BuffActive="Fan Dance">
<command when="precast">cancel 411</command>
<castdelay delay="0.5" />
</elseif>
<!-- Samba -->
<if spell="Drain Samba III|Drain Samba II|Haste Samba">
<equip when="precast">
<head>Dancer's Tiara</head>
</equip>
</if>
<!-- Flourish -->
<if spell="Reverse Flourish">
<equip when="precast">
<hands>Charis Bangles +2</hands>
</equip>
</if>
<if spell="Climactic Flourish">
<equip when="precast">
<head>Charis Tiara +1</head>
</equip>
</if>
<if spell="Violent Flourish">
<equip when="precast">
<body>Etoile Casaque</body>
</equip>
</if>
<!-- Steps -->
<elseif spell="*step">
<if notBuffActive="Presto" >
<action type = "CastDelay" delay = "2"/>
<action type = "Command" when = "Precast">input /raw /ja Presto <me></action>
</if>
</elseif>
<if spell="Feather Step">
<equip when="precast">
<feet>Charis Shoes +2</feet>
</equip>
</if>
<!-- Jigs -->
<elseif spell="*Jig*">
<if spell="Spectral Jig">
<if buffactive="sneak">
<cmd when="precast">cancel 71</cmd>
</if>
<equip when="precast">
<legs>Etoile Tights +2</legs>
</equip>
</if>
</elseif>
<!-- Utsusemi -->
<elseif spell="Utsusemi*">
<if spell="Utsusemi: Ichi">
<midcastdelay delay="3.0" />
<cmd when="midcast">cancel 66</cmd>
<equip when="precast">
<neck>Magoraga Beads</neck>
<lear>Loquac. Earring</lear>
<waist>Twilight Belt</waist>
</equip>
</if>
</elseif>
</rules>
</spellcast>
From here, you can add as many variables that you want. I'm going to do one more to ensure you've got it.
This one will be for Saber Dance, and Etoile Tights +2
Step 1: Add the Variable Code <var name="TPLegs">Etoile Tights +2</var>
So the top of our script now looks like: Code <?xml version="1.0" ?>
<spellcast>
<variables clear="True">
<var name="TPBack">Atheling Mantle</var>
<var name="TPNeck">Charis Necklace</var>
</variables>
<sets>
Step 2: Add the Rule
Code <if Buffactive="Saber Dance" >
<var cmd="set TPLegs Etoile Tights +2" />
</if>
<else>
<var cmd="set TPLegs Charis Tights +2" />
</else>
I put it just below our first rule, so our section now looks like:
Code <!---------------Variable Gear -->
<if Buffactive="Fan Dance" >
<var cmd="set TPBack Shadow Mantle" />
</if>
<else>
<var cmd="set TPBack Atheling Mantle" />
</else>
<if Buffactive="Saber Dance" >
<var cmd="set TPLegs Etoile Tights +2" />
</if>
<else>
<var cmd="set TPLegs Charis Tights +2" />
</else>
Then edit your "TP" set for the variable piece:
Code <set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>$TPBack</back>
<waist>Twilight Belt</waist>
<legs>$TPLegs</legs>
<feet>Charis Shoes +2</feet>
</set>
Keep in mind, you can add multiple variables, for each rule,
but know that each piece needs it's own variable at the top section.
For example, for Fan Dance if you want to use multiple swaps it will look like this:
Code <if Buffactive="Fan Dance" >
<var cmd="set TPNeck Wiglen Gorget" />
<var cmd="set TPBack Shadow Mantle" />
<var cmd="set TPlring Dark Ring" />
</if>
<else>
<var cmd="set TPNeck Charis Necklace" />
<var cmd="set TPBack Atheling Mantle" />
<var cmd="set TPlring Rajas Ring" />
</else>
And each of these 3 slots, will require it's own variable up top, and the $TPGear in your TP set.
If you want your 'Idle' set to follow the same variable rules, you can also need to place the $TPGear into your "Idle" <set> but you don't have to re-do any variables, or rules for this.
Part 15: WeaponSkill Delay
Previously, I forgot this, because it was recommended by Sylow, and at the time wasn't needed to operate correctly. (Still isn't, but this is future proofing)
If you look at our WeaponSkill segment you see we have it listed like this: Code <!--------------Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
And you see, that the 3rd line, references a $Delay-JA.
If the variable doesn't exist, it defaults to zero, or doesn't apply which will and does work fine. But, if you ever want to add a small delay, for lag, ping, or connection issues, that perhaps result in not all gear getting equipped in time, we're going to add a single variable at the very top of our <variables> so that you can do this, if you ever need to.
Code <var name="Delay-JA">0</var>
Here, he can change the 0, to any delay you need. Some recommend a .5, possibly higher, lower, a lot use the 0. The important part, is you have this line, and by changing that 0, it will automatically apply the same delay to every Weaponskill we have listed, in a single edit.
So... The GRAND FINALE!Code <?xml version="1.0" ?>
<spellcast>
<variables clear="True">
<var name="Delay-JA">0</var>
<var name="TPNeck">Charis Necklace</var>
<var name="TPBack">Atheling Mantle</var>
<var name="TPlring">Rajas Ring</var>
</variables>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>$TPNeck</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>$TPBack</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Evis" >
<ammo>Charis Feather</ammo>
<head>Thurandaut Chapeau</head>
<neck>Rancor Collar</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
<set name = "AEdge" >
<ammo>Potestas Bomblet</ammo>
<head>Chimera Hairpin</head>
<neck>Stoicheion Medal</neck>
<lear>Hecate's Earring</lear>
<rear>Novio Earring</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "PK" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Ocelomeh Harness</body>
<hands>Mustela Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Kacura Leggings +1</feet>
</set>
<set name = "Waltz3" >
<ammo>Potestas Bomblet</ammo>
<head>Anwig Salade</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
<set name = "Waltz1245" >
<ammo>Potestas Bomblet</ammo>
<head>Etoile Tiara +2</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Roundel Earring</rear>
<body>Dancer's Casaque</body>
<hands>Nomkahpa Mittens</hands>
<lring>Asklepian Ring</lring>
<rring>Valseur's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Dance Shoes</feet>
</set>
</group>
<group name="Eva" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Torero Torque</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Epona's Ring</rring>
<back>Blur Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Kacura Leggings +1</feet>
</set>
</group>
<group name="PDT" inherit="Dnc">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Wiglen Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>Dark Ring</lring>
<rring>Dark Ring</rring>
<back>Shadow Mantle</back>
<waist>Flume Belt</waist>
<legs>Charis Tights +2</legs>
<feet>Plumb Boots</feet>
</set>
</group>
</sets>
<rules>
<!---------------Variable Gear -->
<if Buffactive="Saber Dance" >
<var cmd="set TPNeck Charis Necklace" />
</if>
<else>
<var cmd="set TPNeck Charis Necklace" />
</else>
<if Buffactive="Fan Dance" >
<var cmd="set TPNeck Wiglen Gorget" />
<var cmd="set TPBack Shadow Mantle" />
<var cmd="set TPlring Jelly Ring" />
</if>
<else>
<var cmd="set TPNeck Charis Necklace" />
<var cmd="set TPBack Atheling Mantle" />
<var cmd="set TPlring Rajas Ring" />
</else>
<!---------------Status Rules -->
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!--------------Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
<!--------------Waltzes -->
<if spell="Curing Waltz V|Curing Waltz IV|Divine Waltz II|Divine Waltz|Curing Waltz II|Curing Waltz">
<equip when="precast" set="Waltz1245" />
</if>
<if spell="Curing Waltz III">
<if status="engaged">
<equip when="precast" set="Waltz3" />
</if>
<else>
<equip when="precast" set="Waltz1245" />
</else>
</if>
<if spell="Healing Waltz">
<equip when="precast">
<head>Anwig Salade</head>
</equip>
</if>
<!--------------Dances -->
<if spell="Saber Dance">
<if buffactive="Fan Dance">
<cmd when="precast">cancel 411</cmd>
</if>
</if>
<if spell="Fan Dance">
<if buffactive="Saber Dance">
<cmd when="precast">cancel 410</cmd>
</if>
</if>
<if Type="Waltz" BuffActive="Saber Dance">
<command when="precast">cancel 410</command>
<castdelay delay="0.5" />
</if>
<elseif spell="Trance" BuffActive="Saber Dance">
<command when="midcast">cancel 410</command>
</elseif>
<elseif Type="Samba" BuffActive="Fan Dance">
<command when="precast">cancel 411</command>
<castdelay delay="0.5" />
</elseif>
<!--------------Samba -->
<if spell="Drain Samba III|Drain Samba II|Haste Samba|Aspir Samba| Aspir Samba II">
<equip when="precast">
<head>Dancer's Tiara</head>
</equip>
</if>
<!--------------Flourish -->
<if spell="Reverse Flourish">
<equip when="precast">
<hands>Charis Bangles +2</hands>
</equip>
</if>
<if spell="Climactic Flourish">
<equip when="precast">
<head>Charis Tiara +1</head>
</equip>
</if>
<if spell="Violent Flourish">
<equip when="precast">
<body>Etoile Casaque</body>
</equip>
</if>
<!--------------Steps -->
<elseif spell="*step">
<if notBuffActive="Presto" >
<action type = "CastDelay" delay = "2"/>
<action type = "Command" when = "Precast">input /raw /ja Presto <me></action>
</if>
</elseif>
<if spell="Feather Step">
<equip when="precast">
<feet>Charis Shoes +2</feet>
</equip>
</if>
<!--------------Jigs -->
<elseif spell="*Jig*">
<if spell="Spectral Jig">
<if buffactive="sneak">
<cmd when="precast">cancel 71</cmd>
</if>
<equip when="precast">
<legs>Etoile Tights +2</legs>
</equip>
</if>
</elseif>
<!--------------Utsusemi -->
<elseif spell="Utsusemi*">
<if spell="Utsusemi: Ichi">
<midcastdelay delay="3.0" />
<cmd when="midcast">cancel 66</cmd>
<equip when="precast">
<neck>Magoraga Beads</neck>
<lear>Loquac. Earring</lear>
<waist>Twilight Belt</waist>
</equip>
</if>
</elseif>
</rules>
</spellcast>
Congratulations!
Part 15: Alternate Options
Presto:
Credit for this goes to Hitetsu, with a minor edit I made to remove chat log:
Code <!--------------Steps -->
<if mode="and" Spell="*step" notbuffactive="Presto" MLvlGT="77">
<if mode="or" notbuffactive="Finishing Move*" buffactive="Finishing Move 2">
<var cmd="set CurrentStep %Spell" />
<cancelspell />
<command>input /ja "Presto" <me>;wait 2.0;input /ja "$CurrentStep" <t>;</command>
</if>
</if>
<if spell="Feather Step">
<equip when="precast">
<feet>Charis Shoes +2</feet>
</equip>
</if>
This is a more efficient use of Presto.
My initial scrip, automatically attempt presto, on every 'step' I did, whether I needed Presto or not, whether the recast was up or not.
Hitetsu's is far smarter than that. I can't logically break this code down, but I do current;y use it, and I REALLY like it.
In short all it does:
If Presto Isn't ready, it goes directly to your step, without attempting to use Presto.
Small change, but it saves you the 1 second delay of trying to use presto and getting the recast timer instead.
Next: It uses Presto, only if you need it.
If your Finishing Moves are at 3, 4 or 5, it knows that Presto is useless, and skips the ability, reducing wasted time, as well as a wasted recast on the ability.
If you decide to use this, which I recommend, you can copy/paste it over our old rule, as you only need one or the other, but not both.
[+]
VIP
Server: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2013-04-21 21:09:59
Regarding #4:
A personal recommendation I make is a slight variant in how you store the xml files. Instead of just dumping them all in the Spellcast folder, named motenten_mnk.xml, motenten_dnc.xml, etc, create a new directory within the Spellcast folder of your character name (eg: plugins\Spellcast\Motenten). Then put all your xmls inside that folder, and you only have to name them according to the job they're used for (eg: dnc.xml instead of motenten_dnc.xml).
Benefits:
1) Cleaner separation if you have multiple characters.
2) All the debug logs get left in the top Spellcast folder, and don't interfere with your xmls.
3) Shorter filenames are a lot easier to work with (space-wise) when you have tabbed files open in your text editor of choice.
Quote: In order to actually function with spellcast you will Right Click "Open With > Notepad ++"
Suggested edit: "In order to actually edit the spellcast file..."
To 'function' with spellcast implies using it in game.
Regarding Part 1:
Quote: Because of this, I recommend you only add one thing at a time, and load it to verify it works, before you move on.
Handy tip: Open the xml file (after you've saved it, of course) in Firefox before attempting to use it. Firefox will check the file for correctness, and will show you any syntax errors you've made. That makes it far easier to correct any simple mistakes before you attempt to load it in game.
More advanced error checking is a separate topic.
Regarding Part 2:
The formatting of code on these boards is a little quirky. You probably want your code snippets to have their lowest level of indentation right up against the left margin, to avoid the first line offset issue.
Also, you can use bbcode of [_code=xml_] (without the underscores) to do code highlighting of the contained text. That makes it a little easier to read.
Quote: In an attempt to turn this code, into a logical process that people can read & understand, read the following.
The first comma in that sentence shouldn't be there.
Regarding Part 3:
Quote: Ok, now we'll input our Weaponskills and the gear 'set' accosiated with each one.
accosiated >> associated
Quote: This also goes inbetween the <Rules> section, place it just below the first rule we made:
Comma splice and misspelling. Should be, "This also goes in between the <Rules> section. Place it just below the first rule we made:".
Quote: The <!--- Stuff --> is just a note to yourself, so that oyu can easily locate sections later on, it's not needed, necessary or important.
Comma splice and misspelled word. Should end the sentence after "yourself", and "oyu" should be "you".
The spoilered code should still go in a [_code] block, as you did in the final spoiler block.
You also seem to have some issues with indentation in your examples. This is commonly an artifact of auto-inserted tabs mixed with hand-entered spaces. I would recommend ensuring that your text editor always uses spaces for indentation, as tabs inevitably cause problems in various distributions (eg: forums, pastebin, etc).
Example: Code xml
<?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
</group>
</sets>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<if spell="evisceration">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="PK"/>
</if>
</if>
</rules>
</spellcast>
Also, <castdelay> is its own command. You don't need <action type="castdelay">. In fact, you should -never- use an <action> command, as every aspect of it is deprecated and unnecessary.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-21 23:39:46
Also, <castdelay> is its own command. You don't need <action type="castdelay">. In fact, you should -never- use an <action> command, as every aspect of it is deprecated and unnecessary.
Care to elaborate? Or explain what to use, or how to use it.
When I initially tried to create mine, I looked at the 3 listed on BG +1 here on FFXIAH:
Yours uses base sets, which I haven't learned how to use yet.
Byrth's uses <castdelay delay="$Delay-JA" /> and I have no clue what that is. It's also buried in a long list of elses and ifs, that I was afraid to isolate and use, on top of the fact that all of the WS's are placed in a single line, and I'm unsure of how it deciphers which gear set to use for each.
Elvaanmoqs was extremely simple and straight forward, and make the most logical sense for learning, but doesn't use the cast delay.
The cast delay I got from Dova, which was posted in Byrth's thread, and when I asked why some people used the delay and not others, I was told it's to ensure all gear swaps get applied, so I simply applied it to all of mine, but I'm all ears if you can dumb it down to something simple.
Like if perhaps this worked?
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
</if>
I'm actually gunna try this right now.
Edit: Well the above works. I'll swap my spellcast around, and wait for your insight before I edit the WS section in the OP to make sure I fully understand what it's doing.
Currently have it like this: Code <!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
Fenrir.Sylow
Server: Fenrir
Game: FFXI
Posts: 6862
By Fenrir.Sylow 2013-04-22 00:34:28
If you name your WS sets by the name of the WS, you can do this:
Code xml
<!-- Add this to your variables section yo! --->
<var name="Delay-JA">0</var>
<!-- Add this to your rules section yo! --->
<if type="Weaponskill">
<castdelay delay="$Delay-JA" />
<equip when="precast|midcast" set="%Spell" />
</if>
This sort of ability management gives you a lot of power!
Code xml
<sets>
<!---- the beginning of an excerpt --->
<set name="Evisceration">
</set>
<set name="Evisceration-Abyssea" baseset="Evisceration">
</set>
<set name="Exenterator*">
</set>
<!--- the end of an excerpt ---->
</sets>
<!--- Now look in my rules! --->
<rules>
<!--- The beginning of an excerpt ---->
<if type="Weaponskill">
<castdelay delay="$Delay-JA" />
<if zone="Abyssea*>
<equip when="precast|midcast" set="%Spell-Abyssea" />
</if>
<else>
<equip when="precast|midcast" set="%Spell" />
</else>
</if>
<!--- the end of an excerpt --->
</rules>
If you notice I have a * after Exenterator. If I'm in Abyssea, Spellcast will try to use Exenterator-Abyssea due to my rules but since I used "Exenterator*" spellcast will use my Exenterator set normally. But, I can still use a specific Evisceration set in Abyssea with a single set of rules that govern all WS.
These are the important streamlining aspects of Spellcast that beginners tend to overlook, since it allows for future expansion. If I decide I do want to use a different Exenterator set in Abyssea for some reason, all I have to do now is add a set:
<set name="Exenterator-Abyssea" baseset="Exenterator">
</set>
And remove the * after the original Exenterator set and I don't have to add any new rules to my SC. I personally prefer a different method of idle/aftercast handling but it's harder to read so it's probably not great for a dummies thread.
Remarks:
<equip set="%Spell" /> equips the gear set named after the associated spell or ability
e.g. if I use "Exenterator" SC will automatically use Exenterator in place of %Spell
* serves as a wildcard. "
e.g. "Abyssea*" will cover all Abyssea zones and "setname*" will use that set for all suffices that may follow
Cerberus.Quintow
Server: Cerberus
Game: FFXI
Posts: 150
By Cerberus.Quintow 2013-04-22 00:55:14
Tagged for useful
VIP
Server: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2013-04-22 01:57:33
Quote: Care to elaborate? Or explain what to use, or how to use it.
Basically, every command that in the distant past was defined as an <action type="sometype"> tag is now simply a <sometype> tag in itself. You use <equip>, not <action type="equip">; you use <castdelay>, not <action type="castdelay">; etc.
As for cast delay, there are three types:
<castdelay>
<midcastdelay>
<aftercastdelay>
These all deal with how the timing is handled in Spellcast. Precast happens just before the action is initiated; <castdelay> explicitly says how long to wait between precast and sending the actual spell command. Midcast happens immediately after the action is initiated (but before the spell finishes casting, for spells); <midcastdelay> explicitly says how long to wait after the spell is cast before sending midcast commands. Aftercast happens some set time period after the action is initiated (eg: the time it takes to cast a spell, or 1 second for JAs/WSs); <aftercastdelay> sets this to an explicit value. These all have default values for the time they wait relative to the action that got initiated, determined from info in the resource files, and can be overridden by the above commands.
In any case, for various reasons, some people find that the default delays don't work for them. This might be due to network lag, slower computers, a desire for fine-tuned control of delays due to fast cast gear, or perhaps a need to adjust the delay in gear equips so that the effects of the gear have a chance to propogate (eg: having the Twilight Cloak on long enough that the game recognizes that you can cast Impact, before trying to actually send the spell command). Regardless, you only need to worry about changing these values when the defaults don't work for you.
Personally, I set the aftercastdelay for JA/WS actions at 0.5 seconds instead of the default 1 second, to ensure that any final equipment changes happen before the point in time when melee swings can resume. I have some experimental stuff in place for fast cast, but generally keep it turned off. I also need to adjust the timing for dealing with /ranged attacks, since the defaults are way off relative to the actual firing. Other than that stuff, though, I find no need to change the defaults at all.
As such, I would recommend -not- touching on cast delays in a beginner's guide. The defaults work fine for most stuff, and changing the values doesn't really affect what you need to learn to build a working spellcast xml.
Also, glad that you noticed that my correction of your line on comments itself contained an error, where I referenced the wrong part of the sentence for the comma splice. A little embaressing.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-22 02:35:45
Quote: Care to elaborate? Or explain what to use, or how to use it.
Basically, every command that in the distant past was defined as an <action type="sometype"> tag is now simply a <sometype> tag in itself. You use <equip>, not <action type="equip">; you use <castdelay>, not <action type="castdelay">; etc.
As for cast delay, there are three types:
<castdelay>
<midcastdelay>
<aftercastdelay>
These all deal with how the timing is handled in Spellcast. Precast happens just before the action is initiated; <castdelay> explicitly says how long to wait between precast and sending the actual spell command. Midcast happens immediately after the action is initiated (but before the spell finishes casting, for spells); <midcastdelay> explicitly says how long to wait after the spell is cast before sending midcast commands. Aftercast happens some set time period after the action is initiated (eg: the time it takes to cast a spell, or 1 second for JAs/WSs); <aftercastdelay> sets this to an explicit value. These all have default values for the time they wait relative to the action that got initiated, determined from info in the resource files, and can be overridden by the above commands.
In any case, for various reasons, some people find that the default delays don't work for them. This might be due to network lag, slower computers, a desire for fine-tuned control of delays due to fast cast gear, or perhaps a need to adjust the delay in gear equips so that the effects of the gear have a chance to propogate (eg: having the Twilight Cloak on long enough that the game recognizes that you can cast Impact, before trying to actually send the spell command). Regardless, you only need to worry about changing these values when the defaults don't work for you.
Personally, I set the aftercastdelay for JA/WS actions at 0.5 seconds instead of the default 1 second, to ensure that any final equipment changes happen before the point in time when melee swings can resume. I have some experimental stuff in place for fast cast, but generally keep it turned off. I also need to adjust the timing for dealing with /ranged attacks, since the defaults are way off relative to the actual firing. Other than that stuff, though, I find no need to change the defaults at all.
As such, I would recommend -not- touching on cast delays in a beginner's guide. The defaults work fine for most stuff, and changing the values doesn't really affect what you need to learn to build a working spellcast xml.
Also, glad that you noticed that my correction of your line on comments itself contained an error, where I referenced the wrong part of the sentence for the comma splice. A little embaressing.
I meant, in what way do you feel I should format the WS's rather than the current way I had listed, or the new way I most recently posted?
Keeping in mind the goal of simplicity for absolute beginners.
Sylow, you mentioned:
<var name="Delay-JA">0</var>
<if type="Weaponskill">
<castdelay delay="$Delay-JA" />
<equip when="precast|midcast" set="%Spell" />
</if>
I assume the first part, is what dictates how long the delay will be in the:
<castdelay delay="$Delay-JA" /> line?
If this is correct, why does it need to be there at all, if it's set to zero?
Or is this just so that you can add delays if needed, and apply it to all WS's with just one swap?
Is there any benefit to either option, over what I've posted above?
Since what I posted above, does not have a reference in the variables, does that mean the current $Delay-JA isn't actually doing anything?
My comma splices are intentional. They represent the actual pauses I create, when reading the sentence I've written allowed, as if I were actually explaining this to a person face to face.
By Artemicion 2013-04-22 02:38:07
Just wanted to drop in and say thank you. A thousand times, thank you.
For the longest time I've been sticking to the efficient, albeit limited functions of windower macro scripts, simply because I am really intimidated by xml scripting. But with a bit of explanation, hand holding, and layman's terms, I think I can finally put all gear to their fullest extent.
Requesting a sticky, and possibly even a thread relocation, unless this is specifically pertaining to Dancer?
By MrToker 2013-04-22 03:17:23
I'm trying to use this spellcast for my war. What if I want to switch my DD gear between PDT and DD, how would I set that up?
This is what I've done so far. Code xml
<?xml version="1.0" ?>
<spellcast>
<sets>
<group name="WAR" Default="true">
<set name = "TP" >
<ammo></ammo>
<head></head>
<neck></neck>
<lear></lear>
<body></body>
<hands></hands>
<lring></lring>
<back></back>
<waist></waist>
<legs></legs>
<feet></feet>
<rring></rring>
<rear></rear>
</set>
<set name = "Idle" >
<ammo></ammo>
<head></head>
<neck></neck>
<lear></lear>
<body></body>
<hands></hands>
<lring></lring>
<back></back>
<waist></waist>
<legs></legs>
<feet></feet>
<rring></rring>
<rear></rear>
</set>
<set name = "Ukko" >
<ammo></ammo>
<head></head>
<neck></neck>
<lear></lear>
<body></body>
<hands></hands>
<lring></lring>
<back></back>
<waist></waist>
<legs></legs>
<feet></feet>
<rring></rring>
<rear></rear>
</set>
<set name = "PDT" >
<ammo></ammo>
<head></head>
<neck></neck>
<lear></lear>
<body></body>
<hands></hands>
<lring></lring>
<back></back>
<waist></waist>
<legs></legs>
<feet></feet>
<rring></rring>
<rear></rear>
</set>
</group>
</sets>
<variables>
<!-- Variable for DD or Defense Gear -->
<var name="DDType">PDT</var>
</variables>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="$DDType" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<if spell="Ukko's Fury">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="Ukko"/>
</if>
</rules>
</spellcast>
Server: Sylph
Game: FFXI
Posts: 2617
By Sylph.Hitetsu 2013-04-22 03:22:17
If you want to do it from within Spellcast, then:
<var cmd="set DDType PDT" />
Otherwise, from an XI Macro/Keybind:
/con sc var set DDType PDT
If you wanted a single toggle button, then:
Code xml <if spell="Trigger0"> <!-- Trigger Spells for cycling DD Types-->
<cancelspell />
<if advanced='("$DDType" == "TP")'>
<var cmd="set DDType PDT" />
</if>
<elseif advanced='("$DDType" == "PDT")'>
<var cmd="set DDType TP" />
</elseif>
</if>
Fenrir.Sylow
Server: Fenrir
Game: FFXI
Posts: 6862
By Fenrir.Sylow 2013-04-22 03:27:34
Add this to your rules:
Code xml
<if spell="Stoneja">
<cancelspell />
<if advanced='"$DD-Type"="PDT"' >
<var cmd="set DD-Type DD" />
<addtochat color="100">Current TP Mode: $DD-Type</addtochat>
</if>
<elif advanced='"$DD-Type"="DD"'>
<var cmd="set DD-Type PDT" />
<addtochat color="100">Current TP Mode: $DD-Type</addtochat>
</elif>
</if>
Then add a macro that says /ws Stoneja and you will change your default TP set back and forth.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-22 03:30:24
@Artemicion... First and foremost, thank you for your kind words. Secondly, it's not necessarily Dnc only, most of it will be Dnc targeted, but technically it's just different Job Abilitys for different jobs. All of it applies to other jobs, and personally I just used the 'Save as' feature, and saved it as Cambion_War, Cambion_Whm, etc.
Then, knowing how it works, I input my War & Whm gear into the sets the same way I did on Dnc. Then all of the rules already apply. Change the "<group name="DNC" Default="true">" to the new job you're using it for.
Then, just change the names of your Weaponskills, in the 'set' section, as well as the 'weaponskill' section and it will work the same exact way.
@MrToker that's the next step I was going to explain step by step. Mainly for Dnc who have 'Evasion' sets, but again, it's universal. Any set, for any scenario. It's just done by creating a new 'Group' and 'Set' within that group. Then in game, make a regular 2 line macro:
/sc group Dnc (The group name will be whatever you named it)
/console update
It doesn't require any variables, it just overrides your 'sets' with whatever you have listed in the 'group'.
Hope that's what you're looking for.
By MrToker 2013-04-22 03:34:07
Thank you Hitetsu and Sylow
Fenrir.Sylow
Server: Fenrir
Game: FFXI
Posts: 6862
By Fenrir.Sylow 2013-04-22 03:54:43
Thank you Hitetsu and Sylow
I used elseif instead of else for expansion of mutiple set types if you felt like it
for example in mine : Code xml
<if spell="Barrier Tusk">
<cancelspell />
<if advanced='"$VAR-TP"="Haste"'>
<var cmd="set VAR-TP Evasion" />
<addtochat color="135">Your Current TP Default: $VAR-TP</addtochat>
<command>Dancing Chains</command>
</if>
<elseif advanced='"$VAR-TP"="Evasion"'>
<var cmd="set VAR-TP PDT" />
<addtochat color="135">Your Current TP Default: $VAR-TP</addtochat>
<command>Dancing Chains</command>
</elseif>
<elseif advanced='"$VAR-TP"="PDT"'>
<var cmd="set VAR-TP Haste" />
<addtochat color="135">Your Current TP Default: $VAR-TP</addtochat>
<if status="engaged">
<command>Dancing Chains</command>
</if>
</elseif>
<else>
<var cmd="set VAR-TP PDT" />
<addtochat color="135">Your Current TP Default: $VAR-TP</addtochat>
<command>Dancing Chains</command>
</else>
</if>
<if spell="Hastega">
<cancelspell />
<var cmd="set VAR-TP HASTE" />
<addtochat color="135">Your Current TP Default: $VAR-TP</addtochat>
<if status="engaged">
<command>Dancing Chains</command>
</if>
</if>
<if spell="Delta Thrust">
<cancelspell />
<if advanced='"$VAR-TP"="MARCH"'>
<var cmd="set VAR-TP MARACC" />
<addtochat color="135">Your Current TP Default: $VAR-TP</addtochat>
<if status="engaged">
<command>Dancing Chains</command>
</if>
</if>
<elseif advanced='"$VAR-TP"!="MARCH"'>
<var cmd="set VAR-TP MARCH" />
<addtochat color="135">Your Current TP Default: $VAR-TP</addtochat>
<if status="engaged">
<command>Dancing Chains</command>
</if>
</elseif>
</if>
One macro cycles through Haste - PDT - Evasion and the other cycles through Haste Cap and Acc+ Haste cap sets. The other command (Hastega) forces me into a regular TP set no matter what I was in before. But - I don't like mechanized management of my TP sets.
These are tricks I learned from Byrth , Byrth is my superhero
[+]
VIP
Server: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2013-04-22 04:11:45
Cambion said: I meant, in what way do you feel I should format the WS's rather than the current way I had listed, or the new way I most recently posted?
Er, I hadn't said anything at all about how you were formatting weaponskills (other than the indention for the xml in general). I suppose, looking at it, that I should point out that you need to make use of <elseif> instead of the series of <if>s you have.
For absolute beginners, I'd go with a single <set name="Weaponskill"> set. "This is what you do to make something happen." Then, as you advance, you can answer questions like, "What do I do when I want -this- to happen instead?", or "What if I want to use a different piece of gear for this weaponskill?", etc. Start with the absolute minimum, then figure out what questions people would have, and explain how to figure out solutions to those problems. That's where you can toss in shortcuts that make doing more advanced tricks easier, such as using %spell to specify the set name.
Cambion said: I assume the first part, is what dictates how long the delay will be in the:
<castdelay delay="$Delay-JA" /> line?
If this is correct, why does it need to be there at all, if it's set to zero?
Or is this just so that you can add delays if needed, and apply it to all WS's with just one swap?
Is there any benefit to either option, over what I've posted above?
Since what I posted above, does not have a reference in the variables, does that mean the current $Delay-JA isn't actually doing anything?
1) It doesn't.
2) Pretty much.
3) Depends on exactly what you're trying to get it to do. Mostly a matter of preference, but there are aspects where one or the other is better.
4) Correct. You haven't defined a value for the var, so it won't work properly. Specifically, since you never define the var, and you never assign the var a value, its value when you use that command will be "$Delay-JA". Yes, exactly that text: the name of the variable itself, preceded by the $ sign. Since <castdelay>'s delay requires a number, that means it will fail every time it's run.
Cambion said: My comma splices are intentional. They represent the actual pauses I create, when reading the sentence I've written allowed, as if I were actually explaining this to a person face to face.
Not all pauses are created equal, nor are commas always appropriate for the type of pause you wish to convey. Other punctuation can similarly pause a statement, while also giving contextual and syntactic clues to help frame the statement into a coherent thought.
There are aspects of pauses in face-to-face conversation that are not easily conveyed in written text (whether you stop to take a breath between statements; whether you watch for recognition from the person you're speaking to that they are keeping up with what you're saying; differences in posture and vocal emphasis; etc). Mostly, bad comma splices in text tend to give the impression of someone constantly running their mouth who doesn't know when to stop talking. A tutorial should be clear and easy to comprehend, which is why I also provide technical editorial advice when I come across one, rather than ignoring it as I would for most regular posts.
@Sylow: That really doesn't sound like stuff you'd want to include in a "for Dummies" tutorial.
Fenrir.Sylow
Server: Fenrir
Game: FFXI
Posts: 6862
By Fenrir.Sylow 2013-04-22 04:23:29
That's why I spoilered that section of code!
That aside, there are really like 4 things you need to learn to build a basic spellcast and the person I was addressing was asking how to mess with his TP sets and already had the variables thing figured out so I was just demonstrating how I use it =P
Asura.Psylo
Server: Asura
Game: FFXI
Posts: 446
By Asura.Psylo 2013-04-22 04:44:06
Hello, quick question.
Can i made some test about gear ?
For example, can i create a rule about this :
IF main = "sword_name" then ....
Thks in advance
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-22 04:49:00
Er, I hadn't said anything at all about how you were formatting weaponskills (other than the indention for the xml in general).
Also, <castdelay> is its own command. You don't need <action type="castdelay">. In fact, you should -never- use an <action> command, as every aspect of it is deprecated and unnecessary.
To which I simply asked for you to Elaborate or explain what to use. 4 Posts later and you've yet to provide what you think would be a suitable replacement.
For the time being I've replaced it with Sylows recommendation, even without the variable line and it works fine.
The question now becomes, do we need a delay at all, if yes how much, and what dictates if/how much we need?
Server: Sylph
Game: FFXI
Posts: 2617
By Sylph.Hitetsu 2013-04-22 04:49:21
Hello, quick question.
Can i made some test about gear ?
For example, can i create a rule about this :
IF main = "sword_name" then ....
Thks in advance
Code <if EquipMain="SwordName">
<stuff>
</if>
Server: Sylph
Game: FFXI
Posts: 2617
By Sylph.Hitetsu 2013-04-22 04:54:14
4 Posts later and you've yet to provide what you think would be a suitable replacement.
What is it you're looking for elaboration on exactly? I saw an answer to pretty much everything you've asked, unless I've misunderstood something.
The question now becomes, do we need a delay at all, if yes how much, and what dictates if/how much we need?
Mote covered that already, but to recap.
No, you don't "need" a delay - However it helps when you're swapping a large amount of gear, and need to offset your action by a few more milliseconds to ensure it all goes through.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-22 05:02:45
What is it you're looking for elaboration on exactly? I saw an answer to pretty much everything you've asked, unless I've misunderstood something.
How does he recommend formatting the Weaponskills, while keeping simplicity and target audience in mind.
I started with: Code <if type="weaponskill">
<if spell="evisceration">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<action type="CastDelay" delay=".2"/>
<equip when="precast" set="PK"/>
</if>
</if>
And he mentioned that action type is outdated.
I was just curious what his fix, replacement or alternative would be.
Sylow offered this: Code <if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
But the only thing I've seen motenten offer is:
Quote: For absolute beginners, I'd go with a single <set name="Weaponskill"> set.
Server: Sylph
Game: FFXI
Posts: 2617
By Sylph.Hitetsu 2013-04-22 05:13:55
How does he recommend formatting the Weaponskills, while keeping simplicity and target audience in mind.
Er, I hadn't said anything at all about how you were formatting weaponskills (other than the indention for the xml in general). I suppose, looking at it, that I should point out that you need to make use of <elseif> instead of the series of <if>s you have.
Also, for simplicity's sake:
For absolute beginners, I'd go with a single <set name="Weaponskill"> set. "This is what you do to make something happen." Then, as you advance, you can answer questions like, "What do I do when I want -this- to happen instead?", or "What if I want to use a different piece of gear for this weaponskill?", etc. Typically, to start with you don't want to put a multitude of things in at once - You'd want to start with #1 - Show and explain. Then, add #2, etc.
And he mentioned that action type is outdated.
There isn't much to say about action tags - they're outdated and shouldn't be used. Simple tags are cleaner and (assuming Spellcast works like most other "programming") more compliant with recent versions.
Basically, every command that in the distant past was defined as an <action type="sometype"> tag is now simply a <sometype> tag in itself. You use <equip>, not <action type="equip">; you use <castdelay>, not <action type="castdelay">; etc.
As for cast delay, there are three types:
<castdelay>
<midcastdelay>
<aftercastdelay>
Fenrir.Sylow
Server: Fenrir
Game: FFXI
Posts: 6862
By Fenrir.Sylow 2013-04-22 10:58:55
Typically, to start with you don't want to put a multitude of things in at once - You'd want to start with #1 - Show and explain. Then, add #2, etc.
For example, you might want to break it up into sections like this:
1.) Make a spellcast with one or two sets and no rules
This will show the learner how building a set works and you can use this to explain a few basic syntactical things / operations
e.g.
Code xml
<!--- Spellcast Tutorial #1 --->
<spellcast>
<sets>
<!--- Groups go inside sets! --->
<group name="My First Spellcast" default="yes">
<set name="first">
<!--- gear goes here! --->
</set>
<set name="second" baseset="first">
<!--- gear goes here! --->
</set>
</group>
</sets>
<rules>
</rules>
</spellcast>
Now you can instruct the learner to load the tutorial #1 in-game and have them use /sc set first and /sc set second to move between the sets. This will show them basic functionality.
Exercises
1.) Load "My First Spallcast." What do you see? Type /sc set first into the game and execute it. What happens? Now type /sc set second. What happens? You can also assign /sc set first and /sc set second to macros in game. Try this. Return to your text editor and delete the </sets> tag from your Spellcast. Save the file. Return to the game and type /sc reload. What do you see?
2.) Make note of the message you see when loading My First Spellcast . Now, move the tags around inside your My First Spellcast such that <sets></sets> are inside of the <groups></groups> tags. Now load your Spellcast. What do you see now?
3.) What do you think the baseset="" attribute is doing? How might you use this?
Module Goals: Basic spellcast commands, set construction, set inheritance
Your second tutorial can take this one step further:
Code xml
<!--- Spellcast Tutorial #2 --->
<spellcast>
<sets>
<!--- Groups go inside sets! ---->
<group name="My First Spellcast" default="yes">
<set name="myIdleSet">
<!--- gear for standing around goes here! --->
</set>
<set name="myTPSet">
<!--- gear for poking goes here! --->
</set>
<set name="myWSSet">
<!--- gear for destroying goes here! --->
</set>
</group>
</sets>
<rules>
< !--- Rules are meant to be broken, unless you're a computer ! --- >
<!--- idle | aftercast rules using your method --->
<if status="idle">
<!--- equips my idle set when I'm chillin' --->
<equip when="idle|aftercast" set="myIdleSet" />
</if>
<else>
<!--- equips my TP set when i'm TPin' --->
<equip when="engaged|aftercast" set="myTPSet" />
</else>
</rules>
</spellcast>
[b]Exercises[/b]
1.) Load My First Spellcast in game and find an enemy that won't kill you. Engage it. What happens? What happens when you disengage?
2.) Add the following code snippet between the rules tags:
[code=xml]
<---! Add this to you rules! --- >
<if type="Weaponskill">
<!---equip my weapon skill set! --->
<equip when="precast|midcast" set="myWSSet" />
]
Reload your spellcast and engage an enemy. Acquire enough TP to use a Weapon Skill and use one. What happens? What happens after you are done using the skill?
3.) Notice that the tag beginning with <equip ends with /> unlike the other tags we have used before. Based on what you learned in Exercise 1-1, what do you think this means?
4.) Remove all occurences of aftercast and repeat 1-2. What do notice?
5.) Can you think of situations where you might want different precast, midcast, and aftercast equip rules for a single action?
Module goals: Basic rules, if/else statements, basic equip statements, precast/midcast/aftercast
Add elements one by one. Eventually you'll want to at least show variables and go through the more complicated rules people might want to use involving toggles, active buffs etc. Once you've got all that down you can pretty much write a spellcast suiting your needs for any job.
The very last thing you might want to cover is includes. These are popular among the more advanced spellcast users but I strongly discourage their use by new or learning users (It's very easy to debug something you wrote yourself, but it's hard to debug something as a learner if you don't understand someone else's implementation of something you're using - a good example is how you had no clue what was going on with Byrth's $Delay-JA because you didn't understand the functionality). I personally avoid includes wherever possible but they're good for people who just want something they can use wherever and don't really care about how it works or customizing functionality.
[+]
Leviathan.Syagin
Server: Leviathan
Game: FFXI
Posts: 999
By Leviathan.Syagin 2013-04-22 15:58:00
Quote: Care to elaborate? Or explain what to use, or how to use it. Basically, every command that in the distant past was defined as an <action type="sometype"> tag is now simply a <sometype> tag in itself. You use <equip>, not <action type="equip">; you use <castdelay>, not <action type="castdelay">; etc. As for cast delay, there are three types: <castdelay> <midcastdelay> <aftercastdelay> These all deal with how the timing is handled in Spellcast. Precast happens just before the action is initiated; <castdelay> explicitly says how long to wait between precast and sending the actual spell command. Midcast happens immediately after the action is initiated (but before the spell finishes casting, for spells); <midcastdelay> explicitly says how long to wait after the spell is cast before sending midcast commands. Aftercast happens some set time period after the action is initiated (eg: the time it takes to cast a spell, or 1 second for JAs/WSs); <aftercastdelay> sets this to an explicit value. These all have default values for the time they wait relative to the action that got initiated, determined from info in the resource files, and can be overridden by the above commands. In any case, for various reasons, some people find that the default delays don't work for them. This might be due to network lag, slower computers, a desire for fine-tuned control of delays due to fast cast gear, or perhaps a need to adjust the delay in gear equips so that the effects of the gear have a chance to propogate (eg: having the Twilight Cloak on long enough that the game recognizes that you can cast Impact, before trying to actually send the spell command). Regardless, you only need to worry about changing these values when the defaults don't work for you. Personally, I set the aftercastdelay for JA/WS actions at 0.5 seconds instead of the default 1 second, to ensure that any final equipment changes happen before the point in time when melee swings can resume. I have some experimental stuff in place for fast cast, but generally keep it turned off. I also need to adjust the timing for dealing with /ranged attacks, since the defaults are way off relative to the actual firing. Other than that stuff, though, I find no need to change the defaults at all. As such, I would recommend -not- touching on cast delays in a beginner's guide. The defaults work fine for most stuff, and changing the values doesn't really affect what you need to learn to build a working spellcast xml. Also, glad that you noticed that my correction of your line on comments itself contained an error, where I referenced the wrong part of the sentence for the comma splice. A little embaressing.
All I see is a bunch of words.. at least the man took the time to dumb it down.
Lakshmi.Byrth
VIP
Server: Lakshmi
Game: FFXI
Posts: 6186
By Lakshmi.Byrth 2013-04-22 16:02:49
This was my example of a bare-bones spellcast set. The use of "JA_$Spell" and "WS_$Spell" really cuts down on the logic for beginners.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2013-04-23 03:48:35
Updated Post #2 with groups, more gear sets, job abilities and single gear swaps. Tomorrow is Autoexec & cancelspell. Variables will be last.
VIP
Server: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2013-04-23 14:32:09
Quote: *Another note
If you're already logged in to FFXI, changes you make to your spellcast aren't automatic.
You don't have to log out, just simply unload spellcast, and reload spellcast:
//unload spellcast
//load spellcast
Not the best option. You just have to reload the XML in use, not Spellcast as a whole. All you need to do is:
//sc r
(which is shorthand for "spellcast reload")
You only need to unload and reload Spellcast itself if you change something that spellcast depends on, such as data in the resource files (which a beginning user should not be touching).
Work in progress.
When I came back to FFXI I needed new Macros and everyone I talked to, recommended just using Spellcast. It's been around for a while, but every time I had looked at it in the past, it made my eyes bleed, and I was just overwhelmed with all of the information, possibilities and furthermore confused by the many different ways, people were accomplishing the same task. Even while reading through the guides, they appeared as if they weren't actually directed at people like me. (Completely clueless) The second option was to just copy/paste someone elses Spellcast and edit it to your liking, but again some of them are so complex, I was intimidated to even edit a simple line, yet alone attempt to comprehend what they next 870 lines did.
So I'm going to provide a simple guide, that I would have personally liked to see myself. Spellcast for Dummies!
Step 1: Windower 4
Download Here: http://www.windower.net/
This is the program that makes all of the fancy applications work.
Step 2: Notepad ++
Download Here: http://notepad-plus-plus.org/
This is the program that you use to actually create and edit the 'code' that spellcast uses and runs off of. For all intents and purposes, it's no more than a word document really.
Step 3: Spellcast
Open Windower4
The default tab is listed as "Profiles"
Next to it you'll see "Addons" and "Plugins"
You can automatically Download any Addon or Plugin here
"Spellcast" is listed under "Plugins"
Download it, or make sure it's in the 'on' position
Step 4: Finding your spellcast script
Right click "start"
Select "Explore" (Windows Explorer)
Locate your Windower4 Folder
Default should be as follows: (I'm on Windows 7)
Local Disk C:
Program Files (x86)
Windower4
Plugins
Spellcast
Now, in here you should see an XML file listed as your Character name. At this point, I recommend you rename the file, and use specific files for each job. For the time being, just name the file: Cambion_Dnc
*Use your own Character name of course :)
*Each file you create for other jobs, will be named Cambion_War etc and Spellcast will automatically load the correct spellcast, as soon as you change jobs in your mog house.
If you attempt to open it, it will open in an Internet Browser
In order to actually edit the Spellcast file you will need to Right Click "Open With > Notepad ++"
Step 5: Editing your Spellcast
Once inside you'll see some lines, spaced out, indented etc. Feel free to just ignore it all at for the time being.
We're going to start with an extremely simple build, and slowly add on.
Part 1: Gear Sets
To begin Delete everything inside your current XML and paste the following into the document:
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
</group>
</sets>
<rules>
</rules>
</spellcast>
Okay. The above spellcast won't actually do anything.
But this is where you put your gear sets, and name them.
I name mine very simple:
"Idle" is the gear that will be equipped when you are just standing around, not engaged on a mob.
"TP" is the gear that will be equipped when you are engaged to a mob.
"Exen" is the gear that will be equipped prior to using Exenterator (Can be any WS)
You can use any type of gear you want in these situations, you can even use the same gear if you want, and copy/paste it into all 3 of these sets, until you get more gear. Personally I idle in Regen, -Physical Damage Taken, or Evasion gear and movement speed. Doesn't matter what you use, just go ahead and insert your own gear in each respective slot, for each set. (We'll add more sets later, but if you're feeling saucy go ahead copy/paste a set, change the name to any WS you want, and apply the correct gear. You can do this for any specific set you have, NOT just Weapon Skills. Waltz Sets, Evasion Sets, -PDT sets etc and so on.
*The tabs and spaces don't mean anything and are not required for correct execution or formatting. It just makes it easy to see where you Open and Close certain things, to prevent errors. (A Single error in your XML, and it won't load, meaning you can't use any of it.)
Because of this, I recommend you only add one thing at a time, and load it to verify it works, before you move on.
Alternatively, if you have/use Firefox browser you can open the file normally, and check for errors in your internet browser.
Part 2: Telling the gear sets how & when to be applied
This is considered a "rule" and therefor goes in between the
<rules>
</rules>
section posted above.
Paste the following between the rules lines: Code <if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
In short, the above just tells spellcast what "set" to "equip" based on your current "status",
which at this current point, it just engaged, or not engaged.
If you don't care how or why it works, you just want it to work, then skip to part 3. If you want to understand what it's actually doing, check the spoiler.
In an attempt to turn this code into a logical process that we can read & understand, I think of it like this:
If my status is idle
Equip the set named "Idle"
If my status is engaged
Equip the set named "TP"
The "When=", is just a check point
So anytime you go from engaged to disengaged(idle) spellcast detects that, and will change your gear to the corresponding gearset.
The second part of it, is 'aftercast' which means that after every spell you cast, or job ability you preform, spellcast checks if you are engaged or not, and equips the set you dictate.
So... it will look like this:
You're standing around.
As soon as you 'Attack' a Mob (whether you are actually attacking or not, your weapons just have to be drawn)
Spellcast will detect that you are 'engaged' and change your gear to the set named 'TP'.
If you disengage, it will automatically detect this, and equip your gear set names 'Idle'.
After every spell or Job Ability you preform, spellcast will check if you are engaged or idle.
Immediately after the Spell, Job Ability or Weaponskill is completed it will equip a gear set, that correspends to your current status.
If you're engaged it will equip "TP"
Or 'else' it will equip "Idle"
That's how I view the "if" and "else" lines, so that I can read them as a logical step by step process.
Part 3: Weaponskills
Ok, now we'll input our Weaponskills and the gear 'set' associated with each one.
This also goes in between the <Rules> section, so place it just below the first rule we made:
The <!--- Stuff --> is just a note to yourself, that helps you easily locate specific sections later on. They are not needed, so you can delete them if you desire.
Code
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
Now, I only have these 4 listed, but you can add as many as you want, there's no limit.
if spell="This is where you put the name of the Weaponskill"
Equip when="precast" just means you're installing the set before the weaponskill.
*It sounds silly for WSs, but for mages, you can use this to equip things PreCast, MidCast, and Aftercast.
set="This is the name of the Gear set you want equipped"
This "Set" is whatever you named it in part 1.
Now, if you did the first 3 correctly, you'll have a very simple spellcast that will work properly for gear swaps for engaged, idle and WS's. Should look like this:
Code <?xml version="1.0" ?>
<spellcast>
<sets>
<group name="DNC" Default="true">
<set name = "TP" >
<ammo>Potestas Bomblet</ammo>
<head>Thurandaut Chapeau</head>
<neck>Charis Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Charis Casaque +2</body>
<hands>Thurandaut Gloves</hands>
<lring>$TPlring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Twilight Belt</waist>
<legs>Etoile Tights +2</legs>
<feet>Charis Shoes +2</feet>
</set>
<set name = "Idle" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Wiglen Gorget</neck>
<lear>Novia Earring</lear>
<rear>Suppanomimi</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Paguroidea Ring</lring>
<rring>Sheltered Ring</rring>
<back>Shadow Mantle</back>
<waist>Panthalassa Sash</waist>
<legs>Charis Tights +2</legs>
<feet>Tandava Crackows</feet>
</set>
<set name = "Exen" >
<ammo>Potestas Bomblet</ammo>
<head>Oce. Headpiece +1</head>
<neck>Houyi's Gorget</neck>
<lear>Brutal Earring</lear>
<rear>Aesir Ear Pendant</rear>
<body>Thurandaut Tabard</body>
<hands>Thurandaut Gloves</hands>
<lring>Stormsoul Ring</lring>
<rring>Epona's Ring</rring>
<back>Atheling Mantle</back>
<waist>Windbuffet Belt</waist>
<legs>Tumbler Trunks</legs>
<feet>Scopuli Nails</feet>
</set>
</group>
</sets>
<rules>
<if status="idle">
<equip when="idle|aftercast" set="Idle" />
</if>
<else>
<equip when="engaged|aftercast" set="TP" />
</else>
<!-- Weapon Skills -->
<if type="weaponskill">
<castdelay delay="$Delay-JA" />
<if spell="evisceration">
<equip when="precast" set="Evis"/>
</if>
<if spell="exenterator">
<equip when="precast" set="Exen"/>
</if>
<if spell="aeolian edge">
<equip when="precast" set="AEdge"/>
</if>
<if spell="pyrrhic kleos">
<equip when="precast" set="PK"/>
</if>
</if>
</rules>
</spellcast>
|
|