|
RUN Gearswap template
サーバ: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-02-22 19:21:26
I get asked about this a lot, so here's a template I give to people. Unlike other templates out there, this is a stand-alone lua file, so you don't need that extra Mote stuff. I also think this format is a lot simpler and I've added some notes to help new Gearswap users. Disregard gear choices since this is fairly dated from my own use. Enjoy!
Code function get_sets()
--Idle Sets--
sets.Idle = { ammo="Homiliary",
head="Futhark Bandeau +1",neck="Twilight Torque",ear1="Hearty Earring",ear2="Ethereal Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Skadi's Jambeaux +1"}
--TP Sets--
sets.TP = {}
sets.TP.index = {'Standard', 'Accuracy', 'DT', 'MDTacc'}
TP_ind = 1
--offensive melee set
sets.TP.Standard = { ammo="Ginsen",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Ethereal Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Chaac Belt",legs="Taeon Tights",feet="Futhark Boots +1"}
--high accuracy/DT hybrid set
sets.TP.Accuracy = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Steelflash Earring",ear2="Zennaroi Earring",
body="Emet Harness +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Olseni Belt",legs="Taeon Tights",feet="Taeon Boots"}
--full DT melee set
sets.TP.DT = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Hearty Earring",ear2="Zennaroi Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Erilaz Greaves +1"}
--MDT melee set
sets.TP.MDTacc = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Steelflash Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Taeon Boots"}
--Weaponskill Sets--
sets.WS = {}
--multi, carries FTP
sets.Resolution = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--single, doesn't carry FTP
sets.Single = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Ishvara earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Ramuh Ring +1",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--single hit, benefits from DA
sets.Cleave = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--added effect
sets.Shockwave = { ammo="Falcon Eye",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Eschan Stone",legs="Lustratio Subligar +1",feet="Taeon Boots"}
--Requiescat
sets.Req = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Taeon Tights",feet="Taeon Boots"}
--crit based
sets.Vorp = { ammo="Qirmiz Tathlum",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--magic WS
sets.HercSlash = { ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.Utility = {}
--full PDT set for when stunned, etc.
sets.Utility.PDT = { ammo="Vanir Battery",
head="Erilaz Galea +1",neck="Twilight Torque",ear1="Hearty Earring",ear2="Ethereal Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Erilaz Greaves +1"}
--full MDT set for when stunned, etc
sets.Utility.MDT = { ammo="Vanir Battery",
head="Dampening Tam",neck="Twilight Torque",ear1="Hearty Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Engulfer Cape +1",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Erilaz Greaves +1"}
--Job Ability Sets--
sets.JA = {}
sets.JA.Lunge = {ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.JA.Vallation = {body="Runeist Coat +1",legs="Futhark Trousers +1"}
sets.JA.Gambit = {hands="Runeist mitons +1"}
sets.JA.Rayke = {feet="Futhark bottes +1"}
sets.JA.Battuta = {head="Futhark bandeau +1"}
sets.JA.Pflug = {feet="Runeist bottes +1"}
sets.JA.Pulse = {head="Erilaz Galea +1",legs="Runeist Trousers +1"}
--Precast Sets--
--Fast Cast set
sets.precast = {head="Runeist bandeau +1",
body="Samnuha Coat",hands="Leyline Gloves",
legs="Limbo Trousers"}
sets.Phalanx = {head="Futhark bandeau +1",body="Taeon Tabard",legs="Futhark Trousers +1"}
--Enmity set for high hate generating spells and JAs
sets.Enmity = {head="Highwing Helm",neck="Unmoving Collar +1",rear="Friomisi earring",
body="Emet Harness +1",hands="Nilas Gloves",
back="Earthcry Mantle",legs="Erilaz Leg Guards",feet="Erilaz Greaves +1"}
--Magic acc for enfeebles, handy for VW
sets.MagicAcc = {head="Dampening Tam",ear1="Gwati Earring",
body="Samnuha Coat",hands="Leyline Gloves",
waist="Salire Belt",legs="Runeist Trousers +1",feet="Iuitl Gaiters +1"}
--Toggle TP sets button, change if you want; currently ALT+F9 toggles forward, CTRL+F9 toggles backwards
send_command('bind !f9 gs c toggle TP set')
send_command('bind ^f9 gs c reverse TP set')
--other stuff, don't touch
ShadowType = 'None'
end
--the following section looks at the weather/day to see if the Hachirin-no-Obi is worth using
--add the following line to a section to have it check the element and equip the obi:
-->>> mid_obi(spell.element,spell.name)
function mid_obi(spelement,spellname)
if spelement == nil then
spelement = "Light"
end
if spellname == nil then
spellname = "Cure"
end
elements = {}
elements.list = S{'Fire','Ice','Wind','Earth','Lightning','Water','Light','Dark'}
elements.number = {[0]="Fire",[1]="Ice",[2]="Wind",[3]="Earth",[4]="Lightning",[5]="Water",[6]="Light",[7]="Dark"}
elements.weak = {['Light']='Dark', ['Dark']='Light', ['Fire']='Water', ['Ice']='Fire', ['Wind']='Ice', ['Earth']='Wind',
['Lightning']='Earth', ['Water']='Lightning'}
weather = world.weather_element
intensity = 1 + (world.weather_id % 2)
day = world.day
boost = 0
obi = nil
for _,buff in pairs (windower.ffxi.get_player().buffs) do
if buff > 177 and buff < 186 then
weather = elements.number[(buff - 178)]
intensity = 1
elseif buff > 588 and buff < 597 then
weather = elements.number[(buff - 589)]
intensity = 2
end
if spellname == "Swipe" or spellname == "Lunge" or spellname == "Vivacious Pulse" then
if buff > 522 and buff < 531 then
spelement = elements.number[(buff - 523)]
end
end
end
if weather == spelement then
boost = boost + intensity
elseif weather == elements.weak[spelement] then
boost = boost - intensity
end
if day == spelement then
boost = boost + 1
elseif day == elements.weak[spelement] then
boost = boost - 1
end
if boost > 0 then
if player.inventory["Hachirin-no-Obi"] or player.wardrobe["Hachirin-no-Obi"] then
equip({waist="Hachirin-no-Obi"})
end
end
end
function precast(spell,abil)
--equips favorite weapon if disarmed
if player.equipment.main == "empty" or player.equipment.sub == "empty" then
equip({main="Epeolatry",sub="Bloodrain Strap"})
end
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,sets.precast)
end
if spell.skill == 'Enhancing Magic' then
equip({legs="Futhark Trousers +1"})
end
if string.find(spell.name,'Utsusemi') then
equip({neck="Magoraga Beads"})
end
if spell.name == 'Lunge' or spell.name == 'Swipe' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--prevents Valiance/Vallation/Liement from being prevented by each other (cancels whichever is active)
if spell.name == 'Valiance' or spell.name == 'Vallation' or spell.name == 'Liement' then
if buffactive['Valiance'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(535)
elseif buffactive['Vallation'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(531)
elseif buffactive['Liement'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(537)
end
end
if spell.name == 'Vallation' or spell.name == 'Valiance' then
equip(sets.Enmity,sets.JA.Vallation)
end
if spell.name == 'Pflug' then
equip(sets.Enmity,sets.JA.Pflug)
end
if spell.name == 'Elemental Sforzo' or spell.name == 'Liement' then
equip(sets.Enmity,{body="Futhark Coat +1"})
end
if spell.name == 'Gambit' then
equip(sets.Enmity,sets.JA.Gambit)
end
if spell.name == 'Rayke' then
equip(sets.Enmity,sets.JA.Rayke)
end
if spell.name == 'Battuta' then
equip(sets.Enmity,sets.JA.Battuta)
end
if spell.name == 'Vivacious Pulse' then
equip(sets.Enmity,sets.JA.Pulse)
mid_obi(spell.element,spell.name)
end
if spell.name == 'One for All' or spell.name == 'Embolden' or spell.name == 'Odyllic Subterfuge' or spell.name == 'Warcry'
or spell.name == 'Swordplay' or spell.name == 'Rayke' or spell.name == 'Meditate' or spell.name == 'Provoke' then
equip(sets.Enmity)
end
if spell.name == 'Resolution' or spell.name == 'Ruinator' then
equip(sets.Resolution)
end
if spell.name == 'Spinning Slash'
or spell.name == 'Ground Strike'
or spell.name == 'Upheaval'
or spell.name == 'Dimidiation'
or spell.name == 'Steel Cyclone'
or spell.name == 'Savage Blade' then
equip(sets.Single)
end
if spell.name == 'Shockwave' then
equip(sets.Shockwave)
end
if spell.name == 'Fell Cleave' or spell.name == 'Circle Blade' then
equip(sets.Cleave)
end
if spell.name == 'Requiescat' then
equip(sets.Req)
end
if spell.name == 'Vorpal Blade' or spell.name == 'Rampage' then
equip(sets.Vorp)
end
if spell.name == 'Herculean Slash'
or spell.name == 'Freezebite'
or spell.name == 'Sanguine Blade'
or spell.name == 'Red Lotus Blade'
or spell.name == 'Seraph Blade' then
equip(sets.HercSlash)
mid_obi(spell.element,spell.name)
end
--prevents casting Utsusemi if you already have 3 or more shadows
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) then
cancel_spell()
end
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
if buffactive.sleep and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
end
function midcast(spell,act,arg)
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,{head="Runeist bandeau +1"})
end
if spell.skill == 'Enhancing Magic' then
equip({head="Erilaz Galea +1",legs="Futhark Trousers +1"})
if spell.name == "Blink" or spell.name == "Stoneskin" or string.find(spell.name,'Utsusemi') then
equip(sets.Utility.PDT,{head="Runeist bandeau +1",hands="Leyline Gloves"})
elseif string.find(spell.name,'Bar') or spell.name=="Temper" then
equip({hands="Runeist Mitons +1"})
end
if buffactive.embolden then
equip({back="Evasionist's Cape"})
end
end
if spell.name == 'Foil' or spell.name == 'Flash' or spell.name == "Stun" then
equip(sets.Enmity,{head="Runeist bandeau +1"})
end
if spell.name == 'Phalanx' then
equip(sets.Phalanx)
end
if string.find(spell.name,'Regen') then
equip({head="Runeist bandeau +1"})
end
if spell.name == "Repose" or spell.skill == 'Enfeebling Magic' or spell.skill == 'Dark Magic' then
equip(sets.MagicAcc)
end
if spell.skill == 'Elemental Magic' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--cancels Ni shadows (if there are only 1 or 2) when casting Ichi
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
send_command('cancel Copy Image')
send_command('cancel Copy Image (2)')
end
end
function aftercast(spell)
equip_current()
if string.find(spell.name,'Utsusemi') and not spell.interrupted then
if spell.name == 'Utsusemi: Ichi' then
ShadowType = 'Ichi'
elseif spell.name == 'Utsusemi: Ni' then
ShadowType = 'Ni'
end
end
end
function status_change(new,old)
equip_current()
end
function equip_TP()
equip(sets.TP[sets.TP.index[TP_ind]])
--equips offensive gear despite being on defensive set if you have shadows
if TP_ind == 3 and ((buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) or buffactive['Third Eye'] or buffactive['Blink']) then
equip(sets.TP.Accuracy)
end
--equips DW gear if using two weapons
if player.equipment.sub == "Tramontane Axe" or player.equipment.sub == "Pukulatmuj" or player.equipment.sub == "Anahera Sword" then
equip({ear2="Suppanomimi"})
end
--equips offensive gear and relic boots during Battuta
if buffactive.battuta then
--remains on defensive set if Avoidance Down is active
if buffactive['Avoidance Down'] then
else
if TP_ind == 3 then
equip(sets.TP.Accuracy)
end
equip({feet="Futhark Boots +1"})
end
end
--equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
--equip Frenzy Sallet (will wake you up) if engaged, slept, and over 100 HP
if buffactive.sleep and player.hp > 100 then
equip({head="Frenzy Sallet"})
end
end
function equip_idle()
equip(sets.Idle)
--equips extra refresh gear when MP is below 75%
if player.mpp < 75 then
equip({body="Runeist Coat +1"})
end
--auto-equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
end
function buff_change(buff,gain)
local buff = string.lower(buff)
if buff == "terror" or buff == "petrification" or buff == "stun" or buff == "sleep" then
if gain then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
if buff == "sleep" and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
else
equip_current()
end
end
end
function equip_current()
if player.status == 'Engaged' then
equip_TP()
else
equip_idle()
end
end
function self_command(command)
if command == 'toggle TP set' then
TP_ind = TP_ind +1
if TP_ind > #sets.TP.index then TP_ind = 1 end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
elseif command == 'reverse TP set' then
TP_ind = TP_ind -1
if TP_ind == 0 then TP_ind = #sets.TP.index end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
end
end
Asura.Xelnok
サーバ: Asura
Game: FFXI
Posts: 38
By Asura.Xelnok 2016-02-22 20:57:16
Awesome, was going to ask about a Lua that incorporates the frenzy sallet and switching gear when statused.
Thanks alot!
サーバ: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-02-22 21:03:56
I'll probably update it if I notice any errors or whatever
Asura.Xelnok
サーバ: Asura
Game: FFXI
Posts: 38
By Asura.Xelnok 2016-02-25 18:20:20
Any idea why this part isn't working when I have the DT set on with shadows up?
function equip_TP()
equip(sets.TP[sets.TP.index[TP_ind]])
--equips offensive gear despite being on defensive set if you have shadows
if TP_ind == 3 and ((buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) or buffactive['Third Eye'] or buffactive['Blink']) then
equip(sets.TP.Standard)
end
Thanks again for the GS, aside from this part its working perfectly.
サーバ: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-02-25 18:30:54
Is it never working? It should provided you are on set 3 (PDT), meleeing, and under the effect of any of the following buffs:
- Utsusemi (2 or more shadows; at 1 shadow remaining, PDT gear will go back on, as I designed this when AA Hume was my worst enemy)
- Blink (including the spell and Garuda's Aerial Armor)
- Third Eye (does not take Seigan into account, but that wouldn't matter)
Are you getting an error message? What set is being equipped when you have any of those statuses?
Asura.Xelnok
サーバ: Asura
Game: FFXI
Posts: 38
By Asura.Xelnok 2016-02-25 21:22:41
Is it never working? It should provided you are on set 3 (PDT), meleeing, and under the effect of any of the following buffs:
- Utsusemi (2 or more shadows; at 1 shadow remaining, PDT gear will go back on, as I designed this when AA Hume was my worst enemy)
- Blink (including the spell and Garuda's Aerial Armor)
- Third Eye (does not take Seigan into account, but that wouldn't matter)
Are you getting an error message? What set is being equipped when you have any of those statuses?
I have been switching over to DT (the third option)fighting random stuff in escha and have tried casting utsusemi: ichi/ni and blink and the gear never changes (it does change when I manually switch through sets though, so I know that part is working), no error pops up either, looking at the code it looks like it should work, not exactly sure why it isn't. I don't need to have any other addons installed for gearswap to read buffs do I?
Edit: It looks like it sometimes doesn't switch over when I engage the mob either, maybe it's an error on gearswaps end.
サーバ: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-02-25 21:35:52
Very strange. I won't have time to look at it tonight unfortunately, so you'll have to make due with it for now. The only other addon that this lua references is Cancel, which is for ensuring you don't negate your Wards. It's strange, because I have the exact same section in my own lua and it works fine.
Asura.Xelnok
サーバ: Asura
Game: FFXI
Posts: 38
By Asura.Xelnok 2016-02-25 21:58:41
Just tried the same exact code you posted before I modified it and it is still having issues when engaging and going idle, which is probably the same reason it isn't automatically switching gear when shadows are up.
No rush, thanks again for the help.
サーバ: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-03-10 00:53:00
Thanks to some help from Flippant on Ragnarok, the lua in the original post has been fixed, particularly with the issue you were experiencing. Note that the new version just contains the following changes:
Added this bit in its own section: Code function status_change(new,old)
equip_current()
end
And also this in the buff_change section, right after the initial line: Code local buff = string.lower(buff)
Quetzalcoatl.Khajit
サーバ: Quetzalcoatl
Game: FFXI
Posts: 441
By Quetzalcoatl.Khajit 2016-03-13 14:10:04
Just started plugging in my run stuff since i saw this lua. I kept on getting errors until I added "then" into the utsusemi section.
This is the appended code. I've not tested it yet so this could be an absolutely garbage fix.
Code function aftercast(spell)
equip_current()
if string.find(spell.name,'Utsusemi') and not spell.interrupted then
if spell.name == 'Utsusemi: Ichi' then
ShadowType = 'Ichi'
elseif spell.name == 'Utsusemi: Ni' then
ShadowType = 'Ni'
end
end
end
By Isilrhofal 2016-03-15 16:34:11
Thank's for sharing.
I did adjust the file a little by adding/removing tabs, changing all lear/rear to ear1/ear2 for consistency and fixing the utsusemi part. Here the link for anyone interested:
http://pastebin.com/qrAEkzEx
サーバ: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-03-15 16:56:25
Good catch. Some of the aspects of this (like the Utsusemi thing) are part of a "general" file that I have which is referenced in my own lua. The errors here are essentially the parts of the general file that I forgot to paste over or weren't quite tested as I manually added them.
Asura.Xelnok
サーバ: Asura
Game: FFXI
Posts: 38
By Asura.Xelnok 2016-03-15 19:19:45
Has anyone successfully been able to get your gear to change when in -DT mode and casting shadows?
I was messing around with it, and I found if I am in -DT mode with shadows up, and then engage it will equip the correct (tp accuracy) set, but then when shadows drop it doesn't switch back to the DT set. If I engage without shadows it equips the DT set like it should, but when I then cast shadows I stay in the same set.
It seems that while engaged the gear won't switch depending on the buffs you have/don't have, I'm not sure if it is a plugin I am missing, or what is happening.
Thanks again for all the help, aside from this everything else is working correctly, tanked some vagary and everything worked well, (and I even got a Zennaroi Earring!)
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-03-15 21:07:25
Tested it quickly. Has to do with the fact it takes a bit of time for the buffactive table to be updated, so it's going to return false immediately after shadows are put up. If you do a subsequent action, it will find the buff and change you into the accuracy set.
I handle these situations by maintaining my own variables using the buff_change function.
サーバ: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-03-15 22:03:32
Ragnarok.Flippant said: »Tested it quickly. Has to do with the fact it takes a bit of time for the buffactive table to be updated, so it's going to return false immediately after shadows are put up. If you do a subsequent action, it will find the buff and change you into the accuracy set.
I handle these situations by maintaining my own variables using the buff_change function. So I guess the weakness is that it needs to hit that "equip current" function, which it's not doing with enough regularity?
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-03-16 02:51:24
Well, there needs to be some sort of event to happen in order for the functions to be called. Your calls are fine; there is nothing more you can do that wouldn't become a potential nuisance. The issue is the buffactive table is not always reliable because it's a bit delayed, and you're trying to recognize that the buff is on a fraction of a second later. Even for the buffactive table to register SA or TA in time for a WS is not 100%, depending on how fast you are.
Instead, you can use buff_change to update a variable. This should run nearly instantly. The only issue with this is I'd look out for how the variable handles itself when going from 3 to 2 shadows, etc. If the gained buff is called before the lost buff, you could end up with a false negative. If this is the case, I can try to think of a different way to handle it, but that could potentially result in false positives, which would be even worse.
Code
function buff_change(buff,gain)
local buff = string.lower(buff)
if buff=="blink" or buff=="third eye" or buff=="copy image (2)" or buff=="copy image (3)" or buff=="copy image (4+)" then
shadow_status = gain
equip_current()
end
end
For extra assurance, you can also update it using aftercast (but obviously only works for setting it to true).
Code
function aftercast(spell,action)
if not spell.interrupted then
if spell.english=="Blink" or spell.english=="Third Eye" or string.find(spell.english,"Utsusemi") then
shadow_status = true
end
if string.find(spell.name,'Utsusemi') and then
if spell.name == 'Utsusemi: Ichi' then
ShadowType = 'Ichi'
elseif spell.name == 'Utsusemi: Ni' then
ShadowType = 'Ni'
end
end
end
equip_current()
end
Then, in your rules, you'd check for shadow_status.
Code if TP_ind == 3 and shadow_status then
Also, be sure to initialize it in your get_sets(), although you technically don't need to.
Code shadow_status = buffactive.Blink or buffactive["Third Eye"] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] or false
[+]
Necro Bump Detected!
[78 days between previous and next post]
Asura.Keaddo
サーバ: Asura
Game: FFXI
Posts: 65
By Asura.Keaddo 2016-06-01 19:37:57
I'm just about to get into RUN and this is perfect. Thank you once again :)
It's fairly different to syntax I'm used to, but it's pretty straightforward, I'll play with it as I learn how to play run :D
Necro Bump Detected!
[310 days between previous and next post]
By vaulout 2017-04-07 19:06:12
So I just went through updating this for my use with gear that might not be the best, but it will give another look at some common gear you can sub to the original code. Code function get_sets()
--Idle Sets--
sets.Idle = { ammo="Homiliary",
head="Futhark Bandeau +1",neck="Twilight Torque",ear1="Hearty Earring",ear2="Ethereal Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Skadi's Jambeaux +1"}
--TP Sets--
sets.TP = {}
sets.TP.index = {'Standard', 'Accuracy', 'DT', 'MDTacc'}
TP_ind = 1
--offensive melee set
sets.TP.Standard = { ammo="Ginsen",head={ name="Dampening Tam", augments={'DEX+10','Accuracy+15','Mag. Acc.+15','Quadruple Attack +3',}},
body={ name="Rawhide Vest", augments={'HP+50','"Subtle Blow"+7','"Triple Atk."+2',}},hands={ name="Herculean Gloves", augments={'Accuracy+13 Attack+13','"Triple Atk."+2','AGI+7','Accuracy+11','Attack+11',}},
legs={ name="Herculean Trousers", augments={'Attack+28','"Triple Atk."+3','Accuracy+7',}},feet={ name="Herculean Boots", augments={'"Triple Atk."+4','DEX+7','Accuracy+7','Attack+5',}},neck="Asperity Necklace",
waist="Kentarch Belt +1",left_ear="Bladeborn Earring",right_ear="Steelflash Earring",left_ring="Epona's Ring",right_ring="Rajas Ring",back={ name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','STR+6','"Store TP"+10',}},}
--high accuracy/DT hybrid set
sets.TP.Accuracy = { ammo="Ginsen",
head={ name="Dampening Tam", augments={'DEX+10','Accuracy+15','Mag. Acc.+15','Quadruple Attack +3',}},
body="Meghanada Cuirie",hands={ name="Herculean Gloves", augments={'Accuracy+13 Attack+13','"Triple Atk."+2','AGI+7','Accuracy+11','Attack+11',}},
legs={ name="Herculean Trousers", augments={'Attack+28','"Triple Atk."+3','Accuracy+7',}},feet={ name="Herculean Boots", augments={'"Triple Atk."+4','DEX+7','Accuracy+7','Attack+5',}},neck="Asperity Necklace",
waist="Kentarch Belt +1",left_ear="Bladeborn Earring",right_ear="Steelflash Earring",left_ring="Epona's Ring",right_ring="Rajas Ring",
back={ name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','STR+6','"Store TP"+10',}}}
--full DT melee set
sets.TP.DT = { ammo="Staunch Tathlum",head={ name="Fu. Bandeau +1", augments={'Enhances "Battuta" effect',}},body={ name="Futhark Coat +1", augments={'Enhances "Elemental Sforzo" effect',}},
hands="Runeist Mitons +1",legs="Eri. Leg Guards +1",feet="Erilaz Greaves +1",neck="Loricate Torque",waist="Flume Belt",left_ear="Ethereal Earring",right_ear="Infused Earring",
left_ring="Defending Ring",right_ring="Gelatinous Ring",back="Solemnity Cape",}
--MDT melee set
sets.TP.MDTacc = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Steelflash Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Taeon Boots"}
--Weaponskill Sets--
sets.WS = {}
--multi, carries FTP
sets.Resolution = { ammo="Aqreqaq Bomblet",head={ name="Rawhide Mask", augments={'DEX+10','STR+7','INT+7',}},
body={ name="Rawhide Vest", augments={'HP+50','"Subtle Blow"+7','"Triple Atk."+2',}},hands={ name="Herculean Gloves", augments={'Accuracy+13 Attack+13','"Triple Atk."+2','AGI+7','Accuracy+11','Attack+11',}},
legs={ name="Carmine Cuisses", augments={'HP+60','STR+10','INT+10',}},feet={ name="Rawhide Boots", augments={'STR+10','Attack+15','"Store TP"+5',}},neck="Chivalrous Chain",
waist="Warwolf Belt",left_ear={ name="Moonshade Earring", augments={'Rng.Atk.+4','TP Bonus +25',}},right_ear="Steelflash Earring",left_ring="Rajas Ring",
right_ring="Apate Ring",back={ name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','STR+6','"Store TP"+10',}},}
--single, doesn't carry FTP
sets.Single = { ammo="Ginsen",head="Aya. Zucchetto +1",body="Meghanada Cuirie",hands="Meghanada Gloves",legs={ name="Samnuha Tights", augments={'STR+6','DEX+8',}},
feet="Aya. Gambieras +1",neck="Asperity Necklace",waist="Pipilaka Belt",left_ear={ name="Moonshade Earring", augments={'Rng.Atk.+4','TP Bonus +25',}},
right_ear="Steelflash Earring",left_ring="Apate Ring",right_ring="Rajas Ring",back="Kayapa Cape",}
--single hit, benefits from DA
sets.Cleave = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--added effect
sets.Shockwave = { ammo="Falcon Eye",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Eschan Stone",legs="Lustratio Subligar +1",feet="Taeon Boots"}
--Requiescat
sets.Req = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Taeon Tights",feet="Taeon Boots"}
--crit based
sets.Vorp = { ammo="Qirmiz Tathlum",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--magic WS
sets.HercSlash = { ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.Utility = {}
--full PDT set for when stunned, etc.
sets.Utility.PDT = { ammo="Staunch Tathlum",head={ name="Fu. Bandeau +1", augments={'Enhances "Battuta" effect',}},body={ name="Futhark Coat +1", augments={'Enhances "Elemental Sforzo" effect',}},
hands="Runeist Mitons +1",legs="Eri. Leg Guards +1",feet="Erilaz Greaves +1",neck="Loricate Torque",waist="Flume Belt",left_ear="Ethereal Earring",right_ear="Infused Earring",
left_ring="Defending Ring",right_ring="Gelatinous Ring",back="Solemnity Cape",}
--full MDT set for when stunned, etc
sets.Utility.MDT = { ammo="Vanir Battery",
head="Dampening Tam",neck="Twilight Torque",ear1="Hearty Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Engulfer Cape +1",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Erilaz Greaves +1"}
--Job Ability Sets--
sets.JA = {}
sets.JA.Lunge = {ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.JA.Vallation = {body="Runeist Coat +1",legs="Futhark Trousers +1"}
sets.JA.Gambit = {hands="Runeist mitons +1"}
sets.JA.Rayke = {feet="Futhark bottes +1"}
sets.JA.Battuta = {head="Futhark bandeau +1"}
sets.JA.Pflug = {feet="Runeist bottes +1"}
sets.JA.Pulse = {head="Erilaz Galea +1",legs="Runeist Trousers +1"}
--Precast Sets--
--Fast Cast set
sets.precast = {head="Runeist bandeau +1",
body="Samnuha Coat",hands="Leyline Gloves",
legs="Limbo Trousers"}
sets.Phalanx = {head="Futhark bandeau +1",body="Taeon Tabard",legs="Futhark Trousers +1"}
--Enmity set for high hate generating spells and JAs
sets.Enmity = {ammo="Aqreqaq Bomblet",head={ name="Despair Helm", augments={'STR+15','Enmity+7','"Store TP"+3',}},
body="Emet Harness",hands="Meghanada Gloves",legs="Eri. Leg Guards +1",feet="Erilaz Greaves +1",neck="Unmoving Collar",
waist="Warwolf Belt",left_ear="Incubus Earring",right_ear="Friomisi Earring",back={ name="Evasionist's Cape", augments={'Enmity+3','"Dbl.Atk."+3','Damage taken-4%',}}}
--Magic acc for enfeebles, handy for VW
sets.MagicAcc = {head="Dampening Tam",body="Samnuha Coat",hands="Leyline Gloves",
waist="Salire Belt",legs="Runeist Trousers +1"}
--Toggle TP sets button, change if you want; currently ALT+F9 toggles forward, CTRL+F9 toggles backwards
send_command('bind !f9 gs c toggle TP set')
send_command('bind ^f9 gs c reverse TP set')
--other stuff, don't touch
ShadowType = 'None'
end
--the following section looks at the weather/day to see if the Hachirin-no-Obi is worth using
--add the following line to a section to have it check the element and equip the obi:
-->>> mid_obi(spell.element,spell.name)
function mid_obi(spelement,spellname)
if spelement == nil then
spelement = "Light"
end
if spellname == nil then
spellname = "Cure"
end
elements = {}
elements.list = S{'Fire','Ice','Wind','Earth','Lightning','Water','Light','Dark'}
elements.number = {[0]="Fire",[1]="Ice",[2]="Wind",[3]="Earth",[4]="Lightning",[5]="Water",[6]="Light",[7]="Dark"}
elements.weak = {['Light']='Dark', ['Dark']='Light', ['Fire']='Water', ['Ice']='Fire', ['Wind']='Ice', ['Earth']='Wind',
['Lightning']='Earth', ['Water']='Lightning'}
weather = world.weather_element
intensity = 1 + (world.weather_id % 2)
day = world.day
boost = 0
obi = nil
for _,buff in pairs (windower.ffxi.get_player().buffs) do
if buff > 177 and buff < 186 then
weather = elements.number[(buff - 178)]
intensity = 1
elseif buff > 588 and buff < 597 then
weather = elements.number[(buff - 589)]
intensity = 2
end
if spellname == "Swipe" or spellname == "Lunge" or spellname == "Vivacious Pulse" then
if buff > 522 and buff < 531 then
spelement = elements.number[(buff - 523)]
end
end
end
if weather == spelement then
boost = boost + intensity
elseif weather == elements.weak[spelement] then
boost = boost - intensity
end
if day == spelement then
boost = boost + 1
elseif day == elements.weak[spelement] then
boost = boost - 1
end
if boost > 0 then
if player.inventory["Hachirin-no-Obi"] or player.wardrobe["Hachirin-no-Obi"] then
equip({waist="Hachirin-no-Obi"})
end
end
end
function precast(spell,abil)
--equips favorite weapon if disarmed
if player.equipment.main == "empty" or player.equipment.sub == "empty" then
equip({main="Epeolatry",sub="Bloodrain Strap"})
end
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,sets.precast)
end
if spell.skill == 'Enhancing Magic' then
equip({legs="Futhark Trousers +1"})
end
if string.find(spell.name,'Utsusemi') then
equip({neck="Magoraga Beads"})
end
if spell.name == 'Lunge' or spell.name == 'Swipe' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--prevents Valiance/Vallation/Liement from being prevented by each other (cancels whichever is active)
if spell.name == 'Valiance' or spell.name == 'Vallation' or spell.name == 'Liement' then
if buffactive['Valiance'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(535)
elseif buffactive['Vallation'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(531)
elseif buffactive['Liement'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(537)
end
end
if spell.name == 'Vallation' or spell.name == 'Valiance' then
equip(sets.Enmity,sets.JA.Vallation)
end
if spell.name == 'Pflug' then
equip(sets.Enmity,sets.JA.Pflug)
end
if spell.name == 'Elemental Sforzo' or spell.name == 'Liement' then
equip(sets.Enmity,{body="Futhark Coat +1"})
end
if spell.name == 'Gambit' then
equip(sets.Enmity,sets.JA.Gambit)
end
if spell.name == 'Rayke' then
equip(sets.Enmity,sets.JA.Rayke)
end
if spell.name == 'Battuta' then
equip(sets.Enmity,sets.JA.Battuta)
end
if spell.name == 'Vivacious Pulse' then
equip(sets.Enmity,sets.JA.Pulse)
mid_obi(spell.element,spell.name)
end
if spell.name == 'One for All' or spell.name == 'Embolden' or spell.name == 'Odyllic Subterfuge' or spell.name == 'Warcry'
or spell.name == 'Swordplay' or spell.name == 'Rayke' or spell.name == 'Meditate' or spell.name == 'Provoke' then
equip(sets.Enmity)
end
if spell.name == 'Resolution' or spell.name == 'Ruinator' then
equip(sets.Resolution)
end
if spell.name == 'Spinning Slash'
or spell.name == 'Ground Strike'
or spell.name == 'Upheaval'
or spell.name == 'Dimidiation'
or spell.name == 'Steel Cyclone'
or spell.name == 'Savage Blade' then
equip(sets.Single)
end
if spell.name == 'Shockwave' then
equip(sets.Shockwave)
end
if spell.name == 'Fell Cleave' or spell.name == 'Circle Blade' then
equip(sets.Cleave)
end
if spell.name == 'Requiescat' then
equip(sets.Req)
end
if spell.name == 'Vorpal Blade' or spell.name == 'Rampage' then
equip(sets.Vorp)
end
if spell.name == 'Herculean Slash'
or spell.name == 'Freezebite'
or spell.name == 'Sanguine Blade'
or spell.name == 'Red Lotus Blade'
or spell.name == 'Seraph Blade' then
equip(sets.HercSlash)
mid_obi(spell.element,spell.name)
end
--prevents casting Utsusemi if you already have 3 or more shadows
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) then
cancel_spell()
end
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
if buffactive.sleep and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
end
function midcast(spell,act,arg)
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,{head="Runeist bandeau +1"})
end
if spell.skill == 'Enhancing Magic' then
equip({head="Erilaz Galea +1",legs="Futhark Trousers +1"})
if spell.name == "Blink" or spell.name == "Stoneskin" or string.find(spell.name,'Utsusemi') then
equip(sets.Utility.PDT,{head="Runeist bandeau +1",hands="Leyline Gloves"})
elseif string.find(spell.name,'Bar') or spell.name=="Temper" then
equip({hands="Runeist Mitons +1"})
end
if buffactive.embolden then
equip({back="Evasionist's Cape"})
end
end
if spell.name == 'Foil' or spell.name == 'Flash' or spell.name == "Stun" then
equip(sets.Enmity,{head="Runeist bandeau +1"})
end
if spell.name == 'Phalanx' then
equip(sets.Phalanx)
end
if string.find(spell.name,'Regen') then
equip({head="Runeist bandeau +1"})
end
if spell.name == "Repose" or spell.skill == 'Enfeebling Magic' or spell.skill == 'Dark Magic' then
equip(sets.MagicAcc)
end
if spell.skill == 'Elemental Magic' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--cancels Ni shadows (if there are only 1 or 2) when casting Ichi
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
send_command('cancel Copy Image')
send_command('cancel Copy Image (2)')
end
end
function aftercast(spell)
equip_current()
if string.find(spell.name,'Utsusemi') and not spell.interrupted then
if spell.name == 'Utsusemi: Ichi' then
ShadowType = 'Ichi'
elseif spell.name == 'Utsusemi: Ni' then
ShadowType = 'Ni'
end
end
end
function status_change(new,old)
equip_current()
end
function equip_TP()
equip(sets.TP[sets.TP.index[TP_ind]])
--equips offensive gear despite being on defensive set if you have shadows
if TP_ind == 3 and ((buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) or buffactive['Third Eye'] or buffactive['Blink']) then
equip(sets.TP.Accuracy)
end
--equips DW gear if using two weapons
if player.equipment.sub == "Tramontane Axe" or player.equipment.sub == "Pukulatmuj" or player.equipment.sub == "Anahera Sword" then
equip({ear2="Suppanomimi"})
end
--equips offensive gear and relic boots during Battuta
if buffactive.battuta then
--remains on defensive set if Avoidance Down is active
if buffactive['Avoidance Down'] then
else
if TP_ind == 3 then
equip(sets.TP.Accuracy)
end
equip({feet="Futhark Boots +1"})
end
end
--equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
--equip Frenzy Sallet (will wake you up) if engaged, slept, and over 100 HP
if buffactive.sleep and player.hp > 100 then
equip({head="Frenzy Sallet"})
end
end
function equip_idle()
equip(sets.Idle)
--equips extra refresh gear when MP is below 75%
if player.mpp < 75 then
equip({body="Runeist Coat +1"})
end
--auto-equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
end
function buff_change(buff,gain)
local buff = string.lower(buff)
if buff == "terror" or buff == "petrification" or buff == "stun" or buff == "sleep" then
if gain then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
if buff == "sleep" and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
else
equip_current()
end
end
end
function equip_current()
if player.status == 'Engaged' then
equip_TP()
else
equip_idle()
end
end
function self_command(command)
if command == 'toggle TP set' then
TP_ind = TP_ind +1
if TP_ind > #sets.TP.index then TP_ind = 1 end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
elseif command == 'reverse TP set' then
TP_ind = TP_ind -1
if TP_ind == 0 then TP_ind = #sets.TP.index end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
end
end
Necro Bump Detected!
[89 days between previous and next post]
Asura.Berlon
サーバ: Asura
Game: FFXI
Posts: 34
By Asura.Berlon 2017-07-06 06:52:08
So I just went through updating this for my use with gear that might not be the best, but it will give another look at some common gear you can sub to the original code. Code function get_sets()
--Idle Sets--
sets.Idle = { ammo="Homiliary",
head="Futhark Bandeau +1",neck="Twilight Torque",ear1="Hearty Earring",ear2="Ethereal Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Skadi's Jambeaux +1"}
--TP Sets--
sets.TP = {}
sets.TP.index = {'Standard', 'Accuracy', 'DT', 'MDTacc'}
TP_ind = 1
--offensive melee set
sets.TP.Standard = { ammo="Ginsen",head={ name="Dampening Tam", augments={'DEX+10','Accuracy+15','Mag. Acc.+15','Quadruple Attack +3',}},
body={ name="Rawhide Vest", augments={'HP+50','"Subtle Blow"+7','"Triple Atk."+2',}},hands={ name="Herculean Gloves", augments={'Accuracy+13 Attack+13','"Triple Atk."+2','AGI+7','Accuracy+11','Attack+11',}},
legs={ name="Herculean Trousers", augments={'Attack+28','"Triple Atk."+3','Accuracy+7',}},feet={ name="Herculean Boots", augments={'"Triple Atk."+4','DEX+7','Accuracy+7','Attack+5',}},neck="Asperity Necklace",
waist="Kentarch Belt +1",left_ear="Bladeborn Earring",right_ear="Steelflash Earring",left_ring="Epona's Ring",right_ring="Rajas Ring",back={ name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','STR+6','"Store TP"+10',}},}
--high accuracy/DT hybrid set
sets.TP.Accuracy = { ammo="Ginsen",
head={ name="Dampening Tam", augments={'DEX+10','Accuracy+15','Mag. Acc.+15','Quadruple Attack +3',}},
body="Meghanada Cuirie",hands={ name="Herculean Gloves", augments={'Accuracy+13 Attack+13','"Triple Atk."+2','AGI+7','Accuracy+11','Attack+11',}},
legs={ name="Herculean Trousers", augments={'Attack+28','"Triple Atk."+3','Accuracy+7',}},feet={ name="Herculean Boots", augments={'"Triple Atk."+4','DEX+7','Accuracy+7','Attack+5',}},neck="Asperity Necklace",
waist="Kentarch Belt +1",left_ear="Bladeborn Earring",right_ear="Steelflash Earring",left_ring="Epona's Ring",right_ring="Rajas Ring",
back={ name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','STR+6','"Store TP"+10',}}}
--full DT melee set
sets.TP.DT = { ammo="Staunch Tathlum",head={ name="Fu. Bandeau +1", augments={'Enhances "Battuta" effect',}},body={ name="Futhark Coat +1", augments={'Enhances "Elemental Sforzo" effect',}},
hands="Runeist Mitons +1",legs="Eri. Leg Guards +1",feet="Erilaz Greaves +1",neck="Loricate Torque",waist="Flume Belt",left_ear="Ethereal Earring",right_ear="Infused Earring",
left_ring="Defending Ring",right_ring="Gelatinous Ring",back="Solemnity Cape",}
--MDT melee set
sets.TP.MDTacc = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Steelflash Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Taeon Boots"}
--Weaponskill Sets--
sets.WS = {}
--multi, carries FTP
sets.Resolution = { ammo="Aqreqaq Bomblet",head={ name="Rawhide Mask", augments={'DEX+10','STR+7','INT+7',}},
body={ name="Rawhide Vest", augments={'HP+50','"Subtle Blow"+7','"Triple Atk."+2',}},hands={ name="Herculean Gloves", augments={'Accuracy+13 Attack+13','"Triple Atk."+2','AGI+7','Accuracy+11','Attack+11',}},
legs={ name="Carmine Cuisses", augments={'HP+60','STR+10','INT+10',}},feet={ name="Rawhide Boots", augments={'STR+10','Attack+15','"Store TP"+5',}},neck="Chivalrous Chain",
waist="Warwolf Belt",left_ear={ name="Moonshade Earring", augments={'Rng.Atk.+4','TP Bonus +25',}},right_ear="Steelflash Earring",left_ring="Rajas Ring",
right_ring="Apate Ring",back={ name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','STR+6','"Store TP"+10',}},}
--single, doesn't carry FTP
sets.Single = { ammo="Ginsen",head="Aya. Zucchetto +1",body="Meghanada Cuirie",hands="Meghanada Gloves",legs={ name="Samnuha Tights", augments={'STR+6','DEX+8',}},
feet="Aya. Gambieras +1",neck="Asperity Necklace",waist="Pipilaka Belt",left_ear={ name="Moonshade Earring", augments={'Rng.Atk.+4','TP Bonus +25',}},
right_ear="Steelflash Earring",left_ring="Apate Ring",right_ring="Rajas Ring",back="Kayapa Cape",}
--single hit, benefits from DA
sets.Cleave = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--added effect
sets.Shockwave = { ammo="Falcon Eye",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Eschan Stone",legs="Lustratio Subligar +1",feet="Taeon Boots"}
--Requiescat
sets.Req = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Taeon Tights",feet="Taeon Boots"}
--crit based
sets.Vorp = { ammo="Qirmiz Tathlum",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--magic WS
sets.HercSlash = { ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.Utility = {}
--full PDT set for when stunned, etc.
sets.Utility.PDT = { ammo="Staunch Tathlum",head={ name="Fu. Bandeau +1", augments={'Enhances "Battuta" effect',}},body={ name="Futhark Coat +1", augments={'Enhances "Elemental Sforzo" effect',}},
hands="Runeist Mitons +1",legs="Eri. Leg Guards +1",feet="Erilaz Greaves +1",neck="Loricate Torque",waist="Flume Belt",left_ear="Ethereal Earring",right_ear="Infused Earring",
left_ring="Defending Ring",right_ring="Gelatinous Ring",back="Solemnity Cape",}
--full MDT set for when stunned, etc
sets.Utility.MDT = { ammo="Vanir Battery",
head="Dampening Tam",neck="Twilight Torque",ear1="Hearty Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Engulfer Cape +1",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Erilaz Greaves +1"}
--Job Ability Sets--
sets.JA = {}
sets.JA.Lunge = {ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.JA.Vallation = {body="Runeist Coat +1",legs="Futhark Trousers +1"}
sets.JA.Gambit = {hands="Runeist mitons +1"}
sets.JA.Rayke = {feet="Futhark bottes +1"}
sets.JA.Battuta = {head="Futhark bandeau +1"}
sets.JA.Pflug = {feet="Runeist bottes +1"}
sets.JA.Pulse = {head="Erilaz Galea +1",legs="Runeist Trousers +1"}
--Precast Sets--
--Fast Cast set
sets.precast = {head="Runeist bandeau +1",
body="Samnuha Coat",hands="Leyline Gloves",
legs="Limbo Trousers"}
sets.Phalanx = {head="Futhark bandeau +1",body="Taeon Tabard",legs="Futhark Trousers +1"}
--Enmity set for high hate generating spells and JAs
sets.Enmity = {ammo="Aqreqaq Bomblet",head={ name="Despair Helm", augments={'STR+15','Enmity+7','"Store TP"+3',}},
body="Emet Harness",hands="Meghanada Gloves",legs="Eri. Leg Guards +1",feet="Erilaz Greaves +1",neck="Unmoving Collar",
waist="Warwolf Belt",left_ear="Incubus Earring",right_ear="Friomisi Earring",back={ name="Evasionist's Cape", augments={'Enmity+3','"Dbl.Atk."+3','Damage taken-4%',}}}
--Magic acc for enfeebles, handy for VW
sets.MagicAcc = {head="Dampening Tam",body="Samnuha Coat",hands="Leyline Gloves",
waist="Salire Belt",legs="Runeist Trousers +1"}
--Toggle TP sets button, change if you want; currently ALT+F9 toggles forward, CTRL+F9 toggles backwards
send_command('bind !f9 gs c toggle TP set')
send_command('bind ^f9 gs c reverse TP set')
--other stuff, don't touch
ShadowType = 'None'
end
--the following section looks at the weather/day to see if the Hachirin-no-Obi is worth using
--add the following line to a section to have it check the element and equip the obi:
-->>> mid_obi(spell.element,spell.name)
function mid_obi(spelement,spellname)
if spelement == nil then
spelement = "Light"
end
if spellname == nil then
spellname = "Cure"
end
elements = {}
elements.list = S{'Fire','Ice','Wind','Earth','Lightning','Water','Light','Dark'}
elements.number = {[0]="Fire",[1]="Ice",[2]="Wind",[3]="Earth",[4]="Lightning",[5]="Water",[6]="Light",[7]="Dark"}
elements.weak = {['Light']='Dark', ['Dark']='Light', ['Fire']='Water', ['Ice']='Fire', ['Wind']='Ice', ['Earth']='Wind',
['Lightning']='Earth', ['Water']='Lightning'}
weather = world.weather_element
intensity = 1 + (world.weather_id % 2)
day = world.day
boost = 0
obi = nil
for _,buff in pairs (windower.ffxi.get_player().buffs) do
if buff > 177 and buff < 186 then
weather = elements.number[(buff - 178)]
intensity = 1
elseif buff > 588 and buff < 597 then
weather = elements.number[(buff - 589)]
intensity = 2
end
if spellname == "Swipe" or spellname == "Lunge" or spellname == "Vivacious Pulse" then
if buff > 522 and buff < 531 then
spelement = elements.number[(buff - 523)]
end
end
end
if weather == spelement then
boost = boost + intensity
elseif weather == elements.weak[spelement] then
boost = boost - intensity
end
if day == spelement then
boost = boost + 1
elseif day == elements.weak[spelement] then
boost = boost - 1
end
if boost > 0 then
if player.inventory["Hachirin-no-Obi"] or player.wardrobe["Hachirin-no-Obi"] then
equip({waist="Hachirin-no-Obi"})
end
end
end
function precast(spell,abil)
--equips favorite weapon if disarmed
if player.equipment.main == "empty" or player.equipment.sub == "empty" then
equip({main="Epeolatry",sub="Bloodrain Strap"})
end
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,sets.precast)
end
if spell.skill == 'Enhancing Magic' then
equip({legs="Futhark Trousers +1"})
end
if string.find(spell.name,'Utsusemi') then
equip({neck="Magoraga Beads"})
end
if spell.name == 'Lunge' or spell.name == 'Swipe' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--prevents Valiance/Vallation/Liement from being prevented by each other (cancels whichever is active)
if spell.name == 'Valiance' or spell.name == 'Vallation' or spell.name == 'Liement' then
if buffactive['Valiance'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(535)
elseif buffactive['Vallation'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(531)
elseif buffactive['Liement'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(537)
end
end
if spell.name == 'Vallation' or spell.name == 'Valiance' then
equip(sets.Enmity,sets.JA.Vallation)
end
if spell.name == 'Pflug' then
equip(sets.Enmity,sets.JA.Pflug)
end
if spell.name == 'Elemental Sforzo' or spell.name == 'Liement' then
equip(sets.Enmity,{body="Futhark Coat +1"})
end
if spell.name == 'Gambit' then
equip(sets.Enmity,sets.JA.Gambit)
end
if spell.name == 'Rayke' then
equip(sets.Enmity,sets.JA.Rayke)
end
if spell.name == 'Battuta' then
equip(sets.Enmity,sets.JA.Battuta)
end
if spell.name == 'Vivacious Pulse' then
equip(sets.Enmity,sets.JA.Pulse)
mid_obi(spell.element,spell.name)
end
if spell.name == 'One for All' or spell.name == 'Embolden' or spell.name == 'Odyllic Subterfuge' or spell.name == 'Warcry'
or spell.name == 'Swordplay' or spell.name == 'Rayke' or spell.name == 'Meditate' or spell.name == 'Provoke' then
equip(sets.Enmity)
end
if spell.name == 'Resolution' or spell.name == 'Ruinator' then
equip(sets.Resolution)
end
if spell.name == 'Spinning Slash'
or spell.name == 'Ground Strike'
or spell.name == 'Upheaval'
or spell.name == 'Dimidiation'
or spell.name == 'Steel Cyclone'
or spell.name == 'Savage Blade' then
equip(sets.Single)
end
if spell.name == 'Shockwave' then
equip(sets.Shockwave)
end
if spell.name == 'Fell Cleave' or spell.name == 'Circle Blade' then
equip(sets.Cleave)
end
if spell.name == 'Requiescat' then
equip(sets.Req)
end
if spell.name == 'Vorpal Blade' or spell.name == 'Rampage' then
equip(sets.Vorp)
end
if spell.name == 'Herculean Slash'
or spell.name == 'Freezebite'
or spell.name == 'Sanguine Blade'
or spell.name == 'Red Lotus Blade'
or spell.name == 'Seraph Blade' then
equip(sets.HercSlash)
mid_obi(spell.element,spell.name)
end
--prevents casting Utsusemi if you already have 3 or more shadows
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) then
cancel_spell()
end
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
if buffactive.sleep and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
end
function midcast(spell,act,arg)
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,{head="Runeist bandeau +1"})
end
if spell.skill == 'Enhancing Magic' then
equip({head="Erilaz Galea +1",legs="Futhark Trousers +1"})
if spell.name == "Blink" or spell.name == "Stoneskin" or string.find(spell.name,'Utsusemi') then
equip(sets.Utility.PDT,{head="Runeist bandeau +1",hands="Leyline Gloves"})
elseif string.find(spell.name,'Bar') or spell.name=="Temper" then
equip({hands="Runeist Mitons +1"})
end
if buffactive.embolden then
equip({back="Evasionist's Cape"})
end
end
if spell.name == 'Foil' or spell.name == 'Flash' or spell.name == "Stun" then
equip(sets.Enmity,{head="Runeist bandeau +1"})
end
if spell.name == 'Phalanx' then
equip(sets.Phalanx)
end
if string.find(spell.name,'Regen') then
equip({head="Runeist bandeau +1"})
end
if spell.name == "Repose" or spell.skill == 'Enfeebling Magic' or spell.skill == 'Dark Magic' then
equip(sets.MagicAcc)
end
if spell.skill == 'Elemental Magic' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--cancels Ni shadows (if there are only 1 or 2) when casting Ichi
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
send_command('cancel Copy Image')
send_command('cancel Copy Image (2)')
end
end
function aftercast(spell)
equip_current()
if string.find(spell.name,'Utsusemi') and not spell.interrupted then
if spell.name == 'Utsusemi: Ichi' then
ShadowType = 'Ichi'
elseif spell.name == 'Utsusemi: Ni' then
ShadowType = 'Ni'
end
end
end
function status_change(new,old)
equip_current()
end
function equip_TP()
equip(sets.TP[sets.TP.index[TP_ind]])
--equips offensive gear despite being on defensive set if you have shadows
if TP_ind == 3 and ((buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) or buffactive['Third Eye'] or buffactive['Blink']) then
equip(sets.TP.Accuracy)
end
--equips DW gear if using two weapons
if player.equipment.sub == "Tramontane Axe" or player.equipment.sub == "Pukulatmuj" or player.equipment.sub == "Anahera Sword" then
equip({ear2="Suppanomimi"})
end
--equips offensive gear and relic boots during Battuta
if buffactive.battuta then
--remains on defensive set if Avoidance Down is active
if buffactive['Avoidance Down'] then
else
if TP_ind == 3 then
equip(sets.TP.Accuracy)
end
equip({feet="Futhark Boots +1"})
end
end
--equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
--equip Frenzy Sallet (will wake you up) if engaged, slept, and over 100 HP
if buffactive.sleep and player.hp > 100 then
equip({head="Frenzy Sallet"})
end
end
function equip_idle()
equip(sets.Idle)
--equips extra refresh gear when MP is below 75%
if player.mpp < 75 then
equip({body="Runeist Coat +1"})
end
--auto-equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
end
function buff_change(buff,gain)
local buff = string.lower(buff)
if buff == "terror" or buff == "petrification" or buff == "stun" or buff == "sleep" then
if gain then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
if buff == "sleep" and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
else
equip_current()
end
end
end
function equip_current()
if player.status == 'Engaged' then
equip_TP()
else
equip_idle()
end
end
function self_command(command)
if command == 'toggle TP set' then
TP_ind = TP_ind +1
if TP_ind > #sets.TP.index then TP_ind = 1 end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
elseif command == 'reverse TP set' then
TP_ind = TP_ind -1
if TP_ind == 0 then TP_ind = #sets.TP.index end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
end
end
So just to confirm, you dont need an include for that one? I noticed you have augmented gear listed as well, if i use the export command of GS, I can simply replace it with my gear, and it'll work, right?
Edit: Holy mother of necros.. Opps.
I get asked about this a lot, so here's a template I give to people. Unlike other templates out there, this is a stand-alone lua file, so you don't need that extra Mote stuff. I also think this format is a lot simpler and I've added some notes to help new Gearswap users. Disregard gear choices since this is fairly dated from my own use. Enjoy!
Code function get_sets()
--Idle Sets--
sets.Idle = { ammo="Homiliary",
head="Futhark Bandeau +1",neck="Twilight Torque",ear1="Hearty Earring",ear2="Ethereal Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Skadi's Jambeaux +1"}
--TP Sets--
sets.TP = {}
sets.TP.index = {'Standard', 'Accuracy', 'DT', 'MDTacc'}
TP_ind = 1
--offensive melee set
sets.TP.Standard = { ammo="Ginsen",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Ethereal Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Chaac Belt",legs="Taeon Tights",feet="Futhark Boots +1"}
--high accuracy/DT hybrid set
sets.TP.Accuracy = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Steelflash Earring",ear2="Zennaroi Earring",
body="Emet Harness +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Olseni Belt",legs="Taeon Tights",feet="Taeon Boots"}
--full DT melee set
sets.TP.DT = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Hearty Earring",ear2="Zennaroi Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Erilaz Greaves +1"}
--MDT melee set
sets.TP.MDTacc = { ammo="Falcon Eye",
head="Dampening Tam",neck="Twilight Torque",ear1="Steelflash Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Taeon Boots"}
--Weaponskill Sets--
sets.WS = {}
--multi, carries FTP
sets.Resolution = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--single, doesn't carry FTP
sets.Single = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Ishvara earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Ramuh Ring +1",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--single hit, benefits from DA
sets.Cleave = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--added effect
sets.Shockwave = { ammo="Falcon Eye",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Zennaroi Earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Epona's Ring",ring2="Ramuh Ring +1",
back="Evasionist's Cape",waist="Eschan Stone",legs="Lustratio Subligar +1",feet="Taeon Boots"}
--Requiescat
sets.Req = { ammo="Seething Bomblet +1",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Taeon Tights",feet="Taeon Boots"}
--crit based
sets.Vorp = { ammo="Qirmiz Tathlum",
head="Dampening Tam",neck="Fotia Gorget",ear1="Brutal earring",ear2="Moonshade Earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Evasionist's Cape",waist="Fotia Belt",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
--magic WS
sets.HercSlash = { ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.Utility = {}
--full PDT set for when stunned, etc.
sets.Utility.PDT = { ammo="Vanir Battery",
head="Erilaz Galea +1",neck="Twilight Torque",ear1="Hearty Earring",ear2="Ethereal Earring",
body="Futhark coat +1",hands="Erilaz Gauntlets +1",ring1="Patricius Ring",ring2="Defending Ring",
back="Evasionist's Cape",waist="Flume Belt",legs="Erilaz Leg Guards +1",feet="Erilaz Greaves +1"}
--full MDT set for when stunned, etc
sets.Utility.MDT = { ammo="Vanir Battery",
head="Dampening Tam",neck="Twilight Torque",ear1="Hearty Earring",ear2="Zennaroi Earring",
body="Rawhide Vest",hands="Erilaz Gauntlets +1",ring1="Shadow Ring",ring2="Defending Ring",
back="Engulfer Cape +1",waist="Olseni Belt",legs="Runeist Trousers +1",feet="Erilaz Greaves +1"}
--Job Ability Sets--
sets.JA = {}
sets.JA.Lunge = {ammo="Seething Bomblet +1",
head="Highwing Helm",neck="Deviant Necklace",lear="Hecate's Earring",rear="Friomisi earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",
back="Argochampsa Mantle",waist="Eschan Stone",legs="Limbo Trousers",feet="Adhemar Gamashes"}
sets.JA.Vallation = {body="Runeist Coat +1",legs="Futhark Trousers +1"}
sets.JA.Gambit = {hands="Runeist mitons +1"}
sets.JA.Rayke = {feet="Futhark bottes +1"}
sets.JA.Battuta = {head="Futhark bandeau +1"}
sets.JA.Pflug = {feet="Runeist bottes +1"}
sets.JA.Pulse = {head="Erilaz Galea +1",legs="Runeist Trousers +1"}
--Precast Sets--
--Fast Cast set
sets.precast = {head="Runeist bandeau +1",
body="Samnuha Coat",hands="Leyline Gloves",
legs="Limbo Trousers"}
sets.Phalanx = {head="Futhark bandeau +1",body="Taeon Tabard",legs="Futhark Trousers +1"}
--Enmity set for high hate generating spells and JAs
sets.Enmity = {head="Highwing Helm",neck="Unmoving Collar +1",rear="Friomisi earring",
body="Emet Harness +1",hands="Nilas Gloves",
back="Earthcry Mantle",legs="Erilaz Leg Guards",feet="Erilaz Greaves +1"}
--Magic acc for enfeebles, handy for VW
sets.MagicAcc = {head="Dampening Tam",ear1="Gwati Earring",
body="Samnuha Coat",hands="Leyline Gloves",
waist="Salire Belt",legs="Runeist Trousers +1",feet="Iuitl Gaiters +1"}
--Toggle TP sets button, change if you want; currently ALT+F9 toggles forward, CTRL+F9 toggles backwards
send_command('bind !f9 gs c toggle TP set')
send_command('bind ^f9 gs c reverse TP set')
--other stuff, don't touch
ShadowType = 'None'
end
--the following section looks at the weather/day to see if the Hachirin-no-Obi is worth using
--add the following line to a section to have it check the element and equip the obi:
-->>> mid_obi(spell.element,spell.name)
function mid_obi(spelement,spellname)
if spelement == nil then
spelement = "Light"
end
if spellname == nil then
spellname = "Cure"
end
elements = {}
elements.list = S{'Fire','Ice','Wind','Earth','Lightning','Water','Light','Dark'}
elements.number = {[0]="Fire",[1]="Ice",[2]="Wind",[3]="Earth",[4]="Lightning",[5]="Water",[6]="Light",[7]="Dark"}
elements.weak = {['Light']='Dark', ['Dark']='Light', ['Fire']='Water', ['Ice']='Fire', ['Wind']='Ice', ['Earth']='Wind',
['Lightning']='Earth', ['Water']='Lightning'}
weather = world.weather_element
intensity = 1 + (world.weather_id % 2)
day = world.day
boost = 0
obi = nil
for _,buff in pairs (windower.ffxi.get_player().buffs) do
if buff > 177 and buff < 186 then
weather = elements.number[(buff - 178)]
intensity = 1
elseif buff > 588 and buff < 597 then
weather = elements.number[(buff - 589)]
intensity = 2
end
if spellname == "Swipe" or spellname == "Lunge" or spellname == "Vivacious Pulse" then
if buff > 522 and buff < 531 then
spelement = elements.number[(buff - 523)]
end
end
end
if weather == spelement then
boost = boost + intensity
elseif weather == elements.weak[spelement] then
boost = boost - intensity
end
if day == spelement then
boost = boost + 1
elseif day == elements.weak[spelement] then
boost = boost - 1
end
if boost > 0 then
if player.inventory["Hachirin-no-Obi"] or player.wardrobe["Hachirin-no-Obi"] then
equip({waist="Hachirin-no-Obi"})
end
end
end
function precast(spell,abil)
--equips favorite weapon if disarmed
if player.equipment.main == "empty" or player.equipment.sub == "empty" then
equip({main="Epeolatry",sub="Bloodrain Strap"})
end
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,sets.precast)
end
if spell.skill == 'Enhancing Magic' then
equip({legs="Futhark Trousers +1"})
end
if string.find(spell.name,'Utsusemi') then
equip({neck="Magoraga Beads"})
end
if spell.name == 'Lunge' or spell.name == 'Swipe' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--prevents Valiance/Vallation/Liement from being prevented by each other (cancels whichever is active)
if spell.name == 'Valiance' or spell.name == 'Vallation' or spell.name == 'Liement' then
if buffactive['Valiance'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(535)
elseif buffactive['Vallation'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(531)
elseif buffactive['Liement'] then
cast_delay(0.2)
windower.ffxi.cancel_buff(537)
end
end
if spell.name == 'Vallation' or spell.name == 'Valiance' then
equip(sets.Enmity,sets.JA.Vallation)
end
if spell.name == 'Pflug' then
equip(sets.Enmity,sets.JA.Pflug)
end
if spell.name == 'Elemental Sforzo' or spell.name == 'Liement' then
equip(sets.Enmity,{body="Futhark Coat +1"})
end
if spell.name == 'Gambit' then
equip(sets.Enmity,sets.JA.Gambit)
end
if spell.name == 'Rayke' then
equip(sets.Enmity,sets.JA.Rayke)
end
if spell.name == 'Battuta' then
equip(sets.Enmity,sets.JA.Battuta)
end
if spell.name == 'Vivacious Pulse' then
equip(sets.Enmity,sets.JA.Pulse)
mid_obi(spell.element,spell.name)
end
if spell.name == 'One for All' or spell.name == 'Embolden' or spell.name == 'Odyllic Subterfuge' or spell.name == 'Warcry'
or spell.name == 'Swordplay' or spell.name == 'Rayke' or spell.name == 'Meditate' or spell.name == 'Provoke' then
equip(sets.Enmity)
end
if spell.name == 'Resolution' or spell.name == 'Ruinator' then
equip(sets.Resolution)
end
if spell.name == 'Spinning Slash'
or spell.name == 'Ground Strike'
or spell.name == 'Upheaval'
or spell.name == 'Dimidiation'
or spell.name == 'Steel Cyclone'
or spell.name == 'Savage Blade' then
equip(sets.Single)
end
if spell.name == 'Shockwave' then
equip(sets.Shockwave)
end
if spell.name == 'Fell Cleave' or spell.name == 'Circle Blade' then
equip(sets.Cleave)
end
if spell.name == 'Requiescat' then
equip(sets.Req)
end
if spell.name == 'Vorpal Blade' or spell.name == 'Rampage' then
equip(sets.Vorp)
end
if spell.name == 'Herculean Slash'
or spell.name == 'Freezebite'
or spell.name == 'Sanguine Blade'
or spell.name == 'Red Lotus Blade'
or spell.name == 'Seraph Blade' then
equip(sets.HercSlash)
mid_obi(spell.element,spell.name)
end
--prevents casting Utsusemi if you already have 3 or more shadows
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) then
cancel_spell()
end
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
if buffactive.sleep and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
end
function midcast(spell,act,arg)
if spell.action_type == 'Magic' then
equip(sets.Utility.PDT,{head="Runeist bandeau +1"})
end
if spell.skill == 'Enhancing Magic' then
equip({head="Erilaz Galea +1",legs="Futhark Trousers +1"})
if spell.name == "Blink" or spell.name == "Stoneskin" or string.find(spell.name,'Utsusemi') then
equip(sets.Utility.PDT,{head="Runeist bandeau +1",hands="Leyline Gloves"})
elseif string.find(spell.name,'Bar') or spell.name=="Temper" then
equip({hands="Runeist Mitons +1"})
end
if buffactive.embolden then
equip({back="Evasionist's Cape"})
end
end
if spell.name == 'Foil' or spell.name == 'Flash' or spell.name == "Stun" then
equip(sets.Enmity,{head="Runeist bandeau +1"})
end
if spell.name == 'Phalanx' then
equip(sets.Phalanx)
end
if string.find(spell.name,'Regen') then
equip({head="Runeist bandeau +1"})
end
if spell.name == "Repose" or spell.skill == 'Enfeebling Magic' or spell.skill == 'Dark Magic' then
equip(sets.MagicAcc)
end
if spell.skill == 'Elemental Magic' then
equip(sets.JA.Lunge)
mid_obi(spell.element,spell.name)
end
--cancels Ni shadows (if there are only 1 or 2) when casting Ichi
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
send_command('cancel Copy Image')
send_command('cancel Copy Image (2)')
end
end
function aftercast(spell)
equip_current()
if string.find(spell.name,'Utsusemi') and not spell.interrupted then
if spell.name == 'Utsusemi: Ichi' then
ShadowType = 'Ichi'
elseif spell.name == 'Utsusemi: Ni' then
ShadowType = 'Ni'
end
end
end
function status_change(new,old)
equip_current()
end
function equip_TP()
equip(sets.TP[sets.TP.index[TP_ind]])
--equips offensive gear despite being on defensive set if you have shadows
if TP_ind == 3 and ((buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) or buffactive['Third Eye'] or buffactive['Blink']) then
equip(sets.TP.Accuracy)
end
--equips DW gear if using two weapons
if player.equipment.sub == "Tramontane Axe" or player.equipment.sub == "Pukulatmuj" or player.equipment.sub == "Anahera Sword" then
equip({ear2="Suppanomimi"})
end
--equips offensive gear and relic boots during Battuta
if buffactive.battuta then
--remains on defensive set if Avoidance Down is active
if buffactive['Avoidance Down'] then
else
if TP_ind == 3 then
equip(sets.TP.Accuracy)
end
equip({feet="Futhark Boots +1"})
end
end
--equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
--equip Frenzy Sallet (will wake you up) if engaged, slept, and over 100 HP
if buffactive.sleep and player.hp > 100 then
equip({head="Frenzy Sallet"})
end
end
function equip_idle()
equip(sets.Idle)
--equips extra refresh gear when MP is below 75%
if player.mpp < 75 then
equip({body="Runeist Coat +1"})
end
--auto-equip defensive gear when hit with terror/petrify/stun/sleep
if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
end
end
function buff_change(buff,gain)
local buff = string.lower(buff)
if buff == "terror" or buff == "petrification" or buff == "stun" or buff == "sleep" then
if gain then
if TP_ind == 4 then
equip(sets.Utility.MDT) else
equip(sets.Utility.PDT)
end
if buff == "sleep" and player.hp > 100 and player.status == "Engaged" then
equip({head="Frenzy Sallet"})
end
else
equip_current()
end
end
end
function equip_current()
if player.status == 'Engaged' then
equip_TP()
else
equip_idle()
end
end
function self_command(command)
if command == 'toggle TP set' then
TP_ind = TP_ind +1
if TP_ind > #sets.TP.index then TP_ind = 1 end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
elseif command == 'reverse TP set' then
TP_ind = TP_ind -1
if TP_ind == 0 then TP_ind = #sets.TP.index end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip_current()
end
end
|
|