|
|
Gearswap Support Thread
Ragnarok.Liteholt
Serveur: Ragnarok
Game: FFXI
Posts: 74
By Ragnarok.Liteholt 2025-11-28 08:25:43
If you look at some of the other jobs, down at the bottom Sel adds in buff state modifiers.
So if you wanted to have certain pieces of gear equipped when Valiance or Vallation are up, you would stick that in the sets.buff.Valiance and sets.buff.Vallation lines down at the bottom, I expect.
By Dodik 2025-11-28 09:45:04
sets.buff.whatever is for gear that should remain equipped for the duration of the buff. Don't put fastcast gear in those sets.
Serveur: Asura
Game: FFXI
Posts: 98
By Asura.Selindrile 2025-12-03 04:37:49
Just happened to be looking around on here, and for the record, I didn't have any code specifically for this, I just added it, and I used this name for the set: sets.precast.FC.Inspiration = {}
While technically it could fit well enough in either FC sets or Buff sets, I felt it more fitting in this case next to the normal precast set, as people are likely to set_combine off the base FC set for Inspiration, .buff sets are generally (though not always) usually focused on a single piece of gear or maybe two, that affect a buff, whereas in this case, with all the extra FC from Inspiration one might have, one might want to swap around their entire set.
@Dodik "buff" sets aren't necessarily things that are equipped "for the duration of the buff", they are in some cases, but each sets.buff.whatever follows it's own rules as buff-affecting gear is WILDLY varied, for example:
sets.buff['Burst Affinity'] - Blu nuke midcast
sets.buff['Chain Affinity'] - Blu physical midcast
sets.buff.Diffusion - Blu buff midcast
sets.buff.Doom - all times when doomed
sets.buff.Entrust - casting a indi spell on another player
sets.buff.Impetus - meleeing or using a crit ws
Perhaps I should've done it differently, perhaps sets.buff shouldn't exist at all and they should each be part of their respective aligned actions, but, would be an awkward thing to change now at this point.
[+]
Quetzalcoatl.Lews
Serveur: Quetzalcoatl
Game: FFXI
Posts: 15
By Quetzalcoatl.Lews 2025-12-03 08:43:00
Seeing Selindrile post (thank you for your hard work on the gearswap file!) reminded me of a question I have had for a while. Does anyone know how to override the weapon states to equip Diamond Aspis for warrior self JAs? I have not been able to figure it out. Ideally, if using Chango or any other combo, it would switch to one-hand weapon and the diamond aspis for job abilities then switch back to previous state - thank you!
[+]
Serveur: Asura
Game: FFXI
Posts: 98
By Asura.Selindrile 2025-12-05 14:45:54
Quetzalcoatl.Lews said: »Seeing Selindrile post (thank you for your hard work on the gearswap file!) reminded me of a question I have had for a while. Does anyone know how to override the weapon states to equip Diamond Aspis for warrior self JAs? I have not been able to figure it out. Ideally, if using Chango or any other combo, it would switch to one-hand weapon and the diamond aspis for job abilities then switch back to previous state - thank you!
Assuming with your statement that you use my GS, it can be handled a few ways, I haven't added any handling myself because I've been dithering over it all this time.
Assuming you don't have weapons in locations where you wouldn't want them to swap in this situation (precast.JA sets without buffs, precast.FC sets) you can just use state.UnlockWeapons.value to swap weapons freely during JA and still have the Weapon set of your choice equipped during idle and engaged.
If you -DO- have weapons in those sets, Tomahawk, some fastcast Weapon for Utsusemi, Max Acc weapon on Dancer steps, this gets a bit complicated in that we'd only want to swap out weapons for a JA that gives buffs, and there are a lot of them, along with a lot that don't, and I don't have a clean way to do a check for "Does this JA produce a buff." and I don't really want a giant entry in the mappings file for this one situation, actually while writing this I just remembered that the resources file tracks which buff JA's apply, and I can use that, though I'd need to either make an exception for 1hr abilities. I'll try to do this tonight, and it will likely be called AspisMode.
Also, if you want quick responses to anything about my GS, myself and many members of my community are happy to help with GS modifications or inquiries at: https://discord.gg/ug6xtvQ
By Horovivi 2025-12-05 20:46:26
Can anyone help me with a code that will auto change my engaged gear sets from single wield to dual wield and vice versa? The lua will change the gear sets but only if I disengage, reload gearswap and reengage. So if I’am dual wielding and mid fight want to equip a shield it make’s the appropriate gear changes. It’s for my Bst lua.
Serveur: Asura
Game: FFXI
Posts: 98
By Asura.Selindrile 2025-12-08 07:23:59
Can anyone help me with a code that will auto change my engaged gear sets from single wield to dual wield and vice versa? The lua will change the gear sets but only if I disengage, reload gearswap and reengage. So if I’am dual wielding and mid fight want to equip a shield it make’s the appropriate gear changes. It’s for my Bst lua.
For this kindof thing there's a lot of ways to approach it, the easiest thing would be for us to see your lua so we know what to change. If you want faster assistance the Windower discord has a gearswap-support channel.
Ragnarok.Lancextrm
Serveur: Ragnarok
Game: FFXI
Posts: 8
By Ragnarok.Lancextrm 2025-12-19 12:51:16
Hello, I just got back playing the game and i'm using my old gear swap data, seems like every time I cast a spell it double casts it and doesn't swap right. says in the log while casting .."Unable to cast spells at this time. how do I fix this?
Serveur: Fenrir
Game: FFXI
Posts: 383
By Fenrir.Brimstonefox 2025-12-19 15:46:11
You could start by posting your gearswap, seems like something would be triggered twice by the same event, so here's probably some poorly nested code or a duplicate line somewhere.
Ragnarok.Lancextrm
Serveur: Ragnarok
Game: FFXI
Posts: 8
By Ragnarok.Lancextrm 2025-12-19 22:19:05
Seems to happen to all my gear swap data on all my 3 characters .I'll post my bard gs first and see.
Code include('organizer-lib')
function get_sets()
organizer_items = {}
AccIndex = 1
-- on BRD this is melee acc, not macc
AccArray = {"LowACC","MidACC","HighACC"}
timer_reg = {}
pianissimo_cycle = false
Armor = 'None'
Kiting = 'ON'
Daurdabla = 'OFF' -- Set Default Daurdabla ON or OFF Here --
Capa = 'OFF' -- Sets Capacity Point+ Mantle --
maxduration = 'OFF' -- This is debuff max duration (lose a bunch of macc)
TH = 'OFF' -- Set Default Full TH ON or OFF Here --
target_distance = 5 -- Set Default Distance Here --
dyna = 'OFF'
-- Daurdabla Trigger Songs --
DaurdSongs = T{'Fowl Aubade', 'Shining Fantasia','Herb Pastoral','Goblin Gavotte', 'Gold Capriccio', 'Chocobo Mazurka', 'Raptor Mazurka'}
Duration_buffs = S{'Haste', 'Refresh', 'Flurry',
'Firestorm','Sandstorm', 'Rainstorm', 'Windstorm', 'Hailstorm', 'Thunderstorm', 'Aurorastorm', 'Voidstorm'}
sets.Dyna = {}
-- Idle Sets --
sets.Idle = {main="Sangoma",
sub="Genmei Shield",
head="Nyame Helm",
body="Nyame Mail",
hands="Nyame Gauntlets",
legs="Assid. Pants +1",
feet={ name="Chironic Slippers", augments={'Accuracy+8','Accuracy+7 Attack+7','"Refresh"+1',}},
neck="Twilight Torque",
waist="Gishdubar Sash",
left_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
right_ear="Ethereal Earring",
left_ring="Defending Ring",
right_ring="Vocane ring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10','Damage taken-5%',}},
}
sets.Resting = set_combine(sets.Idle,{})
-- PDT Set --
sets.PDT = {main="Sangoma",
sub="Genmei Shield",
head="Nyame Helm",
body="Nyame Mail",
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Twilight Torque",
waist="Gishdubar Sash",
left_ear="Genmei Earring",
right_ear="Ethereal Earring",
left_ring="Defending Ring",
right_ring="Vocane ring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10','Damage taken-5%',}},}
sets.MDT = set_combine(sets.PDT, {})
sets.TH = {}
sets.Precast = {}
-- Song Precast Set --
sets.Precast.Song = {main={ name="Kali", augments={'Mag. Acc.+15','String instrument skill +10','Wind instrument skill +10',}},
sub="Ammurapi Shield",
head="Fili calot +2",
body="Inyanga Jubbah +2",
feet={ name="Bihu Slippers +3", augments={'Enhances "Nightingale" effect',}},
waist="Embla sash",
neck="Voltsurge Torque",
left_ear="Loquac. Earring",
right_ear="Aoidos's earring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10','Damage taken-5%',}},}
-- Fastcast Set --
sets.Precast.FastCast = {main={ name="Kali", augments={'Mag. Acc.+15','String instrument skill +10','Wind instrument skill +10',}},
sub="Ammurapi Shield",
body="Inyanga Jubbah +2",
neck="Voltsurge Torque",
waist="Embla sash",
left_ear="Loquac. Earring",
left_ring="Lebeche Ring",
back="Perimede Cape",
}
-- Cure Precast Set --
sets.Precast.Cure = set_combine(sets.Precast.FastCast,{back="Pahtli Cape"})
-- Midcast Base Set --
sets.Midcast = {}
-- Song Debuff Set --
sets.Midcast.WindDebuff = {main="Carnwenhan",
sub="Ammurapi Shield",
Range="Gjallarhorn",
head="Fili calot +2",
body="Mousai manteel +1",
hands="Fili Manchettes +2",
legs="Inyanga Shalwar +2",
feet="Brioso Slippers +3",
neck="Moonbow Whistle +1",
waist="Kobo Obi",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10','Damage taken-5%',}},}
sets.Midcast.WindDebuff.Duration = set_combine(sets.Midcast.WindDebuff, {main="Carnwenhan",
sub="Ammurapi Shield",
Range="Gjallarhorn",
head="Fili calot +2",
body="Mousai manteel +1",
hands="Fili Manchettes +2",
legs="Inyanga Shalwar +2",
feet="Brioso Slippers +3",
neck="Moonbow Whistle +1",
waist="Kobo Obi",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10','Damage taken-5%',}},})
-- Song Buff Set --
sets.Midcast.WindBuff = {main="Carnwenhan",
sub="Ammurapi Shield",
Range="Gjallarhorn",
head="Fili calot +2",
body="Fili Hongreline +2",
hands="Fili Manchettes +2",
legs="Inyanga Shalwar +2",
feet="Brioso Slippers +3",
neck="Moonbow Whistle +1",
waist="Kobo Obi",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10','Damage taken-5%',}},}
sets.Midcast.March = {hands="Fili Manchettes +2"}
sets.Midcast.Minuet = {body="Fili Hongreline +2"}
sets.Midcast.Madrigal = {head="Fili calot +2", back="Intarabus's Cape"}
sets.Midcast.Etude = {head="Mousai turban +1"}
sets.Midcast.Ballad = {legs="Fili Rhingrave +2"}
sets.Midcast.Scherzo = {feet="Fili Cothurnes +2"}
sets.Midcast.Carol = {hands="Mousai gages +1"}
sets.Midcast.Minne = {legs="Mousai seraweels +1"}
sets.Midcast.Mambo = {feet="Mousai crackows +1"}
sets.Midcast.Paeon = {head="Brioso roundlet +3"}
sets.Midcast.Finale = {}
sets.Midcast.Lullaby = {hands="Brioso cuffs +3"}
sets.Midcast.Prelude = {back="Intarabus's Cape"}
-- Cure Set --
sets.Midcast.Cure = {main="Sangoma",
sub="Genmei Shield",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Vrikodara Jupon",
hands="Inyan. Dastanas +2",
legs="Gyve Trousers",
feet={ name="Chironic Slippers", augments={'Accuracy+8','Accuracy+7 Attack+7','"Refresh"+1',}},
neck="Nodens Gorget",
waist="Hachirin-no-Obi",
left_ear="Gifted Earring",
right_ear="Loquac. Earring",
left_ring="Lebeche Ring",
right_ring="Sirona's Ring",
back="Solemnity Cape",}
-- Curaga Set --
sets.Midcast.Curaga = sets.Midcast.Cure
-- Haste Set --
sets.Midcast.Haste = set_combine(sets.Precast.FastCast,{waist="Embla sash",})
-- Cursna Set --
sets.Midcast.Cursna = set_combine(sets.Midcast.Haste,{})
sets.Midcast['Enhancing Magic'] = {waist="Embla sash",}
sets.Midcast['Enhancing Magic'].Duration = set_combine(sets.Midcast['Enhancing Magic'], {waist="Embla sash",})
sets.Midcast['Enfeebling Magic'] = sets.Midcast.WindDebuff
-- JA Sets --
sets.JA = {}
sets.JA.Nightingale = {feet="Bihu Slippers +3"}
sets.JA.Troubadour = {body="Bihu justaucorps +3"}
sets.JA["Soul Voice"] = {legs="Bihu Cannions +3"}
-- Waltz --
sets.Waltz = {}
-- Melee Sets --
sets.Melee={}
sets.WS={}
sets.Melee = {}
--sets.Melee.MidACC = set_combine(sets.Melee,{
--left_ear="Zennaroi Earring",
--left_ring="Chirich Ring",
--right_ring="Chirich Ring",})
--sets.Melee.HighACC = set_combine(sets.Melee.MidACC,{})>
-- WS Base Set --
--sets.WS = sets.Melee
sets.WS.Exenterator = sets.WS
sets.WS.Exenterator.MidACC = set_combine(sets.WS.Exenterator,{})
sets.WS.Exenterator.HighACC = set_combine(sets.WS.Exenterator.MidACC,{})
sets.WS.Evisceration = sets.WS
sets.WS.Evisceration.MidACC = set_combine(sets.WS.Evisceration,{})
sets.WS.Evisceration.HighACC = set_combine(sets.WS.Evisceration.MidACC,{})
sets.WS["Mercy Stroke"] = sets.WS
sets.WS["Mercy Stroke"].MidACC = set_combine(sets.WS["Mercy Stroke"],{})
sets.WS["Mercy Stroke"].HighACC = set_combine(sets.WS["Mercy Stroke"].MidACC,{})
sets.WS["Rudra's Storm"] = sets.WS
sets.WS["Rudra's Storm"].MidACC = set_combine(sets.WS["Rudra's Storm"],{})
sets.WS["Rudra's Storm"].HighACC = set_combine(sets.WS["Rudra's Storm"].MidACC,{})
sets.WS["Mordant Rime"] = {main="Carnwenhan",
sub="Demers. Degen +1",
range="Gjallarhorn",
head="Brioso Roundlet +3",
body={ name="Bihu Jstcorps. +3", augments={'Enhances "Troubadour" effect',}},
hands="Brioso Cuffs +3",
legs={ name="Bihu Cannions +3", augments={'Enhances "Soul Voice" effect',}},
feet={ name="Bihu Slippers +3", augments={'Enhances "Nightingale" effect',}},
neck="Mnbw. Whistle +1",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear="Brutal Earring",
left_ring="Petrov Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10','Damage taken-5%',}},
}
-- Lock Capa Mantle --
sets.Capa = {
back="Mecisto. Mantle"}
end
function pretarget(spell,action)
end
function precast(spell,action)
if spell.action_type == 'Magic' then
if buffactive.silence or spell.target.distance > 16+target_distance then -- Cancel Magic or Ninjutsu or BardSong If You Are Silenced or Out of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
return
else
if spell.english == "Honor March" then
equip(set_combine(sets.Precast.Song,{range="Marsyas"}))
elseif spell.type == 'BardSong' then
equip(sets.Precast.Song)
elseif string.find(spell.english,'Cur') and spell.english ~= "Cursna" then
equip(sets.Precast.Cure)
elseif string.find(spell.english,'Utsusemi') then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then
cancel_spell()
add_to_chat(123, spell.english .. ' Canceled: [3+ Images]')
return
else
equip(sets.Precast.FastCast)
end
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
equip(equipSet)
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
elseif spell.type == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == 'Ninjutsu' then
equipSet = sets.Midcast
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
elseif string.find(spell.english,'Cure') then
equipSet = equipSet.Cure
elseif string.find(spell.english,'Cura') then
equipSet = equipSet.Curaga
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 2.8;cancel stoneskin')
end
equipSet = equipSet.Stoneskin
elseif spell.english == "Sneak" then
if spell.target.name == player.name and buffactive['Sneak'] then
send_command('cancel sneak')
end
equipSet = equipSet.Haste
elseif string.find(spell.english,'Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
send_command('@wait 1.7;cancel Copy Image*')
end
equipSet = equipSet.Haste
elseif spell.english == 'Monomi: Ichi' then
if buffactive['Sneak'] then
send_command('@wait 1.7;cancel sneak')
end
equipSet = equipSet.Haste
end
if Duration_buffs:contains(spell.english) then
equipSet = sets.Midcast['Enhancing Magic'].Duration
end
elseif spell.type == 'BardSong' then
equip_song_gear(spell)
end
equip(equipSet)
if TH == 'ON' then
equip(sets.TH)
end
end
function aftercast(spell,action)
status_change(player.status)
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
if Kiting == 'ON' then
equip({feet="Fili Cothurnes +2"})
end
elseif Armor == 'MDT' then
equip(sets.MDT)
if Kiting == 'ON' then
equip({feet="Fili Cothurnes +2"})
end
elseif new == 'Engaged' then
equipSet = sets.Melee
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
equip(equipSet)
elseif new == 'Idle' then
equip(sets.Idle)
if Kiting == 'ON' then
equip({feet="Fili Cothurnes +2"})
end
elseif new == 'Resting' then
equip(sets.Resting)
end
if Capa == 'ON' then
equip(sets.Capa)
end
if TH == 'ON' then
equip(sets.TH)
end
if dyna == 'ON' then
equip(sets.Dyna)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == 'weakness' then -- Weakness Timer --
if gain then
send_command('timers create "Weakness" 300 up')
else
send_command('timers delete "Weakness"')
end
end
if not midaction() then
status_change(player.status)
end
end
-- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
function self_command(command)
if command == 'March2' then
send_command('input /ma "Victory March" <me>')
add_to_chat(158,'Melee Speed II: [Victory March]')
elseif command == 'March1' then
send_command('input /ma "Advancing March" <me>')
add_to_chat(158,'Melee Speed: [Advancing March]')
elseif command == 'Minuet5' then
send_command('input /ma "Valor Minuet V" <me>')
add_to_chat(158,'Melee Attack: [Valor Minuet V]')
elseif command == 'Minuet4' then
send_command('input /ma "Valor Minuet IV" <me>')
add_to_chat(158,'Melee Attack: [Valor Minuet IV]')
elseif command == 'Prelude1' then
send_command('input /ma "Hunter\'s Prelude" <me>')
add_to_chat(158,'Ranged Accuracy: [Hunter\'s Prelude]')
elseif command == 'Prelude2' then
send_command('input /ma "Archer\'s Prelude" <me>')
add_to_chat(158,'Ranged Accuracy: [Archer\'s Prelude]')
elseif command == 'Madrigal2' then
send_command('input /ma "Blade Madrigal" <me>')
add_to_chat(158,'Melee Accuracy II: [Blade Madrigal]')
elseif command == 'Madrigal1' then
send_command('input /ma "Sword Madrigal" <me>')
add_to_chat(158,'Melee Accuracy: [Sword Madrigal]')
elseif command == 'Minuet3' then
send_command('input /ma "Valor Minuet III" <me>')
add_to_chat(158,'Melee Attack: [Valor Minuet III]')
elseif command == 'Mazurka' then
send_command('input /ma "Chocobo Mazurka" <me>')
add_to_chat(158,'~~~ Mazurka ~~~')
elseif command == 'Capacity' then -- Capa Back Toggle --
if Capa == 'ON' then
Capa = 'OFF'
add_to_chat(123,'Capacity Mantle: [Unlocked]')
else
Capa = 'ON'
add_to_chat(158,'Capacity Mantle: [Locked]')
end
status_change(player.status)
elseif command == 'PDT' then
if Armor == 'PDT' then -- PDT Toggle --
Armor = 'None'
add_to_chat(123,'PDT Set: [Unlocked]')
else
Armor = 'PDT'
add_to_chat(158,'PDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'MDT' then
if Armor == 'MDT' then -- MDT Toggle --
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'Distance' then -- Distance Toggle --
if player.target.distance then
target_distance = math.floor(player.target.distance*10)/10
add_to_chat(158,'Distance: '..target_distance)
else
add_to_chat(123,'No Target Selected')
end
elseif command == 'Daur' or command == 'Daurdabla' then -- Daurdabla Toggle --
if Daurdabla == 'ON' then
Daurdabla = 'OFF'
add_to_chat(123,'Daurdabla: [OFF]')
else
Daurdabla = 'ON'
add_to_chat(158,'Daurdabla: [ON]')
end
status_change(player.status)
elseif command == 'TH' then -- Full TH Set Toggle --
if TH == 'ON' then
TH = 'OFF'
add_to_chat(123,'Full TH Set: [Unlocked]')
else
TH = 'ON'
add_to_chat(158,'Full TH Set: [Locked]')
end
status_change(player.status)
elseif command == 'duration' then
if maxduration == 'ON' then
maxduration = 'OFF'
add_to_chat(123, 'Max debuff duration: [OFF]')
else
maxduration = 'ON'
add_to_chat(158, 'Max debuff duration: [ON]')
end
elseif command == 'Acc' then -- Accuracy Level Toggle --
AccIndex = (AccIndex % #AccArray) + 1
status_change(player.status)
add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
elseif command == 'Update' then -- Auto Update Gear Toggle --
status_change(player.status)
add_to_chat(158,'Auto Update Gear')
elseif command == "Dyna" then
dyna = 'ON'
add_to_chat(158,'Dyna neck locked')
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function equip_song_gear(spell)
if DaurdSongs:contains(spell.english) then
equip(set_combine(sets.Precast.Song,{range="Daurdabla"}))
add_to_chat(158,'Daurdabla: [OFF]')
else
if spell.target.type == 'MONSTER' then
if maxduration == 'ON' then
equip(sets.Midcast.WindDebuff.Duration)
if string.find(spell.english,'Lullaby') then equip(sets.Midcast.Lullaby) end
if string.find(spell.english,'Horde Lullaby') then equip({range="Daurdabla"}) end
else
equip(sets.Midcast.WindDebuff)
if string.find(spell.english,'Finale') then equip(sets.Midcast.Finale) end
if string.find(spell.english,'Foe Lullaby') then equip(sets.Midcast.Lullaby) end
if string.find(spell.english,'Horde Lullaby') then equip(set_combine(sets.Midcast.Lullaby, {range="Daurdabla"})) end
end
else
equip(sets.Midcast.WindBuff)
if string.find(spell.english,'March') then
equip(sets.Midcast.March)
if spell.english == "Honor March" then
equip({range="Marsyas"})
end
end
if string.find(spell.english,'Minuet') then equip(sets.Midcast.Minuet) end
if string.find(spell.english,'Madrigal') then equip(sets.Midcast.Madrigal) end
if string.find(spell.english,'Ballad') then equip(sets.Midcast.Ballad) end
if string.find(spell.english,'Scherzo') then equip(sets.Midcast.Scherzo) end
if string.find(spell.english,'Mazurka') then equip(sets.Midcast.Mazurka) end
if string.find(spell.english,'Etude') then equip(sets.Midcast.Etude) end
if string.find(spell.english,'Minne') then equip(sets.Midcast.Minne) end
if string.find(spell.english,'Carol') then equip(sets.Midcast.Carol) end
if string.find(spell.english,'Mambo') then equip(sets.Midcast.Mambo) end
if string.find(spell.english,'Paeon') then equip(sets.Midcast.Paeon) end
end
if Daurdabla == 'ON' then
equip({range="Daurdabla"})
end
end
end
function refine_waltz(spell,action)
if spell.type ~= 'Waltz' then
return
end
if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" then
return
end
local newWaltz = spell.english
local waltzID
local missingHP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
if missingHP ~= nil then
if player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
add_to_chat(123,'Full HP!')
cancel_spell()
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
return
end
end
local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50}
local tpCost = waltzTPCost[newWaltz]
local downgrade
if player.tp < tpCost then
if player.tp < 20 then
add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
cancel_spell()
return
elseif player.tp < 35 then
newWaltz = 'Curing Waltz'
elseif player.tp < 50 then
newWaltz = 'Curing Waltz II'
end
downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
if downgrade then
add_to_chat(8, downgrade)
end
cancel_spell()
return
end
if missingHP > 0 then
add_to_chat(8,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
function find_player_in_alliance(name)
for i,v in ipairs(alliance) do
for k,p in ipairs(v) do
if p.name == name then
return p
end
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(1, 4)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 4)
elseif player.sub_job == 'WHM' then
set_macro_page(1, 4)
else
set_macro_page(1, 4)
end
end
Bismarck.Radec
Serveur: Bismarck
Game: FFXI
Posts: 176
By Bismarck.Radec 2025-12-20 07:39:18
Long shot, do you have both of Shortcuts and Rolltracker loaded?
Intermittently I'd have that issue, but with emotes doubling up (/hurray, etc) possibly depending on which addon loaded first.
Try unloading rolltracker. If the doubling stops, play with the load order for those two addons, or anything else you have loaded that uses the "outgoing text" event.
Ragnarok.Lancextrm
Serveur: Ragnarok
Game: FFXI
Posts: 8
By Ragnarok.Lancextrm 2025-12-20 09:33:44
I just tried, didn't work, even reloaded gear swap
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.
|
|