|
Gearswap Support Thread
Bahamut.Kludge
Serveur: Bahamut
Game: FFXI
Posts: 58
By Bahamut.Kludge 2019-08-19 10:09:10
I wrote a pretty simple LUA snippet that differentiates between Haste/ga I and II because Google-fu indicated that most folks still use a toggle, and well, that sucks. The variable it sets can be referenced in automation elsewhere.
I havent tested it across sessions or in scenarios where packets are inevitably dropped, and you will need to get your player ID, however; it did seem to work flalessly in my basic tests. I'm sure it can be made more efficient and adapted for other uses elsewhere. Fortunately it doesnt require much to extend it to Flurry. I just have it running in one of my job's gearswap files atm
Anyways, see below:
[code]
windower.raw_register_event('incoming chunk', function(id, data)
if id == 0x028 then
local action_message = packets.parse('incoming', data)
if
(action_message['Category'] == 4 and --4 = Spell Finished Casting
action_message['Target 1 ID'] == 19881 and --Your Player ID
action_message['Target 1 Action 1 Reaction'] == 0 and --Spell Took Effect. 1 = Didn't Take Effect
action_message['Param'] == 57) --Haste I "Param" field
or
(action_message['Category'] == 13 and --Avatar Caster
action_message['Param'] == 595 and --Hastega I
--Could probably have more targets than this with an advendturing fellow, but *** that.
--Doesn't appear to hit other avatars in the party.
((action_message['Target 1 ID'] == 19881 and action_message['Target 1 Action 1 Reaction'] == 24) or --Avatar Spell Took Effect. 25 = Didn't Take Effect
(action_message['Target 2 ID'] == 19881 and action_message['Target 2 Action 1 Reaction'] == 24) or
(action_message['Target 3 ID'] == 19881 and action_message['Target 3 Action 1 Reaction'] == 24) or
(action_message['Target 4 ID'] == 19881 and action_message['Target 4 Action 1 Reaction'] == 24) or
(action_message['Target 5 ID'] == 19881 and action_message['Target 5 Action 1 Reaction'] == 24) or
(action_message['Target 6 ID'] == 19881 and action_message['Target 6 Action 1 Reaction'] == 24) or
(action_message['Target 7 ID'] == 19881 and action_message['Target 7 Action 1 Reaction'] == 24)))
then
--windower.add_to_chat(17, 'Haste I: Applied')
if
Haste_Tier == 0 or Haste_Tier == nil then
Haste_Tier = 1
windower.add_to_chat(17, 'Haste I: Initial Application')
elseif
Haste_Tier == 1 then
windower.add_to_chat(17, 'Haste I: Re-applied')
elseif
Haste_Tier == 2 then
windower.add_to_chat(17, 'Impossibru: Error')
end
elseif
(action_message['Category'] == 4 and --4 = Spell Finished Casting
action_message['Target 1 ID'] == 19881 and --Your Player ID
action_message['Target 1 Action 1 Reaction'] == 0 and --Spell Took Effect. 1 = Didn't Take Effect
action_message['Param'] == 511) --Haste II "Param" field
or
(action_message['Category'] == 13 and --Avatar Caster
action_message['Param'] == 602 and --Hastega II
--Could probably have more targets than this with an advendturing fellow, but *** that.
--Doesn't appear to hit other avatars in the party.
((action_message['Target 1 ID'] == 19881 and action_message['Target 1 Action 1 Reaction'] == 24) or --Avatar Spell Took Effect. 25 = Didn't Take Effect
(action_message['Target 2 ID'] == 19881 and action_message['Target 2 Action 1 Reaction'] == 24) or
(action_message['Target 3 ID'] == 19881 and action_message['Target 3 Action 1 Reaction'] == 24) or
(action_message['Target 4 ID'] == 19881 and action_message['Target 4 Action 1 Reaction'] == 24) or
(action_message['Target 5 ID'] == 19881 and action_message['Target 5 Action 1 Reaction'] == 24) or
(action_message['Target 6 ID'] == 19881 and action_message['Target 6 Action 1 Reaction'] == 24) or
(action_message['Target 7 ID'] == 19881 and action_message['Target 7 Action 1 Reaction'] == 24)))
then
--windower.add_to_chat(17, 'Haste II: Applied')
if
Haste_Tier == 0 or Haste_Tier == nil then
Haste_Tier = 2
windower.add_to_chat(17, 'Haste II: Initial Application')
elseif
Haste_Tier == 1 then
windower.add_to_chat(17, 'Haste II: Upgraded from Haste I to Haste II')
Haste_Tier = 2
elseif
Haste_Tier == 2 then
windower.add_to_chat(17, 'Haste II: Haste II Re-Applied')
end
end
end
end)
function job_buff_change(buff, gain,lose)
if buff == 'Haste' then
if gain then
--windower.add_to_chat(17, 'Haste Applied')
else
--windower.add_to_chat(17, 'Haste No Longer Applied')
Haste_Tier = 0
end
end
end
/code]
[+]
Bismarck.Sterk
Serveur: Bismarck
Game: FFXI
Posts: 309
By Bismarck.Sterk 2019-09-13 14:19:32
What is Dispelga's spell ID? I was having trouble getting Daybreak's Dispelga to work with Mote's GEO Lua until I got rid of this line in "helper_functions.lua", but I'd like to just add Dispelga's spell ID to the list of exclusions.
Quote: if not available_spells[spell.id] and not (spell.id == 503 or spell.id == 417) then
return false,"Unable to execute command. You do not know that spell ("..(res.spells[spell.id][language] or spell.id)..")"
Edit: Nvm, found it in the Windower resources file. Derp. It's 360.
Asura.Jinbe
Serveur: Asura
Game: FFXI
Posts: 115
By Asura.Jinbe 2019-09-26 05:35:52
Hello there,
if someone can help me with this, only facing this problem in dyna after each action my gear stuck in WS midcast etc. and not going back to Idle or engage. is there anyway to fix this issue?
Bismarck.Xurion
Serveur: Bismarck
Game: FFXI
Posts: 694
By Bismarck.Xurion 2019-09-26 08:25:21
Na, it's the lag in Dyna that causes it. There are manual ways around it like hitting your WS macro again.
Asura.Botosi
Serveur: Asura
Game: FFXI
Posts: 375
By Asura.Botosi 2019-10-02 16:43:52
Ragnarok.Lockfort said: »do you have the fastfollow addon loaded?
...thats it.. wtf
Oh I see, spell cast times is messing it up. That sucks, that was a good addon
Just ran into this issue a couple days ago. Does spell cast times need to be there (i.e can it be removed)? Trying to figure out a way to use Fast Follow without messing up my mid-casts on BLU.
Serveur: Ragnarok
Game: FFXI
Posts: 14
By Ragnarok.Blackcoffee 2019-10-03 11:20:51
What is Dispelga's spell ID? I was having trouble getting Daybreak's Dispelga to work with Mote's GEO Lua until I got rid of this line in "helper_functions.lua", but I'd like to just add Dispelga's spell ID to the list of exclusions.
Quote: if not available_spells[spell.id] and not (spell.id == 503 or spell.id == 417) then
return false,"Unable to execute command. You do not know that spell ("..(res.spells[spell.id][language] or spell.id)..")"
Edit: Nvm, found it in the Windower resources file. Derp. It's 360.
I'm having an issue with geo using dispelga. I'm using selindrile's gearswap and I added dispelga to the exclusions as:
if not available_spells[spell.id] and not (spell.id == 503 or spell.id == 417 or spell.id == 360) then
return false,"Unable to execute command. You do not know that spell ("..(res.spells[spell.id][language] or spell.id)..")"
however I still get this message in debug mode when I attempt to cast dispelga without daybreak already equipped. I added daybreak to my base precast.FC set and still get the same issue. Any ideas?
Asura.Botosi
Serveur: Asura
Game: FFXI
Posts: 375
By Asura.Botosi 2019-10-04 12:27:32
i have:
left_ring={"Chirich Ring +1", bag="wardrobe 2"},
right_ring={"Chirich Ring +1", bag="wardrobe 3"},}
in my gearswap (because both of them weren't equipping at the same time), but now they're not equipping at all since adding the "bag". Could someone please help me solve why? Do i need to define bags or wardrobes at all somewhere in the beginning of my gearswap?
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2019-10-04 19:52:37
Try taking the space out after "wardrobe."
Asura.Botosi
Serveur: Asura
Game: FFXI
Posts: 375
By Asura.Botosi 2019-10-05 11:12:40
Ragnarok.Flippant said: »Try taking the space out after "wardrobe."
I originally had that and that didn’t work either. :/
Shiva.Znitch
Serveur: Shiva
Game: FFXI
Posts: 191
By Shiva.Znitch 2019-10-05 11:17:12
Try this format?
main={name="Rostam",bag="Wardrobe3"}
Asura.Barone
Serveur: Asura
Game: FFXI
Posts: 32
By Asura.Barone 2019-10-13 00:44:50
Hiya,
I found a Lua that reads a weapon on DRK and I want to adapt it to my Dragoon. I was able to get it to read the weapon on initial load or reload, but if I just change my weapon it does not update my gear / combat form. Is there a way to make it function without reloading it? Or is this the method to do this?
Code
Under Job Setup;
Relic_weapons = S{'Gungnir'}
Mythic_weapons = S{'Ryunohige'}
Empyrean_weapons = S{'Rhongomiant'}
Aeonic_weapons = S{'Trishula'}
Example set;
sets.engaged.Gungnir = {
ammo="Ginsen",
head="Hjarrandi Helm",neck="Anu Torque",ear1="Brutal Earring",ear2="Sherida Earring",
body="Hjarrandi Breastplate",hands="Sulevia's Gauntlets +2",ring1="Petrov Ring",ring2="Niqmaddu Ring",
back=gear.Brig.DEXDA,waist="Ioskeha Belt +1",legs=gear.ValorousHose.STP,feet="Flamma Gambieras +2"}
Beneath most of the code;
function get_combat_form()
-- Check Weapontype
if Relic_weapons:contains(player.equipment.main) then
state.CombatForm:set('Gungnir')
elseif
Empyrean_weapons:contains(player.equipment.main) then
state.CombatForm:set('Rhongomiant')
elseif
Mythic_weapons:contains(player.equipment.main) then
state.CombatForm:set('Ryunohige')
elseif
Aeonic_weapons:contains(player.equipment.main) then
state.CombatForm:set('Trishula')
else
state.CombatForm:reset()
end
end
function get_combat_weapon()
if Relic_weapons:contains(player.equipment.main) then
state.CombatWeapon:set('Gungnir')
elseif Empyrean_weapons:contains(player.equipment.main) then
state.CombatWeapon:set('Rhongomiant')
elseif Mythic_weapons:contains(player.equipment.main) then
state.CombatWeapon:set('Ryunohige')
elseif Aeonic_weapons:contains(player.equipment.main) then
state.CombatForm:set('Trishula')
else -- Use regular set.
state.CombatWeapon:reset()
end
end
--[[
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2019-10-13 03:44:28
It's sort of impossible to tell what you're trying to accomplish or what the code is doing without the entirety of the file. Those fragments are only functions, kind of like a set of instructions to run through when called upon. So if you aren't actually using the function, it will do nothing.
If you are using a frame for these (like Kinematics, etc), a link would help.
What is your objective with this code? If you just want it to equip different TP sets based on your weapon, there are less complex ways to accomplish this.
Asura.Barone
Serveur: Asura
Game: FFXI
Posts: 32
By Asura.Barone 2019-10-13 04:05:28
Ragnarok.Flippant said: »It's sort of impossible to tell what you're trying to accomplish or what the code is doing without the entirety of the file. Those fragments are only functions, kind of like a set of instructions to run through when called upon. So if you aren't actually using the function, it will do nothing.
Yeah sadly I'm not much of a coder and figured that the existing Template GS I had for DRK would have this functional. I did a number of runtroughs attempting to get it to work by setting a toggle, but whatever I was attempting was invalid.
I did eventually try the DRK lua since I had some of the equipment it referenced and ended up with the same roadblock, so at least I know it wasn't part of my rebuild.
Ragnarok.Flippant said: »What is your objective with this code? If you just want it to equip different TP sets based on your weapon, there are less complex ways to accomplish this.
Yup, exactly what I'm trying to accomplish.
Right now I'm just rolling with it as is and just doing a reload if I decide to fool around with a different weapon.
Cerberus.Keeo
Serveur: Cerberus
Game: FFXI
Posts: 118
By Cerberus.Keeo 2019-10-21 17:08:58
Hi Guys I am trying to change a weaponskill I have bound based on the main i have equipped but i cant seem to get it to work.
example
Code
if spell.type == 'WeaponSkill' and player.equipment.Main == "Macbain" and spell.english ~= 'UkkosFury' then
cancel_spell()
send_command('Resolution')
add_to_chat(123, spell.name..' Canceled: [Now Resolution]')
return
end
I tried to base it on another piece of code i see that does work
Code elseif spell.english == "Berserk" and buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
cancel_spell()
send_command('Aggressor')
Asura.Shiraj
Serveur: Asura
Game: FFXI
Posts: 1070
By Asura.Shiraj 2019-10-21 17:28:12
So to start I would try changing line 1. Code if spell.type == 'WeaponSkill' and player.equipment.Main == "Macbain" and spell.english ~= 'UkkosFury' then
Change to this: Code if spell.type == 'WeaponSkill' and player.equipment.Main == "Macbain" and spell.english ~= 'Ukko\'s Fury' then
Not quite sure what you're trying to do with send command, but it looks like you'd need the shortcuts addon as well.
Bismarck.Xurion
Serveur: Bismarck
Game: FFXI
Posts: 694
By Bismarck.Xurion 2019-10-22 03:46:27
It's also majorly dependent on what other logic is in your precast function.
Can you post the whole function?
Fenrir.Jinxs
Serveur: Fenrir
Game: FFXI
Posts: 540
By Fenrir.Jinxs 2019-10-22 08:48:45
What would I have to change in the impetus script to be able to use pdt and mdt sets during impetus. If I had to.
https://github.com/Kinematics/GearSwap-Jobs/blob/master/MNK.lua
I suspect the problem is that it uses a simple equip()
is there a value I can call to change my engaged set instead of the just forcing the body slot.
I do a lot of soloing and losing -10dt and magic eva when I'm getting nuked is killing me.
By eeternal 2019-11-01 08:06:28
Ragnarok.Lockfort said: »do you have the fastfollow addon loaded?
Dude.. Thank you.. was pulling my hair out for not being able to equip midcast gear on...
Asura.Botosi
Serveur: Asura
Game: FFXI
Posts: 375
By Asura.Botosi 2019-11-01 08:31:34
Ragnarok.Lockfort said: »do you have the fastfollow addon loaded?
Dude.. Thank you.. was pulling my hair out for not being able to equip midcast gear on...
Is there any way to disable this part of FastFollow? I absolutely love FastFollow, but it messing up gearswap makes it hard to use.
By eeternal 2019-11-02 05:15:58
^
Second that.
FastFollow is great.. Wish any guru could fix it ><
Cerberus.Bongsolo
Serveur: Cerberus
Game: FFXI
Posts: 61
By Cerberus.Bongsolo 2019-11-07 19:39:08
Code
-------------------------------------------------------------------------------------------------------------------
-- 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.Footwork = buffactive.Footwork or false
state.Buff.Impetus = buffactive.Impetus or false
state.FootworkWS = M(false, 'Footwork on WS')
info.impetus_hit_count = 0
windower.raw_register_event('action', on_action_for_impetus)
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('Normal', 'SomeAcc', 'Acc', 'Fodder')
state.WeaponskillMode:options('Normal', 'SomeAcc', 'Acc', 'Fodder')
state.HybridMode:options('Normal', 'PDT', 'Counter')
state.PhysicalDefenseMode:options('PDT', 'HP')
update_combat_form()
update_melee_groups()
select_default_macro_book()
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 on use
sets.precast.JA['Hundred Fists'] = {legs="Hesychast's Hose +1"}
sets.precast.JA['Boost'] = {hands="Anchorite's Gloves +1"}
sets.precast.JA['Dodge'] = {feet="Anchorite's Gaiters +1"}
sets.precast.JA['Focus'] = {head="Anchorite's Crown +1"}
sets.precast.JA['Counterstance'] = {feet="Hesychast's Gaiters +1"}
sets.precast.JA['Footwork'] = {feet="Tantra Gaiters +2"}
sets.precast.JA['Formless Strikes'] = {body="Hesychast's Cyclas"}
sets.precast.JA['Mantra'] = {feet="Hesychast's Gaiters +1"}
sets.precast.JA['Chi Blast'] = {
head="Melee Crown +2",
body="Otronif Harness +1",hands="Hesychast's Gloves +1",
back="Tuilha Cape",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}
sets.precast.JA['Chakra'] = {ammo="Iron Gobbet",
head="Felistris Mask",
body="Anchorite's Cyclas +1",hands="Hesychast's Gloves +1",ring1="Spiral Ring",
back="Iximulew Cape",waist="Caudata Belt",legs="Qaaxo Tights",feet="Thurandaut Boots +1"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {ammo="Sonia's Plectrum",
head="Felistris Mask",
body="Otronif Harness +1",hands="Hesychast's Gloves +1",ring1="Spiral Ring",
back="Iximulew Cape",waist="Caudata Belt",legs="Qaaxo Tights",feet="Otronif Boots +1"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.Step = {waist="Chaac Belt"}
sets.precast.Flourish1 = {waist="Chaac Belt"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",head="Haruspex hat",ear2="Loquacious Earring",hands="Thaumas Gloves"}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="Ginsen",
head={ name="Adhemar Bonnet", augments={'DEX+10','AGI+10','Accuracy+15',}},
body="Ken. Samue",
hands={ name="Ryuo Tekko", augments={'STR+10','DEX+10','Accuracy+15',}},
legs={ name="Samnuha Tights", augments={'STR+8','DEX+9','"Dbl.Atk."+3','"Triple Atk."+2',}},
feet={ name="Ryuo Sune-Ate", augments={'STR+10','Attack+20','Crit. hit rate+3%',}},
neck="Fotia Gorget",
waist="Moonbow Belt",
left_ear="Mache Earring",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Ifrit Ring +1",
back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10',}},}
sets.precast.WSAcc = {ammo="Honed Tathlum",body="Manibozho Jerkin",back="Letalis Mantle",feet="Qaaxo Leggings"}
sets.precast.WSMod = {ammo="Tantra Tathlum",head="Felistris Mask",legs="Hesychast's Hose +1",feet="Daihanshi Habaki"}
sets.precast.MaxTP = {ear1="Bladeborn Earring",ear2="Steelflash Earring"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, sets.precast.WSAcc)
sets.precast.WS.Mod = set_combine(sets.precast.WS, sets.precast.WSMod)
-- Specific weaponskill sets.
-- legs={name="Quiahuiz Trousers", augments={'Phys. dmg. taken -2%','Magic dmg. taken -2%','STR+8'}}}
sets.precast.WS['Raging Fists'] = set_combine(sets.precast.WS, {})
sets.precast.WS['Howling Fist'] = set_combine(sets.precast.WS, {legs="Manibozho Brais",feet="Daihanshi Habaki"})
sets.precast.WS['Asuran Fists'] = set_combine(sets.precast.WS, {
ear1="Bladeborn Earring",ear2="Moonshade Earring",ring2="Spiral Ring",back="Buquwik Cape"})
sets.precast.WS["Ascetic's Fury"] = set_combine(sets.precast.WS, {
ammo="Tantra Tathlum",ring1="Spiral Ring",back="Buquwik Cape",feet="Qaaxo Leggings"})
sets.precast.WS["Victory Smite"] = set_combine(sets.precast.WS, {})
sets.precast.WS['Shijin Spiral'] = set_combine(sets.precast.WS, {ear1="Bladeborn Earring",ear2="Steelflash Earring",
legs="Manibozho Brais",feet="Daihanshi Habaki"})
sets.precast.WS['Dragon Kick'] = set_combine(sets.precast.WS, {feet="Daihanshi Habaki"})
sets.precast.WS['Tornado Kick'] = set_combine(sets.precast.WS, {ammo="Tantra Tathlum",ring1="Spiral Ring"})
sets.precast.WS['Spinning Attack'] = set_combine(sets.precast.WS, {
head="Felistris Mask",ear1="Bladeborn Earring",ear2="Steelflash Earring"})
sets.precast.WS["Raging Fists"].Acc = set_combine(sets.precast.WS["Raging Fists"], sets.precast.WSAcc)
sets.precast.WS["Howling Fist"].Acc = set_combine(sets.precast.WS["Howling Fist"], sets.precast.WSAcc)
sets.precast.WS["Asuran Fists"].Acc = set_combine(sets.precast.WS["Asuran Fists"], sets.precast.WSAcc)
sets.precast.WS["Ascetic's Fury"].Acc = set_combine(sets.precast.WS["Ascetic's Fury"], sets.precast.WSAcc)
sets.precast.WS["Victory Smite"].Acc = set_combine(sets.precast.WS["Victory Smite"], sets.precast.WSAcc)
sets.precast.WS["Shijin Spiral"].Acc = set_combine(sets.precast.WS["Shijin Spiral"], sets.precast.WSAcc)
sets.precast.WS["Dragon Kick"].Acc = set_combine(sets.precast.WS["Dragon Kick"], sets.precast.WSAcc)
sets.precast.WS["Tornado Kick"].Acc = set_combine(sets.precast.WS["Tornado Kick"], sets.precast.WSAcc)
sets.precast.WS["Raging Fists"].Mod = set_combine(sets.precast.WS["Raging Fists"], sets.precast.WSMod)
sets.precast.WS["Howling Fist"].Mod = set_combine(sets.precast.WS["Howling Fist"], sets.precast.WSMod)
sets.precast.WS["Asuran Fists"].Mod = set_combine(sets.precast.WS["Asuran Fists"], sets.precast.WSMod)
sets.precast.WS["Ascetic's Fury"].Mod = set_combine(sets.precast.WS["Ascetic's Fury"], sets.precast.WSMod)
sets.precast.WS["Victory Smite"].Mod = set_combine(sets.precast.WS["Victory Smite"], sets.precast.WSMod)
sets.precast.WS["Shijin Spiral"].Mod = set_combine(sets.precast.WS["Shijin Spiral"], sets.precast.WSMod)
sets.precast.WS["Dragon Kick"].Mod = set_combine(sets.precast.WS["Dragon Kick"], sets.precast.WSMod)
sets.precast.WS["Tornado Kick"].Mod = set_combine(sets.precast.WS["Tornado Kick"], sets.precast.WSMod)
sets.precast.WS['Cataclysm'] = {
head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Wayfarer Robe",hands="Otronif Gloves",ring1="Acumen Ring",ring2="Demon's Ring",
back="Toro Cape",waist="Thunder Belt",legs="Nahtirah Trousers",feet="Qaaxo Leggings"}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Whirlpool Mask",ear2="Loquacious Earring",
body="Otronif Harness +1",hands="Thaumas Gloves",
waist="Black Belt",feet="Otronif Boots +1"}
-- Specific spells
sets.midcast.Utsusemi = {
head="Whirlpool Mask",ear2="Loquacious Earring",
body="Otronif Harness +1",hands="Thaumas Gloves",
waist="Black Belt",legs="Qaaxo Tights",feet="Otronif Boots +1"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
body="Hesychast's Cyclas",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
-- Idle sets
sets.idle = {ammo="Staunch Tathlum",
head={ name="Naga Somen", augments={'HP+50','VIT+10','Evasion+20',}},
body="Hiza. Haramaki +1",
hands={ name="Herculean Gloves", augments={'Accuracy+25 Attack+25','Damage taken-2%','AGI+5','Attack+14',}},
legs={ name="Rao Haidate", augments={'Pet: HP+100','Pet: Accuracy+15','Pet: Damage taken -3%',}},
feet="Herald's Gaiters",
neck="Twilight Torque",
waist="Moonbow Belt",
left_ear="Brachyura Earring",
right_ear="Infused Earring",
left_ring="Gelatinous Ring +1",
right_ring="Defending Ring",
back="Moonbeam Cape",}
sets.idle.Town = {ammo="Staunch Tathlum",
head={ name="Naga Somen", augments={'HP+50','VIT+10','Evasion+20',}},
body="Hiza. Haramaki +1",
hands={ name="Herculean Gloves", augments={'Accuracy+25 Attack+25','Damage taken-2%','AGI+5','Attack+14',}},
legs={ name="Rao Haidate", augments={'Pet: HP+100','Pet: Accuracy+15','Pet: Damage taken -3%',}},
feet="Herald's Gaiters",
neck="Twilight Torque",
waist="Moonbow Belt",
left_ear="Brachyura Earring",
right_ear="Infused Earring",
left_ring="Gelatinous Ring +1",
right_ring="Defending Ring",
back="Moonbeam Cape",}
sets.idle.Weak = {ammo="Staunch Tathlum",
head={ name="Naga Somen", augments={'HP+50','VIT+10','Evasion+20',}},
body="Hiza. Haramaki +1",
hands={ name="Herculean Gloves", augments={'Accuracy+25 Attack+25','Damage taken-2%','AGI+5','Attack+14',}},
legs={ name="Rao Haidate", augments={'Pet: HP+100','Pet: Accuracy+15','Pet: Damage taken -3%',}},
feet="Herald's Gaiters",
neck="Twilight Torque",
waist="Moonbow Belt",
left_ear="Brachyura Earring",
right_ear="Infused Earring",
left_ring="Gelatinous Ring +1",
right_ring="Defending Ring",
back="Moonbeam Cape",}
-- Defense sets
sets.defense.PDT = {ammo="Iron Gobbet",
head="Uk'uxkaj Cap",neck="Twilight Torque",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Shadow Mantle",waist="Black Belt",legs="Qaaxo Tights",feet="Otronif Boots +1"}
sets.defense.HP = {ammo="Iron Gobbet",
head="Uk'uxkaj Cap",neck="Lavalier +1",ear1="Brutal Earring",ear2="Bloodgem Earring",
body="Hesychast's Cyclas",hands="Hesychast's Gloves +1",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Shadow Mantle",waist="Black Belt",legs="Hesychast's Hose +1",feet="Hesychast's Gaiters +1"}
sets.defense.MDT = {ammo="Demonry Stone",
head="Uk'uxkaj Cap",neck="Twilight Torque",
body="Otronif Harness +1",hands="Anchorite's Gloves +1",ring1="Defending Ring",ring2="Shadow Ring",
back="Engulfer Cape",waist="Black Belt",legs="Qaaxo Tights",feet="Daihanshi Habaki"}
sets.Kiting = {feet="Herald's Gaiters"}
sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
-- 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 sets
sets.engaged = {ammo="Ginsen",
head={ name="Adhemar Bonnet", augments={'DEX+10','AGI+10','Accuracy+15',}},
body="Ken. Samue",
hands={ name="Adhemar Wristbands", augments={'DEX+10','AGI+10','Accuracy+15',}},
legs="Malignance Tights",
feet={ name="Herculean Boots", augments={'Accuracy+29','"Triple Atk."+4','Attack+1',}},
neck="Lissome Necklace",
waist="Moonbow Belt",
left_ear="Cessance Earring",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10',}},}
sets.engaged.SomeAcc = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Hesychast's Gloves +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Anguinus Belt",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}
sets.engaged.Acc = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Hesychast's Gloves +1",ring1="Patricius Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Anguinus Belt",legs="Manibozho Brais",feet="Qaaxo Leggings"}
sets.engaged.Mod = {ammo="Thew Bomblet",
head="Felistris Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Anchorite's Gloves +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}
-- Defensive melee hybrid sets
sets.engaged.PDT = {ammo="Thew Bomblet",
head="Uk'uxkaj Cap",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Patricius Ring",ring2="Epona's Ring",
back="Iximulew Cape",waist="Windbuffet Belt",legs="Hesychast's Hose +1",feet="Otronif Boots +1"}
sets.engaged.SomeAcc.PDT = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Hesychast's Gloves +1",ring1="Patricius Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Anguinus Belt",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}
sets.engaged.Acc.PDT = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Patricius Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Anguinus Belt",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
sets.engaged.Counter = {ammo="Thew Bomblet",
head="Whirlpool Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="K'ayres Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt",legs="Anchorite's Hose",feet="Otronif Boots +1"}
sets.engaged.Acc.Counter = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Hesychast's Gloves +1",ring1="Patricius Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Anguinus Belt",legs="Anchorite's Hose",feet="Otronif Boots +1"}
-- Hundred Fists/Impetus melee set mods
sets.engaged.HF = set_combine(sets.engaged)
sets.engaged.HF.Impetus = set_combine(sets.engaged, {body="Tantra Cyclas +2"})
sets.engaged.Acc.HF = set_combine(sets.engaged.Acc)
sets.engaged.Acc.HF.Impetus = set_combine(sets.engaged.Acc, {body="Tantra Cyclas +2"})
sets.engaged.Counter.HF = set_combine(sets.engaged.Counter)
sets.engaged.Counter.HF.Impetus = set_combine(sets.engaged.Counter, {body="Tantra Cyclas +2"})
sets.engaged.Acc.Counter.HF = set_combine(sets.engaged.Acc.Counter)
sets.engaged.Acc.Counter.HF.Impetus = set_combine(sets.engaged.Acc.Counter, {body="Tantra Cyclas +2"})
-- Footwork combat form
sets.engaged.Footwork = {ammo="Thew Bomblet",
head="Felistris Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Hesychast's Gloves +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}
sets.engaged.Footwork.Acc = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Hesychast's Gloves +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Anguinus Belt",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}
-- Quick sets for post-precast adjustments, listed here so that the gear can be Validated.
sets.impetus_body = {body="Bhikku cyclas +1"}
sets.footwork_kick_feet = {feet="Anchorite's Gaiters +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
-- Don't gearswap for weaponskills when Defense is on.
if spell.type == 'WeaponSkill' and state.DefenseMode.current ~= 'None' then
eventArgs.handled = true
end
end
-- Run after the general precast() is done.
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' and state.DefenseMode.current ~= 'None' then
if state.Buff.Impetus and (spell.english == "Ascetic's Fury" or spell.english == "Victory Smite") then
-- Need 6 hits at capped dDex, or 9 hits if dDex is uncapped, for Tantra to tie or win.
if (state.OffenseMode.current == 'Fodder' and info.impetus_hit_count > 5) or (info.impetus_hit_count > 8) then
equip(sets.impetus_body)
end
elseif state.Buff.Footwork and (spell.english == "Dragon's Kick" or spell.english == "Tornado Kick") then
equip(sets.footwork_kick_feet)
end
-- Replace Moonshade Earring if we're at cap TP
if player.tp == 3000 then
equip(sets.precast.MaxTP)
end
end
end
function job_aftercast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' and not spell.interrupted and state.FootworkWS and state.Buff.Footwork then
send_command('cancel Footwork')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
-- Set Footwork as combat form any time it's active and Hundred Fists is not.
if buff == 'Footwork' and gain and not buffactive['hundred fists'] then
state.CombatForm:set('Footwork')
elseif buff == "Hundred Fists" and not gain and buffactive.footwork then
state.CombatForm:set('Footwork')
else
state.CombatForm:reset()
end
-- Hundred Fists and Impetus modify the custom melee groups
if buff == "Hundred Fists" or buff == "Impetus" then
classes.CustomMeleeGroups:clear()
if (buff == "Hundred Fists" and gain) or buffactive['hundred fists'] then
classes.CustomMeleeGroups:append('HF')
end
if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end
end
-- Update gear if any of the above changed
if buff == "Hundred Fists" or buff == "Impetus" or buff == "Footwork" then
handle_equipping_gear(player.status)
end
end
Some reason it won't equip impetus body maybe a mote issue? 4th lua I tried.
Bismarck.Xurion
Serveur: Bismarck
Game: FFXI
Posts: 694
By Bismarck.Xurion 2019-11-08 02:20:53
Cerberus.Bongsolo said: »Some reason it won't equip impetus body maybe a mote issue? 4th lua I tried. Is info.impetus_hit_count automatically tracked by motes? If not, there's no logic to increase this count and therefore it is always zero.
Line 22 also has an event but the function is not defined.
If this is counting up due to mote magic, then I suggest a simple debug in the job_post_precast function with a print:
Code
print(spell.type, state.DefenseMode.current, state.Buff.Impetus, spell.english, state.OffenseMode.current, info.impetus_hit_count)
This should tell you which variable is not meeting the conditions in the if statements.
Bismarck.Ready
Serveur: Bismarck
Game: FFXI
Posts: 1
By Bismarck.Ready 2019-11-15 21:45:55
Have been away from game for a couplemonths. Logged in and getting a Lua runtime error: gearswap/statistics.lua.102: attempt to index field 'english' (a nil value) error coming up. I'm clueless, tried reloading and updating, not sure what the error means or how to fix it. :D
Bismarck.Xurion
Serveur: Bismarck
Game: FFXI
Posts: 694
By Bismarck.Xurion 2019-11-16 14:53:27
Have been away from game for a couplemonths. Logged in and getting a Lua runtime error: gearswap/statistics.lua.102: attempt to index field 'english' (a nil value) error coming up. I'm clueless, tried reloading and updating, not sure what the error means or how to fix it. :D Welcome back fellow Bismarckian! I checked the file in question and you should not be getting that error if we have the same file, so to begin with I'm assuming yours has been corrupted somehow.
When you say you tried updating, what did you do?
First suggestion: Get a new copy of statics.lua from the Windower Github https://raw.githubusercontent.com/Windower/Lua/dev/addons/GearSwap/statics.lua
By Heck 2019-11-19 12:28:38
Hey guys, I am currently using SAM Lua but for some reason I can't get my magical ws (Tachi: Jinpu) to swap to my ACC set when I toggle. Can't seem to figure out whats causing it, anyone able to help?
Serveur: Cerberus
Game: FFXI
Posts: 1786
By Cerberus.Shadowmeld 2019-11-19 13:24:32
Hey guys, I am currently using SAM Lua but for some reason I can't get my magical ws (Tachi: Jinpu) to swap to my ACC set when I toggle. Can't seem to figure out whats causing it, anyone able to help?
try creating a set sets.precast.WS.magic.Acc
Just looking for someone to explain this addon a bit for me. It looks like it is an alternative to Spellcast.
Is it going to be replacing Spellcast? In which ways is it better or worse. I don't know any programming but I've slowly learned more and more about spellcast and the 'language' used in gearswap is confusing to me.
It says it uses packets so it potentially could be more detectable? but does that also eliminate any lag that spellcast may encounter?
I plan on redoing my PUP xml to include pet casting sets thanks to the new addon petschool. I'm just not sure if it's worth it to just wait until gearswap gets more popular or to go ahead and do it in spellcast.
If anyone could give me more info I'd greatly appreciate it.
|
|