|
Gearswap Support Thread
サーバ: Fenrir
Game: FFXI
Posts: 39
By Fenrir.Nitenichi 2014-05-15 21:30:44
Quote: Now is gearswap that advanced that it doesnt need accurate spelling or will I need to look through the entire file for misspells? As seen above Meikyou Shisui should be Meikyo Shisui. Thanks for any input!
That's a misspelling on my part, due to how I expect that sort of word to be romanized in English. Forgot to double-check in the game. I've fixed it in my files, and will push it to the repository soonish.
Is extremely low priority you do so much for everyone, I will recheck the file. Was honestly wondering if it was to the point where it just assumed you meant this and used ability etc. Anyhow thanks a ton for all you do
Cerberus.Darkvlade
サーバ: Cerberus
Game: FFXI
Posts: 202
By Cerberus.Darkvlade 2014-05-15 21:37:06
Hello, new to the gearswap addon, never used spellcast before but I've been reading all the info posted, I play on PC but use an adapter for a ps2 controller and was wondering if I were to use gearswap what will be an example to input in the macro books for the game if it's possible before I commit to using it, it seems easy and Would like to give it a try, thanks in advance for your responses.
Quetzalcoatl.Crystalchan
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1184
By Quetzalcoatl.Crystalchan 2014-05-15 21:58:08
Quetzalcoatl.Crystalchan said: »I've been trying to convert from spellcast to gearswap but I'm having a big problem with translating a section. I'm pretty sure I'm making this way too complicated and no matter what I've tried to "fix" it, just seems to make it worse. :\
Really long code: Code function precast(spell)
if not buffactive['Light Arts'] and
if spell.english == 'Cure VI' then
elseif player.mp < 227 then
cancel_spell()
send_command('input /ma "Cure V" '..spell.target.name)
end
if spell.english == 'Cure V' then
elseif player.mp < 135 then
cancel_spell()
send_command('input /ma "Cure IV" '..spell.target.name)
end
if spell.english == 'Cure IV' then
elseif player.mp < 88 then
cancel_spell()
send_command('input /ma "Cure III" '..spell.target.name)
end
if spell.english == 'Cure III' then
elseif player.mp < 46 then
cancel_spell()
send_command('input /ma "Cure II" '..spell.target.name)
end
if player.tp < 24 then
cancel_spell()
add_to_chat(122,'"'..spell.name..'" canceled. Insufficient MP ('..tostring(player.mp)..')')
end
end
end
function precast(spell)
if buffactive['Light Arts'] and
if not buffactive'Penury' then
if spell.english == 'Cure VI' then
elseif player.mp < 205 then
cancel_spell()
send_command('input /ma "Cure V" '..spell.target.name)
end
if spell.english == 'Cure V' then
elseif player.mp < 122 then
cancel_spell()
send_command('input /ma "Cure IV" '..spell.target.name)
end
if spell.english == 'Cure IV' then
elseif player.mp < 80 then
cancel_spell()
send_command('input /ma "Cure III" '..spell.target.name)
end
if spell.english == 'Cure III' then
elseif player.mp < 42 then
cancel_spell()
send_command('input /ma "Cure II" '..spell.target.name)
end
if player.mp < 24 then
cancel_spell()
add_to_chat(122,'"'..spell.name..'" canceled. Insufficient MP ('..tostring(player.mp)..')')
end
end
end
function precast(spell)
if buffactive['Light Arts'] and
if buffactive'Penury' then
if spell.english == 'Cure VI' then
elseif player.mp < 114 then
cancel_spell()
send_command('input /ma "Cure V" '..spell.target.name)
end
if spell.english == 'Cure V' then
elseif player.mp < 68 then
cancel_spell()
send_command('input /ma "Cure IV" '..spell.target.name)
end
if spell.english == 'Cure IV' then
elseif player.mp < 44 then
cancel_spell()
send_command('input /ma "Cure III" '..spell.target.name)
end
if spell.english == 'Cure III' then
elseif player.mp < 23 then
cancel_spell()
send_command('input /ma "Cure II" '..spell.target.name)
end
if player.mp < 12 then
cancel_spell()
add_to_chat(122,'"'..spell.name..'" canceled. Insufficient MP ('..tostring(player.mp)..')')
end
end
end
My section of spellcast I'm trying to translate properly: Code
<if NotBuffActive="Light Arts">
<if Spell="Cure VI" MPLT="227">
<changespell Spell="Cure V" />
</if>
<if Spell="Cure V" MPLT="135">
<changespell Spell="Cure IV" />
</if>
<if Spell="Cure IV" MPLT="88">
<changespell Spell="Cure III" />
</if>
<if Spell="Cure III" MPLT="46">
<changespell Spell="Cure II" />
</if>
<if Spell="Cure II" MPLT="24">
<CancelSpell />
<AddToChat color="56">[ERROR] Not enough MP To cast Cure! ~</AddToChat>
</if>
</if>
<else> <!-- Light Arts is Active - -10% MP Cost -->
<if NotBuffActive="Penury">
<if Spell="Cure VI" MPLT="205">
<changespell Spell="Cure V" />
</if>
<if Spell="Cure V" MPLT="122">
<changespell Spell="Cure IV" />
</if>
<if Spell="Cure IV" MPLT="80">
<changespell Spell="Cure III" />
</if>
<if Spell="Cure III" MPLT="42">
<changespell Spell="Cure II" />
</if>
<if Spell="Cure II" MPLT="22">
<CancelSpell />
<AddToChat color="56">[ERROR] Not enough MP To cast Cure! ~</AddToChat>
</if>
</if>
<else> <!-- Penury is Active - -50% MP Cost -->
<if Spell="Cure VI" MPLT="114">
<changespell Spell="Cure V" />
</if>
<if Spell="Cure V" MPLT="68">
<changespell Spell="Cure IV" />
</if>
<if Spell="Cure IV" MPLT="44">
<changespell Spell="Cure III" />
</if>
<if Spell="Cure III" MPLT="23">
<changespell Spell="Cure II" />
</if>
<if Spell="Cure II" MPLT="12">
<CancelSpell />
<AddToChat color="56">[ERROR] Not enough MP To cast Cure! ~</AddToChat>
</if>
</else>
</else>
Also, I'm not sure if it matters where I put the code, so if you want to look at the full Gearswap file:
WHM Gearswap Taken from Kinematics
Thanks for your time, sorry for all the questions and most likely horrible and dumb mistakes I did to Gearswap lol Sorry, I deleted this post a bit after I made it because I got pretty bummed out and just went back to spellcast. The SC2Lua thing is broken or something at the moment, I was hoping that would give me a little insight without bothering you guys. :\
[+]
サーバ: Fenrir
Game: FFXI
Posts: 574
By Fenrir.Moldtech 2014-05-15 22:08:41
Quote: 5 files you absolutely need being Mote-Globals, Mote-Include, Mote-Mappings, Mote-SelfCommands, Mote-Utility
These are needed for gearswap to even work or just for his gearswap files to work?
Leviathan.Arcon
VIP
サーバ: Leviathan
Game: FFXI
Posts: 666
By Leviathan.Arcon 2014-05-15 22:57:58
Quote: 5 files you absolutely need being Mote-Globals, Mote-Include, Mote-Mappings, Mote-SelfCommands, Mote-Utility
These are needed for gearswap to even work or just for his gearswap files to work?
Just for his files.
サーバ: Phoenix
Game: FFXI
Posts: 57
By Phoenix.Craptaculous 2014-05-15 23:06:13
I want to have a set called set.WS equipped when a WeaponSkill is used, I put the following in: Code function precast(spell)
if spell.type=="WeaponSkill" then
equip(sets.WS)
end
end
But I am noticing that it is too quick and ends up WSing before it is registered that the gear changed.
Is there a way to insert a <wait X> into that so that it puts the gear on, then waits X-seconds (most likely 1 second) and then WS's?
Thanks.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-15 23:17:44
Phoenix.Craptaculous said: »I want to have a set called set.WS equipped when a WeaponSkill is used, I put the following in: Code function precast(spell)
if spell.type=="WeaponSkill" then
equip(sets.WS)
end
end
But I am noticing that it is too quick and ends up WSing before it is registered that the gear changed.
Is there a way to insert a <wait X> into that so that it puts the gear on, then waits X-seconds (most likely 1 second) and then WS's?
Thanks.
How are you determining that it's weaponskilling "before it registered that the gear changed"? Have you tested actual weaponskill results, or is this just you eyeballing your equipment screen?
All testing that's been done on this has shown that all gear fully registers with the game, regardless of how quick the action is.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-15 23:25:12
@Crystalchan:
Since you're using my files, you will -never- implement direct event-handling functions (precast, midcast, aftercast, etc) in the job file. The job file always uses job_* versions of those functions, since the main include intercepts the 'real' version.
So for all your precast stuff, it should be in the job_precast() function, not the precast() function. Creating a precast() function in your job file will mess up how the entire include structure works.
Your pastebin'd file included job_precast() already (as it's part of the default repository version), so I'm guessing the precast() functions you created were a result of an attempt to convert the xml with the auto-handler? Maybe? Or possibly just various tries at manually converting; not sure.
For handling auto-correcting the cure spells used, I'd suggest you look at the refine_waltz() function in Mote-Utility, as it does basically the same thing for waltzes. I would also suggest that you write your function to handle cures in the same way, and not put it directly in your whm job_precast(); just call the function from there.
VIP
サーバ: Odin
Game: FFXI
Posts: 9534
By Odin.Jassik 2014-05-15 23:26:16
Phoenix.Craptaculous said: »I want to have a set called set.WS equipped when a WeaponSkill is used, I put the following in: Code function precast(spell)
if spell.type=="WeaponSkill" then
equip(sets.WS)
end
end
But I am noticing that it is too quick and ends up WSing before it is registered that the gear changed.
Is there a way to insert a <wait X> into that so that it puts the gear on, then waits X-seconds (most likely 1 second) and then WS's?
Thanks.
waits are unnecessary with Gearswap. Spellcast needed waits because it input commands into the game, Gearswap puts the gear changes directly into the outgoing packets, effectively bypassing the game. So it controls what order the information goes out, there isn't any latency that needs to be offset.
サーバ: Phoenix
Game: FFXI
Posts: 57
By Phoenix.Craptaculous 2014-05-15 23:37:33
Phoenix.Craptaculous said: »I want to have a set called set.WS equipped when a WeaponSkill is used, I put the following in: Code function precast(spell)
if spell.type=="WeaponSkill" then
equip(sets.WS)
end
end
But I am noticing that it is too quick and ends up WSing before it is registered that the gear changed.
Is there a way to insert a <wait X> into that so that it puts the gear on, then waits X-seconds (most likely 1 second) and then WS's?
Thanks. waits are unnecessary with Gearswap. Spellcast needed waits because it input commands into the game, Gearswap puts the gear changes directly into the outgoing packets, effectively bypassing the game. So it controls what order the information goes out, there isn't any latency that needs to be offset.
if I WS with that if statement, I WS for low amount.
But, if I put the set on via "/console gs equip sets.WS" and wait a 1 second, I WS for a lot more.
It's WSing before the client can catch up with my ridiculous lag
Quetzalcoatl.Glecent
サーバ: Quetzalcoatl
Game: FFXI
Posts: 86
By Quetzalcoatl.Glecent 2014-05-16 00:20:02
Cerberus.Darkvlade said: »Hello, new to the gearswap addon, never used spellcast before but I've been reading all the info posted, I play on PC but use an adapter for a ps2 controller and was wondering if I were to use gearswap what will be an example to input in the macro books for the game if it's possible before I commit to using it, it seems easy and Would like to give it a try, thanks in advance for your responses.
It automatically makes the swaps when you use the ability/spell/WS.
So,
/ws "Victory Smite" <t>
That's all it takes to use Victory Smite and do all the gear swaps. You can also WS and cast etc through the menus and it will make the swaps.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-16 00:24:23
Phoenix.Craptaculous said: »if I WS with that if statement, I WS for low amount.
But, if I put the set on via "/console gs equip sets.WS" and wait a 1 second, I WS for a lot more.
It's WSing before the client can catch up with my ridiculous lag
Are you using magical weaponskills to test, so that you're guaranteed to get fixed damage results based on your gear?
Quetzalcoatl.Crystalchan
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1184
By Quetzalcoatl.Crystalchan 2014-05-16 00:26:11
Thank you for the reply, I did try to copy what you did in the utility but ended up getting confused on how Light Arts and Penury would play into that and I guess I just made a big jumbled mess. Every time I try something different, I get riddled with errors, I just wish I could get one piece right! I honestly have no idea what I'm doing with gearswap so I'll just have to live without a little feature.
Also just wondering how you would equip Fucho-no-obi when MP<50% in gearswap? I figured it out in spellcast but I have no idea about gearswap. ._. I tried searching for it, but it seems like people just put it in their idle/resting sets.
Thank you and gearswap is an amazing add-on that I've been using for quite some time on RNG, I just wish I could figure it out faster. ^^v
サーバ: Phoenix
Game: FFXI
Posts: 57
By Phoenix.Craptaculous 2014-05-16 01:10:34
Phoenix.Craptaculous said: »if I WS with that if statement, I WS for low amount.
But, if I put the set on via "/console gs equip sets.WS" and wait a 1 second, I WS for a lot more.
It's WSing before the client can catch up with my ridiculous lag
Are you using magical weaponskills to test, so that you're guaranteed to get fixed damage results based on your gear?
No, using quite the opposite, Victory Smite, yes I know, it can crit, DA on 1st hit, and is prone to miss a hit or more. But my WS-avg's with spellcast were consistently 4-5k on random junk in ceizak.
Due to SC being no longer repaired/supported, I've began testing on GS w/ the above 'if' statement wsavg was a lot less, more around 2-3k. Same gear setup as it was in my SC gear set, same basic if statement in GS vs SC. Less WsAvg.
The only fix I have is to not use the 'if' statement, and just put the set on via /console gs equip set.WS, wait a second for lag so that the game cancatch up and realize I changed gear, then WS, and my expected WS-Avg returns and is as consistent as it was w/ SC.
I am using Scoreboard for stat-WsAvg to determine and confirm #'s as I see them go by.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-16 04:42:41
Quetzalcoatl.Crystalchan said: »Also just wondering how you would equip Fucho-no-obi when MP<50% in gearswap? I figured it out in spellcast but I have no idea about gearswap. ._. I tried searching for it, but it seems like people just put it in their idle/resting sets.
If you're using one of mine, add it in the customize_idle_set() function if the conditions are met. Something like:
Code
function customize_idle_set(idleSet)
if player.mpp < 50 then
idleSet = set_combine(idleSet, {waist="Fucho-no-obi"})
end
return idleSet
end
[+]
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-16 04:45:24
Phoenix.Craptaculous said: »No, using quite the opposite, Victory Smite
Test again using elemental weaponskills. On mnk you can use club or staff.
サーバ: Phoenix
Game: FFXI
Posts: 57
By Phoenix.Craptaculous 2014-05-17 09:38:26
is there a way to do the following in GS or not: Code <if spell=="Victory Smite>"
<cancelspell/>
<equip when="precast|midcast" set="WS" />
<command>wait 0.5; input /raw "Victory Smite" <t> </command>
</if>
(note the <t> is the HEX equivalent in SC actually: &_lt;t>_; <minus the "_"s>)
I'm sure GS works perfectly for people with good internet, but my internet has a 900ms ping to Japan. My Lag is awful, I get better numbers when I put 1/2 second waits in commands, always have, even w/ vanilla macros, I prefer to keep that 1/2 second delay between equip and action made.
I'm definitely not the best geared person in the world, but I’ve lost about 20-30% dmg avg since I've changed to GS (comparing #'s on a few tojils runs pre/post the Game update on Wednesday). And that's really bad. My gear setup has not changed, all I've done is made a super simple, GS equivalent of the SC I made (with out the wait since I don't know if there even is one).
The if statement I made for GS is working as it should be, but it's way too fast for my awful internet. I just want to be able to accommodate for that. If I can't, then no big deal, I'll just put it on manually with the /console gs equip command prior to WSing or use that in a vanilla macro with a <wait .5> after it.
Lakshmi.Byrth
VIP
サーバ: Lakshmi
Game: FFXI
Posts: 6184
By Lakshmi.Byrth 2014-05-17 11:31:04
See, here's how it works:
1) As far as we can tell, the server respects the order of chunks in a UDP packet.
2) GearSwap injects equip chunks (precast), and then injects the action command chunk (aka using victory smite), and then inject equip chunks (midcast). These chunks probably go out in the same UDP packet essentially all the time.
3) If that packet arrives at the server, then you will have equipped your gear in the right order because all of the chunks are in the same UDP packet.
4) After you use victory smite and your client sees your damage, it sends out more equip chunks (aftercast).
There's basically no way that adding a 0.5 second delay would help you.
サーバ: Asura
Game: FFXI
Posts: 373
By Asura.Aikchan 2014-05-17 12:04:19
Phoenix.Craptaculous said: »is there a way to do the following in GS or not: Code <if spell=="Victory Smite>"
<cancelspell/>
<equip when="precast|midcast" set="WS" />
<command>wait 0.5; input /raw "Victory Smite" <t> </command>
</if>
(note the <t> is the HEX equivalent in SC actually: &_lt;t>_; <minus the "_"s>)
I'm sure GS works perfectly for people with good internet, but my internet has a 900ms ping to Japan. My Lag is awful, I get better numbers when I put 1/2 second waits in commands, always have, even w/ vanilla macros, I prefer to keep that 1/2 second delay between equip and action made.
I'm definitely not the best geared person in the world, but I’ve lost about 20-30% dmg avg since I've changed to GS (comparing #'s on a few tojils runs pre/post the Game update on Wednesday). And that's really bad. My gear setup has not changed, all I've done is made a super simple, GS equivalent of the SC I made (with out the wait since I don't know if there even is one).
The if statement I made for GS is working as it should be, but it's way too fast for my awful internet. I just want to be able to accommodate for that. If I can't, then no big deal, I'll just put it on manually with the /console gs equip command prior to WSing or use that in a vanilla macro with a <wait .5> after it.
Sadly in heavy lag GS still works, and nothing better than besiege to test that.
Unless you post what you are using, can't really help, but they might be others issues not letting your gear to equip.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-17 12:42:04
Phoenix.Craptaculous said: »is there a way to do the following in GS or not: Code <if spell=="Victory Smite>"
<cancelspell/>
<equip when="precast|midcast" set="WS" />
<command>wait 0.5; input /raw "Victory Smite" <t> </command>
</if>
(note the <t> is the HEX equivalent in SC actually: &_lt;t>_; <minus the "_"s>)
I'm sure GS works perfectly for people with good internet, but my internet has a 900ms ping to Japan. My Lag is awful, I get better numbers when I put 1/2 second waits in commands, always have, even w/ vanilla macros, I prefer to keep that 1/2 second delay between equip and action made.
I'm definitely not the best geared person in the world, but I’ve lost about 20-30% dmg avg since I've changed to GS (comparing #'s on a few tojils runs pre/post the Game update on Wednesday). And that's really bad. My gear setup has not changed, all I've done is made a super simple, GS equivalent of the SC I made (with out the wait since I don't know if there even is one).
The if statement I made for GS is working as it should be, but it's way too fast for my awful internet. I just want to be able to accommodate for that. If I can't, then no big deal, I'll just put it on manually with the /console gs equip command prior to WSing or use that in a vanilla macro with a <wait .5> after it.
1) There is no way to do that in GearSwap. As Byrth said, your precast gear and the command (as well as the midcast gear) all go out in the same packet. The only delay you can add is the time before it sends that packet out.
2) Unless/until you're willing to do an actual verifiable test to show a problem, rather than just eyeballed values in a chaotic environment, there's no reason for anyone to make changes to GearSwap to accommodate the alleged problem.
Said test needs to show values that will not change from test run to test run. Simple procedure:
a) Equip a Warp Cudgel or other club you have handy
b) Turn off GearSwap (so no gear changes at all)
c) Equip standard TP gear
d) Use Shining Strike vs consistent level mobs (eg: mandys in Ceizak, which are all level 100). Repeat at least twice to be sure you didn't get a resist.
e) Equip gear that would change the result (eg: any MAB gear); equip as much or as little as you like, relative to the TP set
f) Repeat the Shining Strike test vs the same mobs
g) Put the MAB gear set in GearSwap, and turn GearSwap on
h) Repeat the test with GearSwap active. You should see a value that matches either the first or second results above. Also do a weaponskill test with the showswaps flag active (//gs showswaps) and verify that the precast gear being used matches what you expect.
i) Provide said results here when discussing the issue.
j) If the GearSwap-activated results match the flat TP set results rather then the expected MAB gear set results, then there is a problem. However that problem is potentially your gearswap lua file itself, so you'll need to provide that as well (either in [code] tags here, or posted on pastebin).
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-05-17 13:22:15
Phoenix.Craptaculous said: »is there a way to do the following in GS or not: Code <if spell=="Victory Smite>"
<cancelspell/>
<equip when="precast|midcast" set="WS" />
<command>wait 0.5; input /raw "Victory Smite" <t> </command>
</if>
(note the <t> is the HEX equivalent in SC actually: &_lt;t>_; <minus the "_"s>)
I'm sure GS works perfectly for people with good internet, but my internet has a 900ms ping to Japan. My Lag is awful, I get better numbers when I put 1/2 second waits in commands, always have, even w/ vanilla macros, I prefer to keep that 1/2 second delay between equip and action made.
I'm definitely not the best geared person in the world, but I’ve lost about 20-30% dmg avg since I've changed to GS (comparing #'s on a few tojils runs pre/post the Game update on Wednesday). And that's really bad. My gear setup has not changed, all I've done is made a super simple, GS equivalent of the SC I made (with out the wait since I don't know if there even is one).
The if statement I made for GS is working as it should be, but it's way too fast for my awful internet. I just want to be able to accommodate for that. If I can't, then no big deal, I'll just put it on manually with the /console gs equip command prior to WSing or use that in a vanilla macro with a <wait .5> after it.
Sadly in heavy lag GS still works, and nothing better than besiege to test that.
Unless you post what you are using, can't really help, but they might be others issues not letting your gear to equip.
I use a MAB set for Sanguine Blade, I have no MAB on my TP set or Normalk WS sets.
Sanguine deals Stupid amounts of damage with my MAB, without GS on it deals 400.
GS works perfectly fine with my shitty internet, it's something in your lua itself! Post we can help with it :)
Phoenix.Damnit
サーバ: Phoenix
Game: FFXI
Posts: 38
By Phoenix.Damnit 2014-05-18 00:53:12
@mote, please bear with me as I am still attempting to learn GS.
I switched over to your summoner Lua after using Byrths for a while and having issues where when my pet dies GS would freeze for about 30 seconds and block all actions. I am having a small issue with the Lua you use atm, (probably something small and simple I am looking over)
I get a console error message whenever i try to use an ability (Either BP~rage/ward or even spells) if the timers are down basically I get the error and from what I see in "Showswaps" GS pauses in the precast set. Console states~ error in the user function Self_commands.Lua:32: attempt to index global 'selfcomandmaps' (a nil Value, also i think the runtime error in flow.lua:276: accompanies the previous error.
Basically is there a way to get your Lua to act as Byrths and revert back to the "set.idle.avatar" once it reads that the ability or spell timer is not ready?
I'm really sorry for all the trouble. I'm new to using the Mote.lua instruction files
BTW the /gs c siphon and the grouped BP's controlled by GS is amazing :) Code -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and it's supplementary files) to go with this.
-- Also, you'll need the Shortcuts addon to handle the auto-targetting of the custom pact commands.
--[[
Custom commands:
gs c petweather
Automatically casts the storm appropriate for the current avatar, if possible.
gs c siphon
Automatically run the process to: dismiss the current avatar; cast appropriate
weather; summon the appropriate spirit; Elemental Siphon; release the spirit;
and re-summon the avatar.
Will not cast weather you do not have access to.
Will not re-summon the avatar if one was not out in the first place.
Will not release the spirit if it was out before the command was issued.
gs c pact [PactType]
Attempts to use the indicated pact type for the current avatar.
cure
curaga
buffOffense
buffDefense
buffSpecial
debuff1
debuff2
sleep
nuke2
nuke4
bp70
bp75 (merits and lvl 75-80 pacts)
astralflow
--]]
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff["Avatar's Favor"] = buffactive["Avatar's Favor"] or false
spirits = S{"LightSpirit", "DarkSpirit", "FireSpirit", "EarthSpirit", "WaterSpirit", "AirSpirit", "IceSpirit", "ThunderSpirit"}
avatars = S{"Carbuncle", "Fenrir", "Diabolos", "Ifrit", "Titan", "Leviathan", "Garuda", "Shiva", "Ramuh", "Odin", "Alexander", "Cait Sith"}
magicalRagePacts = S{
'Inferno','Earthen Fury','Tidal Wave','Aerial Blast','Diamond Dust','Judgement Bolt','Searing Light','Howling Moon','Ruinous Omen',
'Fire II','Stone II','Water II','Aero II','Blizzard II','Thunder II',
'Fire IV','Stone IV','Water IV','Aero IV','Blizzard IV','Thunder IV',
'Thunderspark','Burning Strike','Meteorite','Nether Blast','Flaming Crush',
'Meteor Strike','Heavenly Strike','Wind Blade','Geocrush','Grand Fall','Thunderstorm',
'Holy Mist','Lunar Bay','Night Terror','Level ? Holy'}
pacts = {}
pacts.cure = {['Carbuncle']='Healing Ruby'}
pacts.curaga = {['Carbuncle']='Healing Ruby II', ['Garuda']='Whispering Wind', ['Leviathan']='Spring Water'}
pacts.buffoffense = {['Carbuncle']='Glittering Ruby', ['Ifrit']='Crimson Howl', ['Garuda']='Hastega', ['Ramuh']='Rolling Thunder',
['Fenrir']='Ecliptic Growl'}
pacts.buffdefense = {['Carbuncle']='Shining Ruby', ['Shiva']='Frost Armor', ['Garuda']='Aerial Armor', ['Titan']='Earthen Ward',
['Ramuh']='Lightning Armor', ['Fenrir']='Ecliptic Howl', ['Diabolos']='Noctoshield', ['Cait Sith']='Reraise II'}
pacts.buffspecial = {['Ifrit']='Inferno Howl', ['Garuda']='Fleet Wind', ['Titan']='Earthen Armor', ['Diabolos']='Dream Shroud',
['Carbuncle']='Soothing Ruby', ['Fenrir']='Heavenward Howl', ['Cait Sith']='Raise II'}
pacts.debuff1 = {['Shiva']='Diamond Storm', ['Ramuh']='Shock Squall', ['Leviathan']='Tidal Roar', ['Fenrir']='Lunar Cry',
['Diabolos']='Pavor Nocturnus', ['Cait Sith']='Eerie Eye'}
pacts.debuff2 = {['Shiva']='Sleepga', ['Leviathan']='Slowga', ['Fenrir']='Lunar Roar', ['Diabolos']='Somnolence'}
pacts.sleep = {['Shiva']='Sleepga', ['Diabolos']='Nightmare', ['Cait Sith']='Mewing Lullaby'}
pacts.nuke2 = {['Ifrit']='Fire II', ['Shiva']='Blizzard II', ['Garuda']='Aero II', ['Titan']='Stone II',
['Ramuh']='Thunder II', ['Leviathan']='Water II'}
pacts.nuke4 = {['Ifrit']='Fire IV', ['Shiva']='Blizzard IV', ['Garuda']='Aero IV', ['Titan']='Stone IV',
['Ramuh']='Thunder IV', ['Leviathan']='Water IV'}
pacts.bp70 = {['Ifrit']='Flaming Crush', ['Shiva']='Rush', ['Garuda']='Predator Claws', ['Titan']='Mountain Buster',
['Ramuh']='Chaotic Strike', ['Leviathan']='Spinning Dive', ['Carbuncle']='Meteorite', ['Fenrir']='Eclipse Bite',
['Diabolos']='Nether Blast'}
pacts.bp75 = {['Ifrit']='Meteor Strike', ['Shiva']='Heavenly Strike', ['Garuda']='Wind Blade', ['Titan']='Geocrush',
['Ramuh']='Thunderstorm', ['Leviathan']='Grand Fall', ['Carbuncle']='Holy Mist', ['Fenrir']='Lunar Bay',
['Diabolos']='Night Terror', ['Cait Sith']='Level ? Holy'}
pacts.astralflow = {['Ifrit']='Inferno', ['Shiva']='Diamond Dust', ['Garuda']='Aerial Blast', ['Titan']='Earthen Fury',
['Ramuh']='Judgment Bolt', ['Leviathan']='Tidal Wave', ['Carbuncle']='Searing Light', ['Fenrir']='Howling Moon',
['Diabolos']='Ruinous Omen', ['Cait Sith']="Altana's Favor"}
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Normal'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.CastingModes = {'Normal'}
options.IdleModes = {'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
-- Durations for wards we want to create custom timers for.
durations = {}
durations['Earthen Armor'] = 232
durations['Shining Ruby'] = 340
durations['Dream Shroud'] = 352
durations['Noctoshield'] = 352
durations['Inferno Howl'] = 232
durations['Hastega'] = 352
-- Icons to use for the timers (from plugins/icons directory)
timer_icons = {}
-- 00054 for stoneskin, or 00299 for Titan
timer_icons['Earthen Armor'] = 'spells/00299.png'
-- 00043 for protect, or 00296 for Carby
timer_icons['Shining Ruby'] = 'spells/00043.png'
-- 00304 for Diabolos
timer_icons['Dream Shroud'] = 'spells/00304.png'
-- 00106 for phalanx, or 00304 for Diabolos
timer_icons['Noctoshield'] = 'spells/00106.png'
-- 00100 for enfire, or 00298 for Ifrit
timer_icons['Inferno Howl'] = 'spells/00298.png'
-- 00358 for hastega, or 00301 for Garuda
timer_icons['Hastega'] = 'spells/00358.png'
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Astral Flow'] = {head="Glyphic Horn +1"}
sets.precast.JA['Elemental Siphon'] = {main="Kirin's Pole",sub="Vox Grip",ammo="Seraphicaller",
head="Con. Horn +1",neck="Caller's Pendant",
body="Anhur Robe",hands="Glyphic Bracers +1",ring1="Evoker's Ring",ring2="Fervor Ring",
waist="Cimmerian Sash",legs="Marduk's Shalwar +1",ear1="Andoaa Earring",ear2="Smn. Earring",feet="Caller's Pgch. +2"}
sets.precast.JA['Mana Cede'] = {hands="Caller's Bracers +2"}
-- Pact delay reduction gear
sets.precast.BloodPactWard = {ammo="Seraphicaller",head="Con. Horn +1 Horn",body="Glyphic Doublet +1",legs="Glyphic Spats",hands="Glyphic Bracers +1",back="Samanisi Cape",feet="Glyph. Pigaches +1"}
sets.precast.BloodPactRage = sets.precast.BloodPactWard
-- Fast cast sets for spells
sets.precast.FC = {
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Marduk's Jubbah +1",ring1="Prolix Ring",
back="Swith Cape",hands="Magavan Mitts",waist="Witful Belt",legs="Orvail Pants",neck="Orunmila's Torque",feet="Chelona Boots"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash",head="Umuthi Hat"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
head="Nahtirah Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Pahtli Cape",waist="Cascade Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Myrkr'] = {
head="Nahtirah Hat",ear1="Gifted Earring",ear2="Loquacious Earring",
body="Convoker's Doublet",hands="Caller's Bracers +2",ring1="Evoker's Ring",ring2="Sangoma Ring",
back="Pahtli Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Chelona Boots +1"}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Prolix Ring",
back="Swith Cape",waist="Witful Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Pahtli Cape",waist="Witful Belt",legs="Nabu's Shalwar",feet="Chelona Boots"}
sets.midcast.Stoneskin = {waist="Siegel Sash",head="Umuthi Hat"}
sets.midcast.Pet.BloodPactWard = {main="Kirin's Pole",sub="Vox Grip",ammo="Seraphicaller",
head="Con. Horn +1",neck="Caller's Pendant",
body="Anhur Robe",hands="Glyphic Bracers +1",ring1="Evoker's Ring",ring2="Fervor Ring",
waist="Cimmerian Sash",legs="Marduk's Shalwar +1",ear1="Andoaa Earring",ear2="Smn. Earring",feet="Mdk. Crackows +1"}
sets.midcast.Pet.PhysicalBloodPactRage = {main="Nirvana",sub="Oneiros Grip",ammo="Seraphicaller",head="Glyphic Horn +1",ear1="Esper Earring",ear2="Smn. Earring",body="Con. Doublet +1",hands="Auspex Gages",ring1="Evoker's Ring",ring2="Fervor Ring",waist="Caller's Sash",legs="Ngen Seraweels",feet="Con. Pigaches +1"}
sets.midcast.Pet.MagicalBloodPactRage = {main="Nirvana",sub="Oneiros Grip",ammo="Seraphicaller",head="Glyphic Horn +1",ear1="Esper Earring",ear2="Smn. Earring",body="Con. Doublet +1",hands="Hagondes Cuffs",ring1="Evoker's Ring",ring2="Fervor Ring",waist="Caller's Sash",legs="Ngen Seraweels",feet="Con. Pigaches +1"}
sets.midcast.Pet.Spirit = set_combine(sets.midcast.Pet.BloodPactRage, {legs="Summoner's Spats"})
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Nirvana",ammo="Seraphicaller",
head="Convoker's Horn",neck="Wiglen Gorget",ear1="Gifted Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Pahtli Cape",waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots +1"}
-- Idle sets
sets.idle = {main="Nirvana",sub="Oneiros Grip",
head="Glyphic Horn +1",neck="Caller's Pendant",ear1="Moonshade Earring",ear2="Smn. Earring",
body="Glyphic Doublet +1",hands="Glyphic Bracers +1",ring1="Evoker's Ring",ring2="Defending Ring",
back="Conveyance Cape",waist="Isa Belt",legs="Glyphic Spats",feet="Glyph. Pigaches +1"}
sets.idle.PDT = {main="Nirvana",sub="Oneiros Grip",ammo="Seraphicaller",
head="Con. Horn +1",neck="Caller's Pendant",ear1="Moonshade Earring",ear2="Smn. Earring",
body="Hagondes Coat",hands="Glyphic Bracers +1",ring1="Evoker's Ring",ring2="Defending Ring",
back="Conveyance Cape",waist="Isa Belt",legs="Nares Trews",feet="Con. Pigaches +1"}
-- perp costs:
-- spirits: 7
-- carby: 11 (5 with mitts)
-- fenrir: 13
-- others: 15
-- avatar's favor: -4/tick
-- -perp gear:
-- Patriarch Cane: -3
-- Glyphic Horn: -4
-- Caller's Doublet +2: -4
-- Evoker's Ring: -1
-- Convoker's Pigaches: -4
-- total: -16
sets.idle.Avatar = {main="Nirvana",sub="Oneiros Grip",ammo="Seraphicaller",
head="Con. Horn +1",neck="Caller's Pendant",ear1="Moonshade Earring",ear2="Smn. Earring",
body="Hagondes Coat",hands="Glyphic Bracers +1",ring1="Evoker's Ring",ring2="Defending Ring",
back="Conveyance Cape",waist="Isa Belt",legs="Nares Trews",feet="Con. Pigaches +1"}
sets.idle.Spirit = {main="Kirin's Pole",sub="Vox Grip",ammo="Seraphicaller",
head="Con. Horn +1",neck="Caller's Pendant",
body="Anhur Robe",hands="Glyphic Bracers +1",ring1="Evoker's Ring",ring2="Fervor Ring",
waist="Cimmerian Sash",legs="Marduk's Shalwar +1",ear1="Andoaa Earring",ear2="Smn. Earring",feet="Caller's Pgch. +2"}
sets.idle.Town = {main="Nirvana",sub="Oneiros Grip",ammo="Seraphicaller",
head="Convoker's Horn",neck="Wiglen Gorget",ear1="Gifted Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Sangoma Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
-- Favor can trade the -4 perp of Glyphic Horn for +2 refresh of Caller's Horn (plus enhance favor).
sets.idle.Avatar.Favor = {head="Caller's Horn +2"}
sets.perp = {}
sets.perp.Day = {hands="Caller's Bracers +2"}
sets.perp.Weather = {neck="Caller's Pendant",hands="Caller's Bracers +2"}
sets.perp.Alexander = sets.midcast.Pet.BloodPactWard
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,
head="Hagondes Hat",neck="Wiglen Gorget",ear1="Gifted Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Dark Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.defense.MDT = {
head="Hagondes Hat",neck="Twilight Torque",ear1="Gifted Earring",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Shadow Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
sets.Kiting = {feet="Herald's Gaiters"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {ammo="Seraphicaller",
head="Zelus Tiara",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Umbra Cape",waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
equip(sets.midcast.FastRecast)
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted then
if state.Buff[spell.name] ~= nil then
state.Buff[spell.name] = true
end
end
end
-- Runs when a pet initiates an action.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_pet_midcast(spell, action, spellMap, eventArgs)
if spirits:contains(pet.name) then
classes.CustomClass = 'Spirit'
end
end
-- Runs when pet completes an action.
function job_pet_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted then
create_pact_timer(spell)
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if pet.isvalid then
if pet.element == world.day_element then
idleSet = set_combine(idleSet, sets.perp.Day)
end
if pet.element == world.weather_element then
idleSet = set_combine(idleSet, sets.perp.Weather)
end
if sets.perp[pet.name] then
idleSet = set_combine(idleSet, sets.perp[pet.name])
end
if state.Buff["Avatar's Favor"] and avatars:contains(pet.name) then
idleSet = set_combine(idleSet, sets.idle.Avatar.Favor)
end
if pet.status == 'Engaged' then
idleSet = set_combine(idleSet, sets.idle.Avatar.Melee)
end
end
return idleSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
handle_equipping_gear(player.status)
elseif storms:contains(buff) then
handle_equipping_gear(player.status)
end
end
-- Called when the player's pet's status changes.
-- This is also called after pet_change after a pet is released. Check for pet validity.
function job_pet_status_change(newStatus, oldStatus, eventArgs)
if pet.isvalid and not midaction() and not pet_midaction() and (newStatus == 'Engaged' or oldStatus == 'Engaged') then
handle_equipping_gear(player.status, newStatus)
end
end
-- Called when a player gains or loses a pet.
-- pet == pet structure
-- gain == true if the pet was gained, false if it was lost.
function job_pet_change(petparam, gain)
classes.CustomIdleGroups:clear()
if gain then
if avatars:contains(pet.name) then
classes.CustomIdleGroups:append('Avatar')
elseif spirits:contains(pet.name) then
classes.CustomIdleGroups:append('Spirit')
end
else
select_default_macro_book()
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for custom player commands.
function job_self_command(cmdParams, eventArgs)
if cmdParams[1]:lower() == 'petweather' then
handle_petweather()
eventArgs.handled = true
elseif cmdParams[1]:lower() == 'siphon' then
handle_siphoning()
eventArgs.handled = true
elseif cmdParams[1]:lower() == 'pact' then
handle_pacts(cmdParams)
eventArgs.handled = true
end
end
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
classes.CustomIdleGroups:clear()
if pet.isvalid then
if avatars:contains(pet.name) then
classes.CustomIdleGroups:append('Avatar')
elseif spirits:contains(pet.name) then
classes.CustomIdleGroups:append('Spirit')
end
end
end
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell)
if spell.type == 'BloodPactRage' then
if magicalRagePacts:contains(spell.english) then
return 'MagicalBloodPactRage'
else
return 'PhysicalBloodPactRage'
end
end
end
-- Cast the appopriate storm for the currently summoned avatar, if possible.
function handle_petweather()
if player.sub_job ~= 'SCH' then
add_to_chat(122, "You can not cast storm spells")
return
end
if not pet.isvalid then
add_to_chat(122, "You do not have an active avatar.")
return
end
local element = pet.element
if element == 'Thunder' then
element = 'Lightning'
end
if S{'Light','Dark','Lightning'}:contains(element) then
add_to_chat(122, 'You do not have access to '..elements.storm_of[element]..'.')
return
end
local storm = elements.storm_of[element]
if storm then
send_command('@input /ma "'..elements.storm_of[element]..'" <me>')
else
add_to_chat(123, 'Error: Unknown element ('..tostring(element)..')')
end
end
-- Custom uber-handling of Elemental Siphon
function handle_siphoning()
if areas.Cities:contains(world.area) then
add_to_chat(122, 'Cannot use Elemental Siphon in a city area.')
return
end
local siphonElement
local stormElementToUse
local releasedAvatar
local dontRelease
-- If we already have a spirit out, just use that.
if pet.isvalid and spirits:contains(pet.name) then
siphonElement = pet.element
dontRelease = true
-- If current weather doesn't match the spirit, but the spirit matches the day, try to cast the storm.
if player.sub_job == 'SCH' and pet.element == world.day_element and pet.element ~= world.weather_element then
if not S{'Light','Dark','Lightning'}:contains(pet.element) then
stormElementToUse = pet.element
end
end
-- If we're subbing /sch, there are some conditions where we want to make sure specific weather is up.
-- If current (single) weather is opposed by the current day, we want to change the weather to match
-- the current day, if possible.
elseif player.sub_job == 'SCH' and world.weather_element ~= 'None' then
local intense = get_weather_intensity()
-- We can override single-intensity weather; leave double weather alone, since even if
-- it's partially countered by the day, it's not worth changing.
if intense == 1 then
-- If current weather is weak to the current day, it cancels the benefits for
-- siphon. Change it to the day's weather if possible (+0 to +20%), or any non-weak
-- weather if not.
-- If the current weather matches the current avatar's element (being used to reduce
-- perpetuation), don't change it; just accept the penalty on Siphon.
if world.weather_element == elements.weak_to[world.day_element] and
(not pet.isvalid or world.weather_element ~= pet.element) then
-- We can't cast lightning/dark/light weather, so use a neutral element
if S{'Light','Dark','Lightning'}:contains(world.day_element) then
stormElementToUse = 'Wind'
else
stormElementToUse = world.day_element
end
end
end
end
-- If we decided to use a storm, set that as the spirit element to cast.
if stormElementToUse then
siphonElement = stormElementToUse
elseif world.weather_element ~= 'None' and world.weather_element ~= elements.weak_to[world.day_element] then
siphonElement = world.weather_element
else
siphonElement = world.day_element
end
local command = ''
local releaseWait = 0
if pet.isvalid and avatars:contains(pet.name) then
command = command..'input /pet "Release" <me>;wait 1.1;'
releasedAvatar = pet.name
releaseWait = 10
end
if stormElementToUse then
command = command..'input /ma "'..elements.storm_of[stormElementToUse]..'" <me>;wait 4;'
releaseWait = releaseWait - 4
end
if not (pet.isvalid and spirits:contains(pet.name)) then
command = command..'input /ma "'..elements.spirit_of[siphonElement]..'" <me>;wait 4;'
releaseWait = releaseWait - 4
end
command = command..'input /ja "Elemental Siphon" <me>;'
releaseWait = releaseWait - 1
releaseWait = releaseWait + 0.1
if not dontRelease then
if releaseWait > 0 then
command = command..'wait '..tostring(releaseWait)..';'
else
command = command..'wait 1.1;'
end
command = command..'input /pet "Release" <me>;'
end
if releasedAvatar then
command = command..'wait 1.1;input /ma "'..releasedAvatar..'" <me>'
end
send_command(command)
end
-- Handles executing blood pacts in a generic, avatar-agnostic way.
-- cmdParams is the split of the self-command.
-- gs c [pact] [pacttype]
function handle_pacts(cmdParams)
if areas.Cities:contains(world.area) then
add_to_chat(122, 'You cannot use pacts in town.')
return
end
if not pet.isvalid then
add_to_chat(122,'No avatar currently available. Returning to macro set 2.')
set_macro_page(10)
return
end
if spirits:contains(pet.name) then
add_to_chat(122,'Cannot use pacts with spirits.')
return
end
if not cmdParams[2] then
add_to_chat(123,'No pact type given.')
return
end
local pact = cmdParams[2]:lower()
if not pacts[pact] then
add_to_chat(123,'Unknown pact type: '..tostring(pact))
return
end
if pacts[pact][pet.name] then
if pact == 'astralflow' and not buffactive['astral flow'] then
add_to_chat(122,'Cannot use Astral Flow pacts without 2hr active.')
return
end
-- Leave out target; let Shortcuts auto-determine it.
send_command('@input /pet "'..pacts[pact][pet.name]..'"')
else
add_to_chat(122,pet.name..' does not have a pact of type ['..pact..'].')
end
end
function create_pact_timer(spell)
-- Create custom timers for ward pacts.
if durations and durations[spell.english] then
local timer_cmd = 'timers c "'..spell.english..'" '..tostring(durations[spell.english])..' down'
if timer_icons[spell.english] then
timer_cmd = timer_cmd..' '..timer_icons[spell.english]
end
send_command(timer_cmd)
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
set_macro_page(10, 2)
end
Phoenix.Jiluun
サーバ: Phoenix
Game: FFXI
Posts: 33
By Phoenix.Jiluun 2014-05-18 05:45:04
Hello Recently got BRD Relic and I have Terpander.
Was looking for a spellcast got sent to Moteten's so have been trying to understand it best that I can. So far have only renamed gear slots nothing else that I can think of. Problem is I cant seem to find nor does the precast gear work properly. I am positive its something I done wrong so here is a picture of what Spellcast says Its equiping.
I do have all files in proper folder.
This is what I want for my precast. input /equip legs "Gendewitha Spats";
input /equip main "Felibre's Dague";
input /equip body "Sha'ir Manteel";
input /equip head "Aoidos' Calot +2";
input /equip range "Gjallarhorn";
input /equip sub "Genbu's Shield";
input /equip waist "Aoidos' Belt";
input /equip feet "Bihu Slippers +1";
input /equip back "Swith Cape";
input /equip ring1 "Prolix Ring";
input /equip hands "Mdk. Dastanas +1";
input /equip ear1 "Loquac. Earring";
input /equip ear2 "Aoidos' Earring";
Equip List on Cast
Here is the whole thing Not sure what part I messed up. <?xml version="1.0" ?>
<spellcast xmlns="http://www.windower.net/spellcast/"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.windower.net/spellcast/ spellcast.xsd">
<!-- Last modified: 11/21/2013 2:45:39 AM -->
<config Debug="false"
ShowGearSwaps="true"
ShowSpellInfo="true"
RequireVersion="2.30"
/>
<!-- Set default variable values -->
<variables clear="true">
<!-- General configuration -->
<xi:include href="Mote-Config-Include.xml" xpointer="/includes/include[@name='ConfigurationVars']/*" />
<var name="TPWeapon">Dagger</var>
<var name="CritWS">Evisceration</var>
<var name="Options.DefenseModes">PDT</var>
<var name="Options.OffenseModes">Normal</var>
<var name="Options.WSModes">Default</var>
<!-- General utility -->
<xi:include href="Mote-Config-Include.xml" xpointer="/includes/include[@name='UtilityVars']/*" />
<xi:include href="Mote-Config-Include.xml" xpointer="/includes/include[@name='ElementalStaves']/*" />
<xi:include href="Mote-Config-Include.xml" xpointer="/includes/include[@name='RecastDurations']/*" />
<xi:include href="Mote-Config-Include.xml" xpointer="/includes/include[@name='FastCastVars']/*" />
<!-- How much fast cast is available in gear. -general for universal fast cast,
and individual vars for deltas relative to -general for that skill type. -->
<!-- Nahtirah Hat 10, Gendewitha hands 7, Orvail Pants 5, Chelona Boots +1 5, Swith Cape 3,
Loquacious Earring 2, Prolix Ring 2 -->
<var name="FastCastGear-General">34</var>
<!-- AF3+2 head (2% more than Nahtirah), Bokwus feet (1% more than Chelona),
Shair Manteel 12, AF3 neck 3, AF3 belt 3, AF3 earring 2, Gendewitha hands (+2% for song only) -->
<var name="FastCastGear-Singing">59</var>
<!-- Heka body -->
<var name="FastCastGear-Cure">49</var>
<!-- Siegel Sash -->
<var name="FastCastGear-EnhancingMagic">42</var>
<!-- Local Vars -->
<var name="IdleFeet">Serpentes Sabots</var>
<var name="RestFeet">Serpentes Sabots</var>
<var name="Nightingale">No</var>
<var name="Pianissimo">No</var>
<var name="UseDaurdabla">True</var>
<var name="UseMinstrelRing">No</var>
<var name="YellowHP">1190</var>
<var name="SongBuffs">Victory March|Advancing March|Valor Minuet*|Mage's Ballad*|Blade Madrigal|Sword Madrigal|Chocobo Mazurka|Raptor Mazurka|Sentinel's Scherzo|Dragonfoe Mambo|Sheepfoe Mambo|Knight's Minne*|Goddess's Hymnus|Archer's Prelude|Hunter's Prelude|Army's Paeon*|*Etude|*Carol|*Carol II</var>
<var name="SongDebuffs">Carnage Elegy|Battlefield Elegy|Foe Requiem*|Foe Lullaby*|Horde Lullaby*|Magic Finale|Maiden's Virelai|*Threnody</var>
<var name="Daggers">Izhiikoh|Macoquetza|Thokcha|Felibre's Dague|Oynos Knife</var>
<var name="ClassBindCtrlTilde">input /ma ChocoboMazurka <me></var>
</variables>
<sets>
<!-- Groups with constant sets, regardless of Area: Common, BasicJAs, BasicMagic. -->
<!-- CommonGroup is for idle, resting, PDT/MDT, movement, and various job-specific stuff -->
<group name="Common" default="true">
<set name="None">
</set>
<set name="Idle-Town-Normal">
<main>Earth Staff</main>
<sub>Quire Grip</sub>
<range>Oneiros Harp</range>
<head>Aoidos' Calot +2</head>
<neck>Wiglen Gorget</neck>
<lear>Bloodgem Earring</lear>
<rear>Loquacious Earring</rear>
<!-- Body idles in Manteel (or Kalasiris) so that the AF3+2 is
properly equipped on midcast for song duration effect. -->
<body>Sha'ir Manteel</body>
<!-- Hands idle in Serpentes so that the AF3+2 is
properly equipped on midcast for March effect
(Schellenband on precast). -->
<hands>Serpentes Cuffs</hands>
<lring>Sheltered Ring</lring>
<rring>Paguroidea Ring</rring>
<back>Umbra Cape</back>
<waist>Flume Belt</waist>
<legs>Nares Trews</legs>
<feet>Aoidos' Cothurnes +2</feet>
</set>
<set name="Idle-Field-Normal" BaseSet="Idle-Town-Normal|BasePDT|Regen|Refresh">
</set>
<set name="Refresh">
<head>Nefer Khat +1</head>
<body>Heka's Kalasiris</body>
<hands>Serpentes Cuffs</hands>
<legs>Nares Trews</legs>
<feet>Serpentes Sabots</feet>
</set>
<set name="Regen">
<range>Oneiros Harp</range>
<neck>Wiglen Gorget</neck>
<lring>Sheltered Ring</lring>
<rring>Paguroidea Ring</rring>
</set>
<set name="Resting-Normal" BaseSet="Refresh">
<main>$Staff-HMP</main>
</set>
<set name="Kite|Move">
<feet>Aoidos' Cothrn. +2</feet>
</set>
<!-- ***************************** -->
<!-- Sets for defenses -->
<!-- ***************************** -->
<set name="BasePDT">
<main>$Staff-PDT</main>
<head>Bihu Roundlet +1</head>
<neck>Twilight Torque</neck>
<body>Bihu Jstcorps +1</body>
<hands>Bihu Cuffs +1</hands>
<lring>Dark Ring</lring>
<rring>Dark Ring</rring>
<back>Umbra Cape</back>
<waist>Flume Belt</waist>
<legs>Bihu Cannions +1</legs>
<feet>Bihu Slippers +1</feet>
</set>
<set name="PhysDef-PDT" BaseSet="BasePDT">
<feet>Frisky Sabots</feet>
</set>
<set name="MDT-*|Resist-*">
<main>$Staff-PDT</main>
<head>Bihu Roundlet +1</head>
<neck>Twilight Torque</neck>
<body>Bihu Jstcorps +1</body>
<hands>Bihu Cuffs +1</hands>
<lring>Dark Ring</lring>
<rring>Dark Ring</rring>
<back>Mollusca Mantle</back>
<waist>Flume Belt</waist>
<legs>Bihu Cannions +1</legs>
<feet>Bihu Slippers +1</feet>
</set>
<!-- Weak set -->
<set name="WeakSet">
<rear>Bloodgem Earring</rear>
<rring>Meridian Ring</rring>
</set>
<!-- Use this to force yellow HP if using Minstrel's ring in SongFastCast set.
Experimental. -->
<set name="ForceYellowHP">
</set>
</group>
<!-- BasicJA group is for gear sets designed to enhance JAs used on self or other players,
that won't vary by Area. -->
<group name="BasicJAs">
<!-- ***************************** -->
<!-- Sets for JAs -->
<!-- ***************************** -->
<!-- Chr/Vit + Waltz Potency -->
<set name="Waltz">
</set>
</group>
<!-- BasicMagic group is for magic casting that won't vary by area, such as fast cast,
cures and enhancing magic. -->
<group name="BasicMagic">
<!-- ***************************** -->
<!-- Sets for magic casting -->
<!-- ***************************** -->
<set name="FastRecast">
<range>Angel Lyre</range>
<head>Nahtirah Hat</head>
<body>Goliard Saio</body>
<hands>Bokwus Gloves</hands>
<legs>Bokwus Slops</legs>
<feet>Bokwus Boots</feet>
</set>
<set name="SongRecast">
<back>Harmony Cape</back>
<waist>Corvax Sash</waist>
<legs>Aoidos' Rhing. +2</legs>
</set>
<set name="SongEffect">
<neck>Aoidos' Matinee</neck>
<head>Aoidos' Calot +2</head>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<legs>Aoidos' Rhing. +2</legs>
<feet>Aoidos' Cothurnes +2</feet>
</set>
<set name="Cure">
<main>$Staff-Cures</main>
<body>Heka's Kalasiris</body>
<hands>Bokwus Gloves</hands>
<lring>Ephedra Ring</lring>
<rring>Sirona's Ring</rring>
</set>
<!-- Have 167 Enhancing skill from /whm.
Have 86 Mnd on brd/whm.
Need 43 points in Enhancing/3 and Mnd.
Manasa: 17 points
Nares Trews: 14
Chelona feet: 7
Carapacho hands: 5
== 43
-->
<set name="Stoneskin">
<body>Manasa Chasuble</body>
<back>Swith Cape</back>
<waist>Siegel Sash</waist>
<legs>Nares Trews</legs>
<feet>Chelona Boots +1</feet>
</set>
<set name="Enhancing">
<neck>Colossus's Torque</neck>
<body>Manasa Chasuble</body>
<legs>Portent Pants</legs>
</set>
<set name="Cursna">
<neck>Malison Medallion</neck>
<hands>Hieros Mittens</hands>
<lring>Ephedra Ring</lring>
</set>
<set name="Daurdabla" BaseSet="SongFastCast">
<range>Daurdabla</range>
</set>
</group>
<!-- Group for defining fast cast gear totals while any subjob other than /rdm. -->
<group name="FastCast-*">
<!-- Construct fast cast sets for a set amount of fast cast gear. -->
<!-- Break down by spell category (either Cure, or the skill type). -->
<!-- Do not include traits or merits. -->
<!-- Tiers are: 10, 20, 30, 40, 50, 60, 65, 70, 75, 80. -->
<!-- Can use a wildcard when it's not possible to go any higher. -->
<set name="FastCast-Singing-10">
<rear>Loquacious Earring</rear>
<lring>Prolix Ring</lring>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-20">
<head>Aoidos' Calot +2</head>
<rear>Loquacious Earring</rear>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-30">
<head>Aoidos' Calot +2</head>
<rear>Loquacious Earring</rear>
<hands>Gendewitha Gages</hands>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-40">
<head>Aoidos' Calot +2</head>
<rear>Loquacious Earring</rear>
<body>Sha'ir Manteel</body>
<hands>Gendewitha Gages</hands>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-50">
<head>Aoidos' Calot +2</head>
<neck>Aoidos' Matinee</neck>
<lear>Aoidos' Earring</lear>
<rear>Loquacious Earring</rear>
<body>Sha'ir Manteel</body>
<hands>Gendewitha Gages</hands>
<waist>Aoidos' Belt</waist>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-*">
<head>Aoidos' Calot +2</head>
<neck>Aoidos' Matinee</neck>
<lear>Aoidos' Earring</lear>
<rear>Loquacious Earring</rear>
<body>Sha'ir Manteel</body>
<hands>Marduk's Dastanas +1</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<waist>Aoidos' Belt</waist>
<legs>Gendewitha Spats</legs>
<feet>Bihu Slippers +1</feet>
</set>
<set name="FastCast-Cure-10">
<rear>Loquacious Earring</rear>
<hands>Gendewitha Gages</hands>
</set>
<set name="FastCast-Cure-20">
<rear>Loquacious Earring</rear>
<body>Heka's Kalasiris</body>
<back>Swith Cape</back>
</set>
<set name="FastCast-Cure-30">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<body>Heka's Kalasiris</body>
<back>Swith Cape</back>
</set>
<set name="FastCast-Cure-40">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<body>Heka's Kalasiris</body>
<back>Swith Cape</back>
<legs>Orvail Pants</legs>
<feet>Chelona Boots +1</feet>
</set>
<set name="FastCast-Cure-*">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<body>Heka's Kalasiris</body>
<hands>Gendewitha Gages</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<legs>Orvail Pants</legs>
<feet>Chelona Boots +1</feet>
</set>
<set name="FastCast-EnhancingMagic-10">
<rear>Loquacious Earring</rear>
<waist>Siegel Sash</waist>
</set>
<set name="FastCast-EnhancingMagic-20">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<waist>Siegel Sash</waist>
</set>
<set name="FastCast-EnhancingMagic-30">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<waist>Siegel Sash</waist>
<legs>Orvail Pants</legs>
<feet>Chelona Boots +1</feet>
</set>
<set name="FastCast-EnhancingMagic-*">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<hands>Gendewitha Gages</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<waist>Siegel Sash</waist>
<legs>Orvail Pants</legs>
<feet>Chelona Boots +1</feet>
</set>
<set name="FastCast-*-10">
<rear>Loquacious Earring</rear>
<back>Swith Cape</back>
<legs>Orvail Pants</legs>
</set>
<set name="FastCast-*-20">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<back>Swith Cape</back>
<legs>Orvail Pants</legs>
</set>
<set name="FastCast-*-30">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<hands>Gendewitha Gages</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<legs>Orvail Pants</legs>
</set>
<set name="FastCast-*">
<head>Nahtirah Hat</head>
<rear>Loquacious Earring</rear>
<hands>Gendewitha Gages</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<legs>Orvail Pants</legs>
<feet>Chelona Boots +1</feet>
</set>
</group>
<!-- Groups that vary by Area/Situation (prefix with Area/Situation name): Melee, Actions, Magic -->
<!-- Melee is for TP sets (melee or ranged) -->
<group name="Outside-Melee">
<!-- ***************************** -->
<!-- Sets for TP -->
<!-- ***************************** -->
<!-- Melee Brd! -->
<set name="TP-Dagger-Normal-*">
<range>Angel Lyre</range>
<head>Nahtirah Hat</head>
<neck>Asperity Necklace</neck>
<lear>Bladeborn Earring</lear>
<rear>Steelflash Earring</rear>
<body>Bard's Justaucorps +2</body>
<hands>Buremte Gloves</hands>
<lring>Rajas Ring</lring>
<rring>K'ayres Ring</rring>
<back>Atheling Mantle</back>
<waist>Goading Belt</waist>
<legs>Byakko's Haidate</legs>
<feet>Bokwus Boots</feet>
</set>
<set name="TP-DW-Normal-*">
<range>Angel Lyre</range>
<head>Nahtirah Hat</head>
<neck>Asperity Necklace</neck>
<lear>Brutal Earring</lear>
<rear>Suppanomimi</rear>
<body>Bard's Justaucorps +2</body>
<hands>Buremte Gloves</hands>
<lring>Rajas Ring</lring>
<rring>K'ayres Ring</rring>
<back>Atheling Mantle</back>
<waist>Goading Belt</waist>
<legs>Byakko's Haidate</legs>
<feet>Bokwus Boots</feet>
</set>
<set name="TP-Default-Normal-*">
<range>Angel Lyre</range>
<head>Nahtirah Hat</head>
<neck>Asperity Necklace</neck>
<lear>Bladeborn Earring</lear>
<rear>Steelflash Earring</rear>
<body>Bard's Justaucorps +2</body>
<hands>Buremte Gloves</hands>
<lring>Rajas Ring</lring>
<rring>K'ayres Ring</rring>
<back>Atheling Mantle</back>
<waist>Goading Belt</waist>
<legs>Byakko's Haidate</legs>
<feet>Bokwus Boots</feet>
</set>
</group>
<!-- Actions is for offensive JA-type actions (weaponskills, jumps, steps, etc) -->
<group name="Outside-Actions">
<!-- ***************************** -->
<!-- Sets for weaponskills -->
<!-- ***************************** -->
<set name="WS-Evisceration-*">
<head>Nahtirah Hat</head>
<neck>Soil Gorget</neck>
<lear>Bladeborn Earring</lear>
<rear>Steelflash Earring</rear>
<body>Bard's Justaucorps +2</body>
<hands>Buremte Gloves</hands>
<lring>Rajas Ring</lring>
<rring>K'ayres Ring</rring>
<back>Atheling Mantle</back>
<waist>Anguinus Belt</waist>
<legs>Byakko's Haidate</legs>
</set>
<set name="WS-Exenterator-*">
<head>Nahtirah Hat</head>
<neck>Thunder Gorget</neck>
<lear>Bladeborn Earring</lear>
<rear>Steelflash Earring</rear>
<body>Bard's Justaucorps +2</body>
<hands>Seiryu's Gloves</hands>
<lring>Rajas Ring</lring>
<rring>Stormsoul Ring</rring>
<back>Atheling Mantle</back>
<waist>Anguinus Belt</waist>
<legs>Rubeus Spats</legs>
<feet>Bokwus Boots</feet>
</set>
<set name="WS-*">
<head>Nahtirah Hat</head>
<neck>Asperity Necklace</neck>
<lear>Bladeborn Earring</lear>
<rear>Steelflash Earring</rear>
<body>Bard's Justaucorps +2</body>
<hands>Buremte Gloves</hands>
<lring>Rajas Ring</lring>
<rring>K'ayres Ring</rring>
<back>Atheling Mantle</back>
<waist>Anguinus Belt</waist>
<legs>Rubeus Spats</legs>
<feet>Bokwus Boots</feet>
</set>
</group>
<!-- Magic is for offensive magic (nukes, enfeebling, etc) -->
<group name="Outside-Magic">
<!-- Charisma, Singing or Magic Acc gear -->
<set name="SongAcc">
<head>Nahtirah Hat</head>
<lear>Psystorm Earring</lear>
<rear>Lifestorm Earring</rear>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<rring>Mediator's Ring</rring>
<back>Refraction Cape</back>
<waist>Demonry Sash</waist>
<legs>Aoidos' Rhing. +2</legs>
<feet>Bokwus Boots</feet>
</set>
<set name="Enfeebling">
<head>Nahtirah Hat</head>
<neck>Weike Torque</neck>
<lear>Psystorm Earring</lear>
<rear>Lifestorm Earring</rear>
<body>Manasa Chasuble</body>
<hands>Yaoyotl Gloves</hands>
<lring>Aquasoul Ring</lring>
<rring>Aquasoul Ring</rring>
<back>Refraction Cape</back>
<waist>Demonry Sash</waist>
<legs>Nares Trews</legs>
<feet>Bokwus Boots</feet>
</set>
<!-- Skill for Wind instruments or Singing -->
<set name="Wind">
<range>Gjallarhorn</range>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<legs>Aoidos' Rhing. +2</legs>
</set>
<!-- Skill for String instruments or Singing -->
<set name="String">
<range>Pyf Harp</range>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<legs>Aoidos' Rhing. +2</legs>
</set>
<!-- Instruments (and some bonus gear) per song type. -->
<set name="March" BaseSet="Wind">
<hands>Aoidos' Manchettes +2</hands>
<legs>Marduk's Shalwar +1</legs>
<feet>Brioso Slippers +1</feet>
</set>
<set name="Madrigal" BaseSet="Wind">
<head>Aoidos' Calot +2</head>
</set>
<set name="Minuet" BaseSet="Wind">
<body>Aoidos' Hongreline +2</body>
</set>
<set name="Ballad" BaseSet="Wind">
<legs>Aoidos' Rhing. +2</legs>
</set>
<set name="Scherzo" BaseSet="Wind">
<feet>Aoidos' Cothrn. +2</feet>
</set>
<set name="Carol" BaseSet="Wind">
<head>Aoidos' Calot +2</head>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<legs>Aoidos' Rhingrave +2</legs>
<feet>Aoidos' Cothrn. +2</feet>
</set>
<set name="Mazurka" BaseSet="Wind">
</set>
<!-- Remaining song types are all the same, so just use a catch-all. -->
<set name="*" BaseSet="Wind">
</set>
<!--
<set name="Elegy" BaseSet="Wind">
</set>
<set name="Etude" BaseSet="Wind">
</set>
<set name="Prelude" BaseSet="Wind">
</set>
<set name="Requiem" BaseSet="Wind">
</set>
<set name="Mambo" BaseSet="Wind">
</set>
<set name="Minne" BaseSet="Wind">
</set>
<set name="Threnody" BaseSet="Wind">
</set>
<set name="Hymnus" BaseSet="Wind">
</set>
<set name="Paeon" BaseSet="Wind">
</set>
<set name="Virelai" BaseSet="Wind">
</set>
<set name="Lullaby" BaseSet="Wind">
</set>
<set name="Finale" BaseSet="Wind">
</set>
-->
<!-- Original sets with individual intruments. -->
<!--
<set name="March" BaseSet="Wind">
<range>Faerie Piccolo</range>
<hands>Aoidos' Manchettes +2</hands>
</set>
<set name="Madrigal" BaseSet="Wind">
<range>Cantabank's Horn</range>
<head>Aoidos' Calot +2</head>
</set>
<set name="Minuet" BaseSet="Wind">
<range>Apollo's Flute</range>
<body>Aoidos' Hongreline +2</body>
</set>
<set name="Ballad" BaseSet="String">
<range>Crooner's Cithara</range>
<legs>Aoidos' Rhing. +2</legs>
</set>
<set name="Carol" BaseSet="Wind">
<range>Crumhorn +1</range>
<head>Aoidos' Calot +2</head>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<legs>Aoidos' Rhingrave +2</legs>
<feet>Aoidos' Cothrn. +2</feet>
</set>
<set name="Scherzo" BaseSet="Wind">
<feet>Aoidos' Cothrn. +2</feet>
</set>
<set name="Lullaby" BaseSet="Wind">
<range>Pan's Horn</range>
</set>
<set name="Finale" BaseSet="Wind">
<range>Pan's Horn</range>
</set>
<set name="Elegy" BaseSet="Wind">
<range>Syrinx</range>
</set>
<set name="Mazurka" BaseSet="String">
<range>Vihuela</range>
</set>
<set name="Paeon" BaseSet="String">
<range>Oneiros Harp</range>
</set>
<set name="Etude" BaseSet="String">
<range>Rose Harp +1</range>
</set>
<set name="Prelude" BaseSet="Wind">
<range>Cantabank's Horn</range>
</set>
<set name="Requiem" BaseSet="Wind">
<range>Siren Flute</range>
</set>
<set name="Mambo" BaseSet="String">
<range>Vihuela</range>
</set>
<set name="Minne" BaseSet="Wind">
<range>Syrinx</range>
</set>
<set name="Threnody" BaseSet="Wind">
<range>Piccolo +1</range>
</set>
<set name="Hymnus" BaseSet="String">
<range>Angel Lyre</range>
</set>
<set name="Virelai" BaseSet="String">
<range>Cythara Anglica +1</range>
</set>
-->
</group>
</sets>
<rules>
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='RunFirstUpdate']/*" />
<!-- Daurdabla filler song handling -->
<if spell="ClassTrigger">
<if SpellTargetRaw="DaurFiller1">
<changespell spell="Goddess's Hymnus" />
<changetarget target="<me>" />
<equip when="precast|midcast" setgroup="BasicMagic" set="Daurdabla" />
<return />
</if>
<elseif SpellTargetRaw="DaurFiller2">
<changespell spell="Raptor Mazurka" />
<changetarget target="<me>" />
<equip when="precast|midcast" setgroup="BasicMagic" set="Daurdabla" />
<return />
</elseif>
<elseif SpellTargetRaw="Daurdabla">
<var cmd="set UseDaurdabla True" />
<return />
</elseif>
</if>
<if mode="OR" EquipMain="$Daggers" status="Engaged">
<changelock slot="main|sub" when="All" lock="true" />
</if>
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='ReturnRules']/*" />
<!-- Make sure locks are in place before auto-changing gear. -->
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='EquipmentLockRules']/*" />
<!-- Auto-change gear call via Aftercast to limit lag. -->
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='ChangeGearAftercast']/*" />
<!-- Other general imports. -->
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='RecastWarnings']/*" />
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='FastCastCalculations']/*" />
<!-- First set variable values based on current status for autoset changes. -->
<if spell="Update|autoset">
<!-- Autoset (engage/disengage/rest/etc) gets same checks as a Reset command -->
<xi:include href="Mote-Rules-Include.xml" xpointer="//include[@name='AreaRules']/*" />
<if status="Engaged">
<var cmd="set Movement None" />
</if>
<elseif status="Idle">
<var cmd="set Movement Move" />
</elseif>
<if NotBuffActive="Pianissimo">
<var cmd="set Pianissimo No" />
</if>
<if NotBuffActive="Nightingale">
<var cmd="set Nightingale No" />
</if>
<!-- Check for weakness -->
<if BuffActive="Weakness">
<var cmd="set WeaknessArmor WeakSet" />
</if>
<else>
<var cmd="set WeaknessArmor None" />
</else>
<if SpellTargetRaw=".Manual">
<addtochat>Manual update. PD:$PhysicalDefense, MD:$MagicalDefense, $Movement</addtochat>
</if>
</if>
<!-- Second: Adjust configurations based on action/trigger. -->
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='UniversalTriggerRules']/*" />
<!-- Job Ability rules -->
<if type="JobAbility">
<if Spell="Pianissimo">
<var cmd="set Pianissimo Yes" />
<return />
</if>
<elseif Spell="Nightingale">
<var cmd="set Nightingale Yes" />
<command>wait 60;sc var set Nightingale No</command>
<equip when="precast">
<feet>Bihu Slippers +1</feet>
</equip>
<equip when="aftercast">
<feet>Aoidos' Cothurnes +2</feet>
</equip>
<return />
</elseif>
<elseif Spell="Troubadour">
<equip when="precast">
<body>Bihu Jstcorps +1</body>
</equip>
</elseif>
<elseif Spell="Soul Voice">
<equip when="precast">
<legs>Bihu Cannions +1</legs>
</equip>
</elseif>
<elseif Spell="Tenuto|Marcato">
</elseif>
</if>
<if Status="Engaged">
<if EquipMain="$Daggers">
<if EquipSub="$Daggers">
<var cmd="set TPWeapon DW" />
</if>
<else>
<var cmd="set TPWeapon Dagger" />
</else>
</if>
<else>
<var cmd="set TPWeapon Default" />
</else>
<var cmd="set BaseGroup $GroupArea-Melee" />
<var cmd="set BaseLayer TP-$TPWeapon-$OffenseMode-$DefenseMode" />
</if>
<else>
<var cmd="set BaseGroup Common" />
<var cmd="set BaseLayer Idle-$IdleArea-$IdleMode" />
</else>
<var cmd="set AdditionalSets $Movement|$PhysicalDefense|$MagicalDefense|$KiteMode" />
<!-- And assign to appropriate sets for idle/aftercast/etc -->
<xi:include href="Mote-Rules-Include.xml" xpointer="//include[@name='HandleEquippingGear']/*" />
<if advanced='"$UseFastCastAftercast"="Yes"'>
<if advanced='$FastCastTierActual > 0'>
<equip when="Precast" setgroup="FastCast" set="FastCast-$FastCastCategory-$FastCastTierActual" />
</if>
</if>
<xi:include href="Mote-Rules-Include.xml" xpointer="/includes/include[@name='ElementalStaffRules']/*" />
<!-- ************************************************************************ -->
<!-- The following sections are solely for setting precast/midcast equipment, -->
<!-- and should not be changing any configuration options. -->
<!-- ************************************************************************ -->
<if type="BardSong">
<if NotBuffActive="Pianissimo" advanced='"$Pianissimo"="No"'>
<if NotSpellTargetType="SELF" ValidTarget="SELF">
<addtochat>Force to Me</addtochat>
<changetarget target="<me>" />
</if>
</if>
<!-- <equip when="midcast" set="Haste" /> -->
<if Spell="$SongDebuffs">
<equip when="midcast" setgroup="$GroupArea-Magic" set="SongAcc" />
<if Spell="Carnage Elegy|Battlefield Elegy">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Elegy" />
<equip when="midcast" setgroup="BasicMagic" set="SongRecast" />
</if>
<elseif Spell="*Threnody">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Threnody" />
</elseif>
<elseif Spell="Foe Lullaby*|Horde Lullaby*">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Lullaby" />
</elseif>
<elseif Spell="Magic Finale">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Finale" />
<equip when="midcast" setgroup="BasicMagic" set="SongRecast" />
</elseif>
<elseif Spell="Foe Requiem*">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Requiem" />
</elseif>
<elseif Spell="Maiden's Virelai">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Virelai" />
</elseif>
</if>
<else>
<if Spell="Victory March|Advancing March">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="March" />
</if>
<elseif Spell="Valor Minuet*">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Minuet" />
</elseif>
<elseif Spell="Mage's Ballad*">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Ballad" />
</elseif>
<elseif Spell="Blade Madrigal|Sword Madrigal">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Madrigal" />
</elseif>
<elseif Spell="Chocobo Mazurka|Raptor Mazurka">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Mazurka" />
</elseif>
<elseif Spell="Sentinel's Scherzo">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Scherzo" />
</elseif>
<elseif Spell="Dragonfoe Mambo|Sheepfoe Mambo">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Mambo" />
</elseif>
<elseif Spell="*Etude">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Etude" />
</elseif>
<elseif Spell="*Carol">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Carol" />
</elseif>
<elseif Spell="Knight's Minne*">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Minne" />
</elseif>
<elseif Spell="Goddess's Hymnus">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Hymnus" />
</elseif>
<elseif Spell="Army's Paeon*">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Paeon" />
</elseif>
<elseif Spell="Archer's Prelude|Hunter's Prelude">
<equip when="precast|midcast" setgroup="$GroupArea-Magic" set="Prelude" />
</elseif>
<!-- Add song duration equipment to enhancing songs -->
<!-- Apply this on precast during Nightingale, since songs are instant cast. -->
<if mode="OR" BuffActive="Nightingale" advanced='"$Nightingale"="Yes"'>
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="SongEffect" />
</if>
<else>
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="SongRecast|SongEffect" />
<command when="midcast">wait 0.25;input /equip feet "Aoidos' Cothurnes +2"</command>
</else>
</else>
<if advanced='"$UseMinstrelRing"="Yes"' hpgt="$YellowHP">
<command>input //sc set ForceYellowHP</command>
<precastdelay delay="1" />
</if>
<if advanced='"$UseDaurdabla"="True"'>
<equip when="precast|midcast">
<range>Terpander</range>
</equip>
</if>
<var cmd="set Pianissimo No" />
<var cmd="set UseDaurdabla False" />
</if>
<elseif type="WhiteMagic">
<if Skill="HealingMagic">
<if Spell="Cure*|Curaga*">
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="Cure" />
</if>
<else>
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="FastRecast" />
<if Spell="Cursna">
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="Cursna" />
</if>
</else>
</if>
<elseif Skill="EnhancingMagic">
<if Spell="Stoneskin">
<equip when="Precast">
<hands>Carapacho Cuffs</hands>
</equip>
<!-- Build for exactly enough mnd/skill to max stoneskin.
brd/whm has 84 mnd at lvl 96
With 152 skill
need 130 total mnd to max stoneskin (+46)
Add haste for recast, and Siegel Sash for bonus damage absorbed.
-->
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="FastRecast|Stoneskin" />
</if>
<elseif Spell="Bar*">
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="Enhancing" />
</elseif>
<else>
<equip when="$EquipSpellGear" setgroup="BasicMagic" set="FastRecast" />
</else>
</elseif>
<elseif Skill="EnfeeblingMagic">
<equip when="$EquipSpellGear" setgroup="$GroupArea-Magic" set="Enfeebling" />
</elseif>
</elseif>
<elseif type="WeaponSkill">
<xi:include href="Mote-Rules-Include.xml" xpointer="//include[@name='DefineWeaponskillSet']/*" />
<equip when="Precast" set="$WSSet" />
</elseif>
<elseif type="Waltz">
<if NotSpell="Healing Waltz">
<equip when="Precast" setgroup="BasicJAs" set="Waltz" />
</if>
</elseif>
<elseif type="Ninjutsu">
<if Spell="Utsusemi*">
<equip when="Precast" setgroup="BasicMagic" set="FastCast" />
<equip when="Midcast" setgroup="BasicMagic" set="FastRecast" />
</if>
</elseif>
</rules>
</spellcast>
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-18 08:01:00
Problem is I cant seem to find
Can't seem to find what?
nor does the precast gear work properly
Please be more explicit. This tells me nothing.
I am positive its something I done wrong so here is a picture of what Spellcast says Its equiping.
This also tells me nothing. I have no idea what you're doing, what you're expecting, or what you're thinking is or isn't happening.
Also, learn to use the [code] tag.
Console states~ error in the user function Self_commands.Lua:32: attempt to index global 'selfcomandmaps' (a nil Value, also i think the runtime error in flow.lua:276: accompanies the previous error.
selfcommandmaps is a table that is in the Mote-SelfCommands.lua file. If you're getting a nil reference, you may have corrupted that file. Try downloading a fresh copy.
Basically is there a way to get your Lua to act as Byrths and revert back to the "set.idle.avatar" once it reads that the ability or spell timer is not ready?
That's how it should behave already. It's not a matter of "getting my lua to do that". What it needs is debugging on why that's not happening.
When I get a chance, I'll try testing out some smn stuff on my own, as well.
Phoenix.Jiluun
サーバ: Phoenix
Game: FFXI
Posts: 33
By Phoenix.Jiluun 2014-05-18 08:25:47
This is what I would like. I will tackle one issue at a time.
Precast Gear to work properly. I thought I had put it in the correct spot buy I may be wrong. I want to use the <set name="FastCast-Singing-*"> as the precast.
Code <group name="FastCast-*">
<!-- Construct fast cast sets for a set amount of fast cast gear. -->
<!-- Break down by spell category (either Cure, or the skill type). -->
<!-- Do not include traits or merits. -->
<!-- Tiers are: 10, 20, 30, 40, 50, 60, 65, 70, 75, 80. -->
<!-- Can use a wildcard when it's not possible to go any higher. -->
<set name="FastCast-Singing-10">
<rear>Loquacious Earring</rear>
<lring>Prolix Ring</lring>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-20">
<head>Aoidos' Calot +2</head>
<rear>Loquacious Earring</rear>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-30">
<head>Aoidos' Calot +2</head>
<rear>Loquacious Earring</rear>
<hands>Gendewitha Gages</hands>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-40">
<head>Aoidos' Calot +2</head>
<rear>Loquacious Earring</rear>
<body>Sha'ir Manteel</body>
<hands>Gendewitha Gages</hands>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-50">
<head>Aoidos' Calot +2</head>
<neck>Aoidos' Matinee</neck>
<lear>Aoidos' Earring</lear>
<rear>Loquacious Earring</rear>
<body>Sha'ir Manteel</body>
<hands>Gendewitha Gages</hands>
<waist>Aoidos' Belt</waist>
<feet>Bokwus Boots</feet>
</set>
<set name="FastCast-Singing-*">
<head>Aoidos' Calot +2</head>
<neck>Aoidos' Matinee</neck>
<lear>Aoidos' Earring</lear>
<rear>Loquacious Earring</rear>
<body>Sha'ir Manteel</body>
<hands>Marduk's Dastanas +1</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<waist>Aoidos' Belt</waist>
<legs>Gendewitha Spats</legs>
<feet>Bihu Slippers +1</feet>
</set>
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-18 08:54:35
Precast Gear to work properly.
Define "work properly", and please explain what you feel is not working properly now.
Phoenix.Jiluun
サーバ: Phoenix
Game: FFXI
Posts: 33
By Phoenix.Jiluun 2014-05-18 09:09:34
Quote: Phoenix.Jiluun said: »
Precast Gear to work properly.
Define "work properly", and please explain what you feel is not working properly now.
The precast gear that spellcast showing isn't correct and the songs are going off after my idle set is back on. Here is a photo showing what it is saying my precast/midcast/ gear is.
Photo
This is what it should be but the photo isn't showing it. Code <set name="FastCast-Singing-*">
<head>Aoidos' Calot +2</head>
<neck>Aoidos' Matinee</neck>
<lear>Aoidos' Earring</lear>
<rear>Loquacious Earring</rear>
<body>Sha'ir Manteel</body>
<hands>Marduk's Dastanas +1</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<waist>Aoidos' Belt</waist>
<legs>Gendewitha Spats</legs>
<feet>Bihu Slippers +1</feet>
</set>
サーバ: Ragnarok
Game: FFXI
Posts: 209
By Ragnarok.Legendarycloud 2014-05-18 09:42:13
I also need some assistance Mote, if you're able to. (I'm pretty poor with gearswap at the moment but doing my best to learn!)
Currently I'm using your RDM.lua (the Kinematics one). The only thing is I would like to add a high magic accuracy set for Stun (which would essentially swap my Apamajas II to an iLvl staff). I would also need to know how to cycle between normal Macc and High Macc sets. I liked how Bokura's RDM.lua was set up, but he was missing the composure and enhancing magic rules that your gearswap has. The file I'm using is below. Any help would be greatly appreciated!
Code -------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff.Saboteur = buffactive.saboteur or false
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Normal'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.CastingModes = {'Normal'}
options.IdleModes = {'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
MeleeWeapons = S{"Buramenk'ah"}
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Chainspell'] = {body="Vitivation Tabard"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Atrophy Chapeau +1",
body="Atrophy Tabard +1",hands="Yaoyotl Gloves",
back="Refraction Cape",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
-- Fast cast sets for spells
-- 80% Fast Cast (including trait) for all spells, plus 5% quick cast
-- No other FC sets necessary.
sets.precast.FC = {ammo="Impatiens",
head="Atrophy Chapeau +1",neck="Orunmila's Torque",ear2="Loquacious Earring",
body="Vitivation Tabard",hands="Gendewitha Gages",ring1="Prolix Ring", ring2="Veneficium Ring",
back="Swith Cape",waist="Witful Belt",legs="Artsieq Hose",feet="Chelona Boots +1"}
sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty,body="Twilight Cloak"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
head="Atrophy Chapeau +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Atheling Mantle",waist="Caudata Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS,
{neck="Soil Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
ring1="Aquasoul Ring",ring2="Aquasoul Ring",waist="Soil Belt"})
sets.precast.WS['Sanguine Blade'] = {ammo="Witchstone",
head="Hagondes Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Strendu Ring",
back="Toro Cape",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Atrophy Chapeau +1",ear2="Loquacious Earring",
body="Vitivation Tabard",hands="Gendewitha Gages",ring1="Prolix Ring",
back="Swith Cape",waist="Witful Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.midcast.Cure = {main="Tamaxchi", sub="Genbu's Shield",
head="Gendewitha Caubeen",neck="Colossus's Torque",ear1="Roundel Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Karka Ring",
back="Pahtli Cape Cape",waist="Witful Belt",legs="Atrophy Tights",feet="Gendewitha Galoshes"}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast['Enhancing Magic'] = {
head="Atrophy Chapeau +1",neck="Colossus's Torque",
body="Vitivation Tabard",hands="Atrophy Gloves",ring1="Prolix Ring",
back="Estoqueur's Cape",waist="Olympus Sash",legs="Atrophy Tights",feet="Estoqueur's Houseaux +2"}
sets.midcast.Refresh = {legs="Estoqueur's Fuseau +2"}
sets.midcast.Stoneskin = {waist="Siegel Sash"}
sets.midcast['Enfeebling Magic'] = {main="Lehbrailg +2", sub="Mephitis Grip", ammo="Kalboron Stone",
head="Atrophy Chapeau +1",neck="Imbodla Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Atrophy Tabard +1",hands="Yaoyotl Gloves",ring1="Sangoma Ring",ring2="Perception Ring",
back="Refraction Cape",waist="Casso Sash",legs="Bokwus Slops",feet="Vitivation Boots"}
sets.midcast['Dia III'] = set_combine(sets.midcast['Enfeebling Magic'], {head="Vitivation Chapeau"})
sets.midcast['Slow II'] = set_combine(sets.midcast['Enfeebling Magic'], {head="Vitivation Chapeau"})
sets.midcast['Paralyze II'] = set_combine(sets.midcast['Enfeebling Magic'], {head="Vitivation Chapeau"})
sets.midcast['Elemental Magic'] = {main="Lehbrailg +2", sub="Wizzan Grip", ammo="Erlene's Notebook",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Novio Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Acumen Ring",
back="Toro Cape",waist=gear.ElementalObi,legs="Hagondes Pants",feet="Umbani Boots"}
gear.default.obi_waist = "Othila Sash"
sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {head=empty,body="Twilight Cloak"})
sets.midcast['Dark Magic'] = {main="Lehbrailg +2", sub="Mephitis Grip", ammo="Impatiens",
head="Atrophy Chapeau +1",neck="Imbodla Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Adhara Manteel",hands="Avesta Bangles",ring1="Sangoma Ring",ring2="Perception Ring",
back="Refraction Cape",waist="Goading Belt",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.Stun = set_combine(sets.midcast['Dark Magic'], {main="Apamajas II",neck="Orunmila's Torque",
ear1="Gwati Earring",ear2="Abyssal Earring",body="Hedera Cotehardie",hands="Hagondes Cuffs",
ring2="Veneficium Ring",back="Swith Cape",waist="Dynamic Belt +1",legs="Artsieq Hose",feet="Chelona Boots +1"})
--sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {ring2="Excelsis Ring"})
--sets.midcast.Aspir = sets.midcast.Drain
-- Sets for special buff conditions on spells.
sets.midcast.EnhancingDuration = {hands="Atrophy Gloves",back="Estoqueur's Cape",feet="Estoqueur's Houseaux +2"}
sets.buff.ComposureOther = {head="Estoqueur's Chappel +2",
body="Estoqueur's Sayon +2",hands="Estoqueur's Gantherots +2",
legs="Estoqueur's Fuseau +2",feet="Estoqueur's Houseaux +2"}
sets.buff.Saboteur = {hands="Estoqueur's Gantherots +2"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Chatoyant Staff",
head="Vitivation Chapeau",neck="Wiglen Gorget",
body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots +1"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle.Town = {main="Buramenk'ah",sub="Genbu's Shield",ammo="Impatiens",
head="Atrophy Chapeau +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Atrophy Tabard +1",hands="Atrophy Gloves +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Blood Cuisses",feet="Umbani Boots"}
sets.idle.Field = {main="Buramenk'ah",sub="Genbu's Shield",ammo="Impatiens",
head="Vitivation Chapeau",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Blood Cuisses",feet="Umbani Boots"}
sets.idle.Weak = {main="Buramenk'ah",sub="Genbu's Shield",ammo="Impatiens",
head="Vitivation Chapeau",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Blood Cuisses",feet="Umbani Boots"}
-- Defense sets
sets.defense.PDT = {
head="Atrophy Chapeau +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Gendewitha Gages",ring1="Dark Ring",ring2="Dark Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Hagondes Pants",feet="Gendewitha Galoshes"}
sets.defense.MDT = {ammo="Demonry Stone",
head="Atrophy Chapeau +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Atrophy Tabard +1",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Shadow Ring",
back="Engulfer Cape",waist="Flume Belt",legs="Bokwus Slops",feet="Gendewitha Galoshes"}
sets.Kiting = {legs="Crimson Cuisses"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {
head="Atrophy Chapeau +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Atrophy Gloves +1",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Atheling Mantle",waist="Goading Belt",legs="Osmium Cuisses",feet="Atrophy Boots"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
-- Default base equipment layer of fast recast.
equip(sets.midcast.FastRecast)
end
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
equip(sets.buff.Saboteur)
elseif spell.skill == 'Enhancing Magic' then
if buffactive.composure and spell.target.type == 'PLAYER' then
equip(sets.buff.ComposureOther)
elseif spell.target.type == 'SELF' then
equip(sets.midcast.EnhancingDuration)
end
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted then
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
if MeleeWeapons:contains(player.equipment.main) then
disable('main', 'sub')
else
enable('main', 'sub')
end
end
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
end
local meleeString = ''
if state.OffenseMode == 'Normal' then
--meleeString = 'Melee: Weapons locked, '
end
add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
'Kiting: '..on_off_names[state.Kiting])
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
Phoenix.Damnit
サーバ: Phoenix
Game: FFXI
Posts: 38
By Phoenix.Damnit 2014-05-18 11:19:08
thanks mote, I'll DL a new copy of self commands and see if that straightens it out :)
Edit: that fixed it boss, thank you :)
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-05-18 16:21:52
Ragnarok.Legendarycloud said: »I also need some assistance Mote, if you're able to. (I'm pretty poor with gearswap at the moment but doing my best to learn!)
Currently I'm using your RDM.lua (the Kinematics one). The only thing is I would like to add a high magic accuracy set for Stun (which would essentially swap my Apamajas II to an iLvl staff). I would also need to know how to cycle between normal Macc and High Macc sets. I liked how Bokura's RDM.lua was set up, but he was missing the composure and enhancing magic rules that your gearswap has. The file I'm using is below. Any help would be greatly appreciated!
Any normally defined set (eg: sets.midcast.Stun) can have additional sub-tables added that define gear sets based on casting mode. Simply define a new casting mode (the rdm file only uses the default 'Normal'; add an extra, like 'Resistant'), and then create a new set to match.
eg: Code
options.CastingModes = {'Normal', 'Resistant'}
...
sets.midcast.Stun = {}
sets.midcast.Stun.Resistant = {}
The default keybind for changing casting modes is Ctrl-F11.
[+]
Just looking for someone to explain this addon a bit for me. It looks like it is an alternative to Spellcast.
Is it going to be replacing Spellcast? In which ways is it better or worse. I don't know any programming but I've slowly learned more and more about spellcast and the 'language' used in gearswap is confusing to me.
It says it uses packets so it potentially could be more detectable? but does that also eliminate any lag that spellcast may encounter?
I plan on redoing my PUP xml to include pet casting sets thanks to the new addon petschool. I'm just not sure if it's worth it to just wait until gearswap gets more popular or to go ahead and do it in spellcast.
If anyone could give me more info I'd greatly appreciate it.
|
|