I been having a issue with my dnc lua the problem is that when i use Climactic Flourish the logic of GS dose not seem quick enough to recognize equiping the emp head for the JA and then equiping it again when i go to Rudra's, So i did some searching around and i came across some code that makes it work but something is missing and once i use Climactic Flourish it locks my Emp head on for all WS.
This is not a Mote based lua
Here is what i have
Code:state = {} state.Buff = {} state.Buff['Climactic Flourish'] = buffactive['Climactic Flourish'] or false function precast(spell, action) if state.Buff['Climactic Flourish'] then equipSet = set_combine(equipSet,set,{head="Maculele Tiara +1"}) function aftercast(spell, action) if state.Buff[spell.name] ~= nil then state.Buff[spell.name] = true end function buff_change(buff,gain) if state.buff[buff] ~= nil then state.buff[buff] = gain end
first state.Buff is a mote specific thing
try to use
Code:ClimacticFlourish = false function buff_change(name,gain,buff_table) if name == "Climactic Flourish" then ClimacticFlourish = gain end end function precast(spell, action) if ClimacticFlourish then equipSet = set_combine(equipSet,set,{head="Maculele Tiara +1"}) end ... end
second if you do not have
equip(equipSet)
at the end of your precast you wont equip anything that uses equipSet =
So I can't get gs export to export augmented su5 like rostam.
Any tricks I can do in gearswap to equip an augmented one (located in my wardrobe) instead of the un-augmented rostam currently in my inventory? I remembered there was item priority, and was wondering if there was something similar to equipping something located in a certain bag.
That would probably work, but out of curiosity, does it throw an error?
i have no idea as i can not test it as i currently can not run ffxi
--my comp was fried when a car hit the power sub station down from my house and my chrome book cant run ffxi
--currently i can only run off of theory for my advise but all of gearswaps info says it is possible (GearSwap\beta_examples_and_information\Advanced sets tables.txt -- Specifying a bag --)
Sorry, I should have specified. I was asking about "gs export"
ok i just checked the info for Rostam and it looks like the augment data is not stored in .augments but in .extdata this could be the issue
and i can only think of one way to get this data reliably and thats to decode this data as items are updated
example:
these functions needed to be reworked to get my ring timer to work
you should be able to get rank and type some how with this tho extdata.decode might need to be updated to make this workCode:function refresh_item_list(itemlist) retarr = make_user_table() for i,v in pairs(itemlist) do if type(v) == 'table' and v.id and v.id ~= 0 then if res.items[v.id] and res.items[v.id][language] and not retarr[res.items[v.id][language]] then retarr[res.items[v.id][language]] = table.copy(v) retarr[res.items[v.id][language]].shortname=res.items[v.id][language]:lower() retarr[res.items[v.id][language]].extdata = extdata.decode(v) -- If a long version of the name exists, and is different from the short version, -- add the long name to the info table and point the long name's key at that table. if res.items[v.id][language..'_log'] and res.items[v.id][language..'_log']:lower() ~= res.items[v.id][language]:lower() then retarr[res.items[v.id][language]].longname = res.items[v.id][language..'_log']:lower() retarr[res.items[v.id][language..'_log']] = retarr[res.items[v.id][language]] end elseif res.items[v.id] and res.items[v.id][language] then -- If there's already an entry for this item, all the hard work has already -- been done. Just update the count on the subtable of the main item, and -- everything else will link together. retarr[res.items[v.id][language]].count = retarr[res.items[v.id][language]].count + v.count end end end return retarr end parse.i[0x01D] = function (data) local cur_equip = table.reassign({},items.equipment) player.equipment = make_user_table() table.reassign(player.equipment,to_names_set(cur_equip)) for i,bag in pairs(res.bags) do local bag_name = to_windower_bag_api(bag.en) if items[bag_name] then player[bag_name] = refresh_item_list(items[bag_name]) end end end
-edit-
nope rank,path (type) and RP (NextRP) are in extdata.decode
looking for help with the logic for a set that combines when two buffs are active. right now i have a footwork and an impetus set, i want a third when both are active.
my thought was to use something likeCode:function status_change(new,old) check_equip_lock() if Armor == 'PDT' then equip(sets.PDT) elseif Armor == 'MDT' then equip(sets.MDT) elseif new == 'Engaged' then equipSet = sets.TP if Armor == 'Hybrid' and equipSet["Hybrid"] then equipSet = equipSet["Hybrid"] end if Attack == 'ON' then equipSet = equipSet["ATT"] end if equipSet[AccArray[AccIndex]] then equipSet = equipSet[AccArray[AccIndex]] end if buffactive.Impetus then equipSet = set_combine(equipSet,sets.TP.Impetus) end if buffactive.Footwork then equipSet = set_combine(equipSet,sets.TP.Footwork) end if buffactive['Perfect Counter'] then equipSet = set_combine(equipSet,sets.TP.PerfectCounter) end if Rancor == 'ON' then -- Use Rancor Toggle For Rancor Collar -- equipSet = set_combine(equipSet,sets.TP.Rancor) end equip(equipSet) else equipSet = sets.Idle if equipSet[IdleArray[IdleIndex]] then equipSet = equipSet[IdleArray[IdleIndex]] end equip(equipSet) end if HP == 'ON' then equip(sets.HP) end end
if buffactive.Impetus and buffactive.Footwork then
equipSet = set_combine(equipSet,sets.TP.ImpetusFootwork)
end
but i'm not sure of the order and whether or not i need elseifs or elses to make it work.
thank you, got it working
is there a way to turn on/off keybinds? i'm asking because i cant seem to switch gear sets on my thf using keybinds. i'm using the thf file that was in the gearswap file and the only thing i changed was the equipment in the file, i already have the mote global file and the keybinds worked on my blu (which i havent played in a while so i'm not sure if they still do) but not on my thf
edit: just checked blu, and the keybinds still work on my blu, so not sure whats causing them not to work on my thf, when i hit f11 it just makes the screen bright or dark, when i use ctrl F11 nothing, same with alt f11
Hello all. I'm late to the party, but anyway.
I'm reworking my GS LUA files. I would like to have my lua swap in my Aptitude Mantle when the mob is under 25% hp, and lock the back slot.
Then, once I target a mob whose hp is over 25%, I unlock that back slot, and everything is normal, until player.target.hpp is <25%.
I have my code working as intended, for now.
However, I have the hpp check in midcast, as I don't use any midcast swaps in my files. (They're crazy simple, but do what I want.)
Is there a better trigger I can use than midcast? Something that operates nearly fulltime? Midcast works, but I have to actively perform actions of some kind to force midcast checks to occur. Sometimes I'm lazy while solo cp'ing, and just kinda let the auto-attacks run and kill the mob. No action=no midcast checks= no aptitude mantle
I don't use any includes or anything, its all bare bones that I wrote up from scratch. And to avoid flubbing the works, I would prefer to keep it that way. Just at a loss as to a more reliable trigger to force the "player.target.hpp" check to occur, hopefully automatically.
Thanks.
the only thing i can think of is to eather use incoming_chunk, Action Event, or prerender events
example(untested):
Code:windower.raw_register_event('prerender',function() if frame_count%30 == 0 then local target = windower.ffxi.get_mob_by_target('t') if target.hpp <= 25 then gearswap.equip_sets('prerender',nil,{back="Aptitude Mantle"}) disable("back") else enable("back") end end frame_count = frame_count + 1 end)
oh man, cant wait til im able to resub and I cant figure out why my waltz codes dont work anymore. cause ill have forgotten all bout this timer delinking thing.
Getting back into the game and found a gearswap and edited some gear.
My question is how what to a put into my macro to look into my PDT/MDT gear and then switch out?Code:function get_sets() send_command('bind f9 gs c toggle MTP set') send_command('bind f10 gs c toggle Idle set') send_command('bind f11 gs c toggle Shoha set') send_command('bind f12 gs c toggle Fudo set') send_command('bind ^f11 gs c toggle Apex set') send_command('bind ^f12 gs c toggle Kaiten set') function file_unload() send_command('unbind ^f9') send_command('unbind ^f10') send_command('unbind ^f11') send_command('unbind ^f12') send_command('unbind !f9') send_command('unbind !f10') send_command('unbind !f11') send_command('unbind !f12') send_command('unbind f9') send_command('unbind f10') send_command('unbind f11') send_command('unbind f12') end --Idle Sets-- sets.Idle = {} sets.Idle.index = {'Standard', 'Town'} Idle_ind = 1 sets.Idle.Standard = {head="Twilight helm",neck="Wiglen gorget",ear1="Merman's Earring",ear2="Merman's Earring", body="Ares' Cuirass +1",hands="Cizin Mufflers",ring1="Sheltered Ring",ring2="Paguroidea Ring", back="Engulfer cape +1",waist="Flume Belt +1",legs="Blood Cuisses",feet="Danzo Sune-Ate"} sets.Idle.Town = {ammo="Tulfaire arrow", head="Sakonji kabuto +1",neck="Twilight torque", ear1="Steelflash earring", ear2="Bladeborn earring", body="Sakonji domaru +1",hands="Wakido kote +1",ring1="Dark ring",ring2="Dark ring", back="Shadow mantle",waist="Flume belt",legs="Wakido haidate +1",feet="Danzo Sune-Ate"} --TP Sets-- sets.TP = {} sets.TP.index = {'Standard', 'AccuracyLite', 'AccuracyFull', 'DT', 'DTAccuracy'} --1=Standard, 2=AccuracyLite, 3=AccuracyFull, 4=DT, 5=DTAccuracy-- TP_ind = 1 sets.TP.Standard = {ammo="Hagneia Stone", head="Yaoyotl Helm",neck="Asperity necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Kasuga domaru",hands="Flamma Manopolas +1",ring1="Rajas Ring",ring2="Flamma ring", back="Atheling mantle",waist="Cetl belt",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.TP.AccuracyLite = {ammo="Hagneia Stone", head="Yaoyotl Helm",neck="Asperity necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Kasuga domaru",hands="Flamma Manopolas +1",ring1="Rajas Ring",ring2="Flamma ring", back="Atheling mantle",waist="Dynamic Belt +1",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.TP.AccuracyFull = {ammo="Hagneia Stone", head="Yaoyotl Helm",neck="Asperity necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Kasuga domaru",hands="Flamma Manopolas +1",ring1="Rajas Ring",ring2="Flamma ring", back="Atheling mantle",waist="Dynamic Belt +1",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.TP.DT = {range="Cibitshavore",ammo="Tulfaire arrow", head="Yaoyotl helm",neck="Asperity necklace", ear1="Steelflash earring", ear2="Bladeborn earring", body="Miki. breastplate",hands="Wakido kote +1",ring1="Flamma ring",ring2="Rajas ring", back="Takaha mantle",waist="Cetl belt",legs="Otronif brais",feet="Waki. Sune-Ate +1"} sets.TP.DTAccuracy = {range="Cibitshavore",ammo="Tulfaire arrow", head="Yaoyotl helm",neck="Asperity necklace", ear1="Steelflash earring", ear2="Bladeborn earring", body="Miki. breastplate",hands="Wakido kote +1",ring1="Flamma ring",ring2="Rajas ring", back="Takaha mantle",waist="Cetl belt",legs="Wakido haidate +1",feet="Waki. Sune-Ate +1"} sets.RangedTP = {} sets.RangedTP.index = {'Standard', 'AccuracyLite', 'AccuracyFull'} --1=Standard, 2=AccuracyLite, 3=AccuracyFull-- TP_ind = 1 sets.RangedTP.Standard = {range="Cibitshavore",ammo="Tulfaire arrow", head="Otomi helm",neck="Iqabi necklace", ear1="Steelflash earring", ear2="Bladeborn earring", body="Sakonji domaru +1",hands="Umuthi gloves",ring1="Flamma ring",ring2="Rajas ring", back="Takaha mantle",waist="Cetl belt",legs="Wakido haidate +1",feet="Waki. Sune-Ate +1"} sets.RangedTP.AccuracyLite = {range="Cibitshavore",ammo="Tulfaire arrow", head="Otomi helm",neck="Asperity necklace", ear1="Steelflash earring", ear2="Bladeborn earring", body="Sakonji domaru +1",hands="Otronif gloves",ring1="Flamma ring",ring2="Rajas ring", back="Takaha mantle",waist="Dynamic belt +1",legs="Wakido haidate +1",feet="Waki. Sune-Ate +1"} sets.RangedTP.AccuracyFull = {range="Cibitshavore",ammo="Tulfaire arrow", head="Yaoyotl helm",neck="Iqabi necklace", ear1="Steelflash earring", ear2="Bladeborn earring", body="Sakonji domaru +1",hands="Umuthi gloves",ring1="Flamma ring",ring2="Rajas ring", back="Takaha mantle",waist="Dynamic belt +1",legs="Wakido haidate +1",feet="Waki. Sune-Ate +1"} --Weaponskill Sets-- sets.WS = {} sets.Shoha = {} sets.Shoha.index = {'Attack','Accuracy'} Shoha_ind = 1 sets.Shoha.Attack = {ammo="Thew bomblet", head="Yaoyotl helm",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Buquwik cape",waist="Fotia belt",legs="Flamma dirs",feet="Flamma Gambieras +1"} sets.Shoha.Accuracy = {ammo="Thew bomblet", head="Yaoyotl helm",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Buquwik cape",waist="Fotia belt",legs="Flamma dirs",feet="Flamma Gambieras +1"} sets.Fudo = {} sets.Fudo.index = {'Attack','Accuracy'} Fudo_ind = 1 sets.Fudo.Attack = {ammo="Thew bomblet", head="Yaoyotl helm",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Buquwik cape",waist="Fotia belt",legs="Flamma dirs",feet="Flamma Gambieras +1"} sets.Fudo.Accuracy = {ammo="Thew bomblet", head="Yaoyotl helm",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Buquwik cape",waist="Fotia belt",legs="Flamma dirs",feet="Flamma Gambieras +1"} sets.Kaiten = {} sets.Kaiten.index = {'Attack','Accuracy'} Kaiten_ind = 1 sets.Kaiten.Attack = {ammo="Thew bomblet", head="Yaoyotl helm",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Buquwik cape",waist="Fotia belt",legs="Flamma dirs",feet="Flamma Gambieras +1"} sets.Kaiten.Accuracy = {ammo="Thew bomblet", head="Yaoyotl helm",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Buquwik cape",waist="Fotia belt",legs="Flamma dirs",feet="Flamma Gambieras +1"} sets.Jinpu = {} sets.Jinpu = {ammo="Thew bomblet", head="Yaoyotl helm",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Buquwik cape",waist="Fotia belt",legs="Flamma dirs",feet="Flamma Gambieras +1"} sets.Apex = {} sets.Apex.index = {'Attack','Accuracy', 'Accuracy Max'} Apex_ind = 1 sets.Apex.Attack = {range="Cibitshavore",ammo="Tulfaire arrow", head="Sakonji kabuto +1",neck="Light gorget",ear1="Matanki earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Unkai kote +2",ring1="Stormsoul ring",ring2="Auster's ring", back="Buquwik cape",waist="Light belt",legs="Wakido haidate +1",feet="Waki. Sune-Ate +1"} sets.Apex.Accuracy = {range="Cibitshavore",ammo="Tulfaire arrow", head="Sakonji kabuto +1",neck="Light gorget",ear1="Matanki earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Buremte gloves",ring1="Hajduk ring",ring2="Longshot ring", back="Thall Mantle",waist="Light belt",legs="Wakido haidate +1",feet="Waki. Sune-Ate +1"} sets.Apex.MaxAccuracy = {range="Cibitshavore",ammo="Tulfaire arrow", head="Sakonji kabuto +1",neck="Light gorget",ear1="Matanki earring",ear2="Clearview earring", body="Aetosaur Jerkin",hands="Buremte gloves",ring1="Hajduk ring",ring2="Longshot ring", back="Thall Mantle",waist="Light belt",legs="Aeto. Trousers",feet="Waki. Sune-Ate +1"} sets.Namas = {} sets.Namas.index = {'Attack','Accuracy'} Namas_ind = 1 sets.Namas.Attack = {range="Cibitshavore",ammo="Tulfaire arrow", head="Otomi helm",neck="Flame gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Phorcys mitts",ring1="Vulcan's ring",ring2="Rajas ring", back="Buquwik cape",waist="Light belt",legs="Wakido haidate",feet="Gor. sollerets +1"} sets.Namas.Accuracy = {range="Cibitshavore",ammo="Tulfaire arrow", head="Yaoyotl helm",neck="Flame gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Phorcys korazin",hands="Phorcys mitts",ring1="Vulcan's ring",ring2="Rajas ring", back="Buquwik cape",waist="Light belt",legs="Wakido haidate",feet="Gor. sollerets +1"} --Utility Sets-- sets.Utility = {} sets.Utility.PDT = {head="Rabid visor",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Mikinaak breastplate",hands="Flamma Manopolas +1",ring1="Jelly Ring",ring2="Defending Ring",hands="Flamma Manopolas +1", back="Iximulew cape",waist="Flume Belt +1",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.Utility.MDT = {head="Yaoyotl Helm",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring", body="Nocturnus mail",hands="Flamma Manopolas +1",ring1="Minerva's Ring",ring2="Defending Ring", back="Engulfer Cape +1",waist="Dynamic Belt +1",legs="Flamma dirs",feet="Flamma Gambieras +1"} --Job Ability Sets-- sets.JA = {} sets.JA.Meditate = {head="Wakido kabuto", hands="Sao. kote +2"} sets.JA.Meikyo = {feet="Sakonji sune-ate"} end function precast(spell) if spell.english == 'Meditate' then equip(sets.JA.Meditate) end if spell.english == 'Meikyo Shisui' then equip(sets.JA.Meikyo) end if spell.english == 'Tachi: Shoha' or spell.english == 'Tachi: Gekko' or spell.english == 'Tachi: Yukikaze' or spell.english == 'Tachi: Kasha' then equip(sets.Shoha[sets.Shoha.index[Shoha_ind]]) end if spell.english == 'Tachi: Fudo' or spell.english == 'Tachi: Rana' then equip(sets.Fudo[sets.Fudo.index[Fudo_ind]]) end if spell.english == 'Tachi: Kaiten' then equip(sets.Kaiten[sets.Kaiten.index[Kaiten_ind]]) end if spell.english == 'Tachi: Jinpu' then equip(sets.Jinpu) end if spell.english == 'Apex Arrow' then equip(sets.Apex[sets.Apex.index[Apex_ind]]) end if spell.english == 'Namas Arrow' then equip(sets.Namas[sets.Namas.index[Namas_ind]]) end if spell.name == "Ranged" then equip(sets.Utility.Snapshot) end if spell.name == "Hasso" then equip(sets.TP[sets.TP.index[TP_ind]]) end end function midcast(spell,act) if spell.name == "Ranged" then equip(sets.RangedTP[sets.RangedTP.index[RangedTP_ind]]) end end function aftercast(spell,act) if player.status == 'Engaged' then equip(sets.TP[sets.TP.index[TP_ind]]) else equip(sets.Idle[sets.Idle.index[Idle_ind]]) end end function status_change(new,old) if new == 'Engaged' then equip(sets.TP[sets.TP.index[TP_ind]]) else equip(sets.Idle[sets.Idle.index[Idle_ind]]) end end function self_command(command) if command == 'toggle MTP 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(sets.TP[sets.TP.index[TP_ind]]) elseif command == 'toggle RTP set' then RangedTP_ind = RangedTP_ind +1 if RangedTP_ind > #sets.RangedTP.index then RangedTP_ind = 1 end send_command('@input /echo <----- Ranged TP Set changed to '..sets.RangedTP.index[RangedTP_ind]..' ----->') equip(sets.RangedTP[sets.RangedTP.index[RangedTP_ind]]) elseif command == 'toggle Idle set' then Idle_ind = Idle_ind +1 if Idle_ind > #sets.Idle.index then Idle_ind = 1 end send_command('@input /echo <----- Idle Set changed to '..sets.Idle.index[Idle_ind]..' ----->') equip(sets.Idle[sets.Idle.index[Idle_ind]]) elseif command == 'toggle Shoha set' then Shoha_ind = Shoha_ind +1 if Shoha_ind > #sets.Shoha.index then Shoha_ind = 1 end send_command('@input /echo <----- Tachi: Shoha Set changed to '..sets.Shoha.index[Shoha_ind]..' ----->') elseif command == 'toggle Fudo set' then Fudo_ind = Fudo_ind +1 if Fudo_ind > #sets.Fudo.index then Fudo_ind = 1 end send_command('@input /echo <----- Tachi: Fudo Set changed to '..sets.Fudo.index[Fudo_ind]..' ----->') elseif command == 'toggle Kaiten set' then Kaiten_ind = Kaiten_ind +1 if Kaiten_ind > #sets.Kaiten.index then Kaiten_ind = 1 end send_command('@input /echo <----- Tachi: Kaiten Set changed to '..sets.Kaiten.index[Kaiten_ind]..' ----->') elseif command == 'toggle Apex set' then Apex_ind = Apex_ind +1 if Apex_ind > #sets.Apex.index then Apex_ind = 1 end send_command('@input /echo <----- Apex Arrow Set changed to '..sets.Apex.index[Apex_ind]..' ----->') elseif command == 'toggle Namas set' then Namas_ind = Namas_ind +1 if Namas_ind > #sets.Namas.index then Namas_ind = 1 end send_command('@input /echo <----- Namas Arrow Set changed to '..sets.Namas.index[Namas_ind]..' ----->') elseif command == 'equip TP set' then equip(sets.TP[sets.TP.index[TP_ind]]) elseif command == 'equip Idle set' then equip(sets.Idle[sets.Idle.index[Idle_ind]]) end end
Also I have having a hard time equipping gear doing JAs
Code:sets.JA['Meditate'] = {head="Wakido kabuto", hands="Sao. kote +2", back="Smertrios's mantle"}
This is not working
Sorry I am very new to gearswap
Edit: Also how does augmented gear work in gearswap, say I wanted different JSE back piecesCode:------------------------------------------------------------------------------------------------------------------- -- Setup functions for this job. Generally should not be modified. ------------------------------------------------------------------------------------------------------------------- -- Initialization function for this job file. function get_sets() mote_include_version = 2 -- Load and initialize the include file. include('Mote-Include.lua') end -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked. function job_setup() state.Buff.Hasso = buffactive.Hasso or false state.Buff.Seigan = buffactive.Seigan or false state.Buff.Sekkanoki = buffactive.Sekkanoki or false state.Buff.Sengikori = buffactive.Sengikori or false state.Buff['Meikyo Shisui'] = buffactive['Meikyo Shisui'] or false end ------------------------------------------------------------------------------------------------------------------- -- User setup functions for this job. Recommend that these be overridden in a sidecar file. ------------------------------------------------------------------------------------------------------------------- -- Setup vars that are user-dependent. function user_setup() state.OffenseMode:options('Normal', 'Acc') state.HybridMode:options('Normal', 'PDT', 'Reraise') state.WeaponskillMode:options('Normal', 'Acc', 'Mod') state.PhysicalDefenseMode:options('PDT', 'Reraise') update_combat_form() -- Additional local binds send_command('bind ^` input /ja "Hasso" <me>') send_command('bind !` input /ja "Seigan" <me>') select_default_macro_book() end -- Called when this job file is unloaded (eg: job change) function user_unload() send_command('unbind ^`') send_command('unbind !-') 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.JA = {} sets.JA.Meditate = {head="Wakido kabuto", hands="Sao. kote +2", back="Smertrios's mantle"} sets.JA['Warding Circle'] = {head="Wakido kabuto"} sets.JA['Sengikori'] = {feet="Unkai Sune-Ate +2"} sets.JA['Blade Bash'] = {hands="Sao. kote +2"} -- Waltz set (chr and vit) sets.precast.Waltz = {ammo="Sonia's Plectrum", head="Yaoyotl Helm", body="Otronif Harness +1",hands="Buremte Gloves",ring1="Spiral Ring", back="Iximulew Cape",waist="Caudata Belt",legs="Karieyh Brayettes +1",feet="Otronif Boots +1"} -- Don't need any special gear for Healing Waltz. sets.precast.Waltz['Healing Waltz'] = {} -- Weaponskill sets -- Default set for any weaponskill that isn't any more specifically defined sets.precast.WS = {ammo="Thew bomblet", head="Flamma zucchetto +1",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring", body="Flamma korazin +1",hands="Flamma Manopolas +1",ring1="Ifrit ring +1",ring2="Ifrit ring", back="Smertrios's mantle",waist="Fotia belt",legs="Flamma dirs +1",feet="Flamma Gambieras +1"} sets.precast.WS.Acc = set_combine(sets.precast.WS, {}) -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found. sets.precast.WS['Tachi: Fudo'] = set_combine(sets.precast.WS, {}) sets.precast.WS['Tachi: Fudo'].Acc = set_combine(sets.precast.WS.Acc, {}) sets.precast.WS['Tachi: Fudo'].Mod = set_combine(sets.precast.WS['Tachi: Fudo'], {}) sets.precast.WS['Tachi: Shoha'] = set_combine(sets.precast.WS, {}) sets.precast.WS['Tachi: Shoha'].Acc = set_combine(sets.precast.WS.Acc, {}) sets.precast.WS['Tachi: Shoha'].Mod = set_combine(sets.precast.WS['Tachi: Shoha'], {}) sets.precast.WS['Tachi: Rana'] = set_combine(sets.precast.WS, {ear1="Bladeborn Earring",ear2="Steelflash Earring",}) sets.precast.WS['Tachi: Rana'].Acc = set_combine(sets.precast.WS.Acc, {ear1="Bladeborn Earring",ear2="Steelflash Earring",}) sets.precast.WS['Tachi: Rana'].Mod = set_combine(sets.precast.WS['Tachi: Rana'], {}) sets.precast.WS['Tachi: Kasha'] = set_combine(sets.precast.WS, {}) sets.precast.WS['Tachi: Gekko'] = set_combine(sets.precast.WS, {}) sets.precast.WS['Tachi: Yukikaze'] = set_combine(sets.precast.WS, {}) sets.precast.WS['Tachi: Ageha'] = set_combine(sets.precast.WS, {}) sets.precast.WS['Tachi: Jinpu'] = set_combine(sets.precast.WS, {}) -- Midcast Sets sets.midcast.FastRecast = { head="Yaoyotl Helm", body="Flamma korazin +1",hands="Flamma Manopolas +1", legs="Flamma dirs +1",feet="Flamma Gambieras +1"} -- Sets to return to when not performing an action. -- Resting sets sets.resting = {neck="Wiglen Gorget",ring1="Sheltered Ring",ring2="Paguroidea Ring"} -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes) sets.idle.Town = {head="Twilight helm",neck="Wiglen gorget",ear1="Merman's Earring",ear2="Merman's Earring", body="Flamma korazin +1",hands="Cizin Mufflers",ring1="Sheltered Ring",ring2="Paguroidea Ring", back="Engulfer cape +1",waist="Flume Belt +1",legs="Flamma dirs +1",feet="Danzo Sune-Ate"} sets.idle.Field = {head="Twilight helm",neck="Wiglen gorget",ear1="Merman's Earring",ear2="Merman's Earring", body="Flamma korazin +1",hands="Flamma Manopolas +1",ring1="Sheltered Ring",ring2="Paguroidea Ring", back="Engulfer cape +1",waist="Flume Belt +1",legs="Flamma dirs +1",feet="Danzo Sune-Ate"} sets.idle.Weak = {head="Twilight Helm",body="Twilight Mail",neck="Wiglen gorget",ear1="Merman's Earring",ear2="Merman's Earring",hands="Cizin Mufflers",ring1="Sheltered Ring",ring2="Paguroidea Ring",back="Engulfer cape +1",waist="Flume Belt +1",legs="Flamma dirs +1",feet="Danzo Sune-Ate"} -- Defense sets sets.defense.PDT = {head="Rabid visor",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Mikinaak breastplate",hands="Flamma Manopolas +1",ring1="Jelly Ring",ring2="Defending Ring",hands="Flamma Manopolas +1", back="Iximulew cape",waist="Flume Belt +1",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.defense.Reraise = {head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Twilight Mail",hands="Flamma Manopolas +1",ring1="Jelly Ring",ring2="Defending Ring",hands="Flamma Manopolas +1", back="Iximulew cape",waist="Flume Belt +1",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.defense.MDT = {head="Flamma zucchetto +1",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring", body="Nocturnus mail",hands="Flamma Manopolas +1",ring1="Minerva's Ring",ring2="Defending Ring", back="Engulfer Cape +1",waist="Ioskeha belt",legs="Flamma dirs +1",feet="Flamma Gambieras +1"} sets.Kiting = {feet="Danzo Sune-ate"} sets.Reraise = {head="Twilight Helm",body="Twilight Mail"} -- 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 -- Delay 450 GK, 25 Save TP => 65 Store TP for a 5-hit (25 Store TP in gear) sets.engaged = {ammo="Hagneia Stone", head="Flamma zucchetto +1",neck="Asperity necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Kasuga domaru",hands="Flamma Manopolas +1",ring1="Rajas Ring",ring2="Flamma ring", back="Atheling mantle",waist="Ioskeha belt",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.engaged.Acc = {ammo="Hagneia Stone", head="Flamma zucchetto +1",neck="Justice torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Kasuga domaru",hands="Flamma Manopolas +1",ring1="Rajas Ring",ring2="Flamma ring", back="Smertrios's mantle",waist="Ioskeha belt",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.engaged.PDT = {ammo="Thew Bomblet", head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="K'ayres Ring", back="Iximulew Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} sets.engaged.Acc.PDT = {ammo="Honed Tathlum", head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="K'ayres Ring", back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} sets.engaged.Reraise = {ammo="Thew Bomblet", head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring", back="Ik Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} sets.engaged.Acc.Reraise = {ammo="Thew Bomblet", head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring", back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} -- Melee sets for in Adoulin, which has an extra 10 Save TP for weaponskills. -- Delay 450 GK, 35 Save TP => 89 Store TP for a 4-hit (49 Store TP in gear), 2 Store TP for a 5-hit sets.engaged.Adoulin = {ammo="Hagneia Stone", head="Flamma zucchetto +1",neck="Asperity necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Kasuga domaru",hands="Flamma Manopolas +1",ring1="Rajas Ring",ring2="Flamma ring", back="Atheling mantle",waist="Ioskeha belt",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.engaged.Adoulin.Acc ={ammo="Hagneia Stone", head="Flamma zucchetto +1",neck="Asperity necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Kasuga domaru",hands="Flamma Manopolas +1",ring1="Rajas Ring",ring2="Flamma ring", back="Atheling mantle",waist="Ioskeha belt",legs="Kasuga haidate",feet="Flamma Gambieras +1"} sets.engaged.Adoulin.PDT = {ammo="Thew Bomblet", head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="K'ayres Ring", back="Iximulew Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} sets.engaged.Adoulin.Acc.PDT = {ammo="Honed Tathlum", head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="K'ayres Ring", back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} sets.engaged.Adoulin.Reraise = {ammo="Thew Bomblet", head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring", back="Ik Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} sets.engaged.Adoulin.Acc.Reraise = {ammo="Thew Bomblet", head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring", back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"} sets.buff.Sekkanoki = {hands="Unkai kote +1"} sets.buff.Sengikori = {feet="Unkai Sune-ate +2"} sets.buff['Meikyo Shisui'] = {} end ------------------------------------------------------------------------------------------------------------------- -- Job-specific hooks for standard casting events. ------------------------------------------------------------------------------------------------------------------- -- Set eventArgs.handled to true if we don't want any automatic target handling to be done. function job_pretarget(spell, action, spellMap, eventArgs) if spell.type == 'WeaponSkill' then -- Change any GK weaponskills to polearm weaponskill if we're using a polearm. if player.equipment.main=='Quint Spear' or player.equipment.main=='Quint Spear' then if spell.english:startswith("Tachi:") then send_command('@input /ws "Penta Thrust" '..spell.target.raw) eventArgs.cancel = true end end end end -- Run after the default precast() is done. -- eventArgs is the same one used in job_precast, in case information needs to be persisted. function job_post_precast(spell, action, spellMap, eventArgs) if spell.type:lower() == 'weaponskill' then if state.Buff.Sekkanoki then equip(sets.buff.Sekkanoki) end if state.Buff.Sengikori then equip(sets.buff.Sengikori) end if state.Buff['Meikyo Shisui'] then equip(sets.buff['Meikyo Shisui']) end 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) -- Effectively lock these items in place. if state.HybridMode.value == 'Reraise' or (state.DefenseMode.value == 'Physical' and state.PhysicalDefenseMode.value == 'Reraise') then equip(sets.Reraise) end end ------------------------------------------------------------------------------------------------------------------- -- User code that supplements standard library decisions. ------------------------------------------------------------------------------------------------------------------- -- 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) update_combat_form() 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. ------------------------------------------------------------------------------------------------------------------- function update_combat_form() if areas.Adoulin:contains(world.area) and buffactive.ionis then state.CombatForm:set('Adoulin') else state.CombatForm:reset() end end -- Select default macro book on initial load or subjob change. function select_default_macro_book() -- Default macro set/book end