Asking for my brother, so some of the details may be off, but he was THF/NIN when he cast Utsusemi, it started trying to spam the spell. He's logged out, shut down, deleted and re-downloaded GearSwap and it still happens. He changed to MNK/NIN walked out of his Mog House and it kept trying to spam it, any idea what could cause that?
Asking for my brother, so some of the details may be off, but he was THF/NIN when he cast Utsusemi, it started trying to spam the spell. He's logged out, shut down, deleted and re-downloaded GearSwap and it still happens. He changed to MNK/NIN walked out of his Mog House and it kept trying to spam it, any idea what could cause that?
How do you set it up so you can toggle your gearsets with a controller? Thinking key binds, and asking for someone else - personally I use keyboard only, but it seems very inconvenient to use F9 etc if you play using controller.
Apologies if this has been asked and answered before (searched and couldn't find anything).
How do you set it up so you can toggle your gearsets with a controller? Thinking key binds, and asking for someone else - personally I use keyboard only, but it seems very inconvenient to use F9 etc if you play using controller.
Apologies if this has been asked and answered before (searched and couldn't find anything).
If you use Mote's includes for toggles, this is the general syntax for a macro.
How do you set it up so you can toggle your gearsets with a controller? Thinking key binds, and asking for someone else - personally I use keyboard only, but it seems very inconvenient to use F9 etc if you play using controller.
Apologies if this has been asked and answered before (searched and couldn't find anything).
If you use Mote's includes for toggles, this is the general syntax for a macro.
function get_sets()
sets = {}
sets.aftercast_Idle_noSub = {main="Owleyes",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat",neck="Twilight Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Bifrost Ring",ring2="Dark Ring",
back="Shadow Mantle",waist="Korin Obi",legs="Nares Trews",feet="Serpentes Sabots"}
sets.aftercast_Idle_Sub = {main="Owleyes",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat",neck="Twilight Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Bifrost Ring",ring2="Dark Ring",
back="Shadow Mantle",waist="Korin Obi",legs="Nares Trews",feet="Serpentes Sabots"}
sets.aftercast_IdleStun = {main="Apamajas II",sub="Mephitis Grip",ammo="Inacantor Stone",
head="Nahtirah Hat",neck="Eddy Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Hedera Cotehardie",hands="Gendewitha Gages",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Swith Cape",waist="Goading Belt",legs="Artsieq Hose",feet="Peda. Loafers"}
sets.aftercast_IdleNight = {main="Owleyes",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat",neck="Twilight Torque",ear1="Merman's Earring",ear2="Coral Earring",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Dark ring",ring2="Patricius Ring",
back="Cheviot Cape",waist="Siegel Sash",legs="Nares Trews",feet="Theo. Duckbills +1"}
sets.aftercast_Idle119 = {main="Terra's Staff",ammo="Incantor Stone",
head="Gendewitha Caubeen",neck="Twilight Torque",ear1="Merman's Earring",ear2="Coral Earring",
body="Hagondes Coat",hands="Gendewitha Gages",ring1="Dark ring",ring2="Patricius Ring",
back="Cheviot Cape",waist="Siegel Sash",legs="Artsieq Hose",feet="Gendewitha Galoshes"}
sets.aftercast_IdleDay = {main="Owleyes",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat",neck="Twilight Torque",ear1="Merman's Earring",ear2="Coral Earring",
body="Heka's Kalasiris",hands="Lurid Mitts",ring1="Dark ring",ring2="Patricius Ring",
back="Cheviot Cape",waist="Siegel Sash",legs="Nares Trews",feet="Serpentes Sabots"}
sets.aftercast_Move = {main="Owleyes",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat",neck="Twilight Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Bifrost Ring",ring2="Dark Ring",
back="Shadow Mantle",waist="Korin Obi",legs="Nares Trews",feet="Desert boots"}
sets.aftercast_Idle = sets.aftercast_Idle_noSub
sets.precast_FastCast = {ammo="Incantor Stone",head="Nahtirah Hat",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages",back="Swith Cape",legs="Artseiq hose",feet="Peda. Loafers"}
sets.Resting = {main="Chatoyant Staff",sub="Mephitis Grip",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Nares Cuffs",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Shadow Mantle",waist="Korin Obi",legs="Nares Trews",feet="Chelona Boots"}
--MAB Sets--
sets.midcast_ElementalMagic = {}
sets.midcast_ElementalMagic.index = {'Standard','Accuracy'}
midcast_ElementalMagic_ind = 1
sets.midcast_ElementalMagic.Standard = {
main={ name="Lehbrailg +2", augments={'DMG:+1','Mag. Acc.+13',}},
sub="Mephitis Grip",
ammo="Savant's Treatise",
head={ name="Hagondes Hat", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+27',}},
body={ name="Hagondes Coat", augments={'Phys. dmg. taken -1%','"Mag.Atk.Bns."+18',}},
hands={ name="Hagondes Cuffs +1", augments={'Phys. dmg. taken -1%','"Mag.Atk.Bns."+11',}},
legs={ name="Hagondes Pants +1", augments={'Phys. dmg. taken -1%','"Mag.Atk.Bns."+16',}},
feet={ name="Hag. Sabots +1", augments={'Phys. dmg. taken -1%','"Mag.Atk.Bns."+16',}},
neck="Eddy Necklace",
waist="Aswang Sash",
left_ear="Friomisi Earring",
right_ear="Hecate's Earring",
left_ring="Icesoul Ring",
right_ring="Sangoma Ring",
back="Toro Cape"}
sets.midcast_ElementalMagic.Accuracy = {
main={ name="Lehbrailg +2", augments={'DMG:+1','Mag. Acc.+13',}},
sub="Mephitis Grip",
ammo="Savant's Treatise",
head={ name="Hagondes Hat", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+27',}},
body={ name="Hagondes Coat", augments={'Phys. dmg. taken -1%','"Mag.Atk.Bns."+18',}},
hands={ name="Hagondes Cuffs +1", augments={'Phys. dmg. taken -1%','"Mag.Atk.Bns."+11',}},
legs={ name="Artsieq Hose", augments={'MP+16','Mag. Acc.+13','MND+3',}},
feet={ name="Hag. Sabots +1", augments={'Phys. dmg. taken -1%','"Mag.Atk.Bns."+16',}},
neck="Eddy Necklace",
waist="Aswang Sash",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Icesoul Ring",
right_ring="Sangoma Ring",
back="Toro Cape"}
sets.midcast_DarkMagic = {main="Chatoyant Staff",sub="Arbuda Grip",ammo="Hasty Pinion",
head="Appetence Crown",neck="Aesir Torque",ear1="Hirudinea Earring",ear2="Loquacious Earring",
body="Hedera Cotehardie",hands="Ayao's Gages",ring1="Balrahn's Ring",ring2="Excelsis Ring",
back="Merciful Cape",waist="Goading Belt",legs="Auspex Slops",feet="Hag. Sabots +1"}
sets.midcast_EnfeeblingMagic = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Savant's Treatise",
head="Nahtirah Hat",neck="Eddy Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Hedera Cotehardie",hands="Lurid Mitts",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Refraction Cape",waist="Cascade Belt",legs="Artseiq hose",feet="Hag. Sabots +1"}
sets.midcast_Impact = {main="Lehbrailg +2",sub="Wizzan Grip",ammo="Witchstone",
neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Novio Earring",
hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Icesoul Ring",body="Hagondes Coat",
back="Searing Cape",waist="Maniacus Sash",legs="Hagondes Pants",feet="Hag. Sabots +1"}
sets.midcast_Embrava = {main="Kirin's Pole",sub="Fulcio Grip",ammo="Savant's Treatise",
head="Svnt. Bonnet +2",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Anhur Robe",hands="Savant's Bracers +2",
back="Merciful Cape",waist="Cascade Belt",legs="Shedir Seraweels",feet="Rubeus Boots"}
sets.midcast_EnhancingMagic = {main="Kirin's Pole",sub="Fulcio Grip",ammo="Incantor Stone",
head="Svnt. Bonnet +2",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages",
back="Swith Cape",waist="Ninurta's Sash",legs="Artseiq hose",feet="Peda. Loafers"}
sets.precast_Stun = {main="Apamajas II",sub="Mephitis Grip",ammo="Inacantor Stone",
head="Nahtirah Hat",neck="Eddy Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Hedera Cotehardie",hands="Gendewitha Gages",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Swith Cape",waist="Goading Belt",legs="Artsieq Hose",feet="Peda. Loafers"}
sets.midcast_Cure = {main="Tamaxchi",sub="genbu's Shield",head="Hyksos Khat +1",neck="Healing Torque",
body="Heka's Kalasiris",hands="Bokwus Gloves",back="Oretanis's Cape",legs="Scholar's Pants",
feet="Peda. Loafers",ring1="Sirona's Ring",ring2="Ephedra Ring",ear1="Beatific Earring",
Ear2="Lifestorm Earring"}
sets.midcast_Helix = {main="Lehbrailg +2",sub="Wize Grip",ammo="Witchstone",
head="Hagondes Hat",neck="Stoicheion Medal",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Hagondes Coat",hands="Hagondes Cuffs +1",ring1="Maquette Ring",ring2="Dark Ring",
back="Toro Cape",waist="Maniacus Sash",legs="Hagondes Pants +1",feet="Hag. Sabots +1"}
sets.midcast_Stoneskin = {main="Kirin's Pole",neck="Stone Gorget",waist="Siegel Sash",legs="Shedir Seraweels"}
sets.Obi = {}
sets.Obi.Fire = {waist='Karin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Earth = {waist='Dorin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Water = {waist='Suirin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Wind = {waist='Furin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Ice = {waist='Hyorin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Thunder = {waist='Rairin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Light = {waist='Korin Obi',back='Twilight Cape',lring='Zodiac Ring',main="Chatoyant Staff"}
sets.Obi.Dark = {waist='Anrin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.staves = {}
sets.staves.damage = {}
sets.staves.damage.Thunder = {main="Apamajas I"}
sets.staves.damage.Fire = {main="Atar I"}
sets.staves.accuracy = {}
sets.staves.damage.Thunder = {main="Apamajas II"}
sets.staves.damage.Ice = {main="Vourukasha II"}
stuntarg = 'Shantotto'
end
function precast(spell,action)
if spell.skill=='Elemental Magic' then
cast_delay(0.1)
equip(sets['precast_FastCast'])
elseif spell.english == 'Stun' then
cast_delay(0.1)
equip(sets['precast_Stun'])
if not buffactive.thunderstorm then
add_to_chat(8,'--------- Thunderstorm is down ---------')
elseif not buffactive.klimaform then
add_to_chat(8,'----------- Klimaform is down -----------')
end
else
equip(sets['precast_FastCast'])
cast_delay(0.1)
end
end
function midcast(spell,action)
if string.find(spell.english,'Cur') then
equip(sets.midcast_Cure)
if spell.element == world.weather_element or spell_element == world.day_element then
equip({main="Chatoyant Staff"},sets.Obi[spell.element])
end
if buffactive.rapture then
equip({head="Savant's Bonnet +2"})
end
elseif spell.english == 'Impact' then
local tempset = sets['midcast_Impact']
tempset['body'] = 'Twilight Cloak'
tempset['head'] = empty
equip(tempset)
elseif spell.skill=="Elemental Magic" then
if string.find(spell.english,'helix') then
equip(sets['midcast_Helix'])
else
equip(sets.midcast_ElementalMagic[sets.midcast_ElementalMagic.index[midcast_ElementalMagic_ind]])
if spell.element == world.weather_element or spell_element == world.day_element and sets.Obi[spell.element] then
equip(sets.Obi[spell.element])
end
if spell.element == 'Thunder' then
equip({waist="Rairin Obi"})
end
end
if buffactive.ebullience then
equip({head="Savant's Bonnet +2"})
end
if buffactive.klimform then
equip ({feet="Savant's Loafers +2"})
end
elseif spell.skill=="Enfeebling Magic" then
equip(sets.midcast_ElementalMagic[sets.midcast_ElementalMagic.index[midcast_ElementalMagic_ind]])
elseif spell.english == 'Stoneskin' then
equip(sets['midcast_Stoneskin'])
elseif spell.skill == 'Enhancing Magic' then
if spell.english == 'Embrava' or spell.english == 'Regen V' then
equip(sets['midcast_Embrava'])
if not buffactive.perpetuance then
add_to_chat(8,'--------- Perpetuance is down ---------')
end
if not buffactive.accession then
add_to_chat(8,'--------- Accession is down ---------')
end
if not buffactive.penury then
add_to_chat(8,'--------- Penury is down ---------')
end
end
if buffactive.perpetuance then
equip(sets['midcast_EnhancingMagic'],{hands="Savant's Bracers +2"})
else
equip(sets['midcast_EnhancingMagic'])
end
end
if spell.english == 'Sneak' then
send_command('@wait 1.8;cancel 71;')
end
end
function aftercast(spell,action)
if Armor == '119' then
equip(sets.aftercast_Idle119)
elseif Armor == 'Stun' then
equip(sets.aftercast_IdleStun)
else
Idle()
end
if spell.english == 'Sleep' or spell.english == 'Sleepga' then
send_command('@wait 50;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
send_command('@wait 80;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Break' or spell.english == 'Breakga' then
send_command('@wait 20;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
end
end
function status_change(new,action)
if new=='Idle' then
if Armor == '119' then
equip(sets.aftercast_Idle119)
elseif Armor == 'Stun' then
equip(sets.aftercast_IdleStun)
else
Idle()
end
elseif new=='Resting' then
equip(sets.Resting)
end
if Armor == 'PDT' then
equip(sets.PDT)
end
end
function Idle()
if buffactive['Sandstorm'] then
send_command('@wait 1;input /echo ------- Sandstorm Move Wear Activated -------')
equip(sets.aftercast_Move)
elseif world.time >= (17*60) or world.time <= (7*60) then -- night time
equip(sets.aftercast_IdleNight)
else
equip(sets.aftercast_IdleDay)
end
end
function buff_change(buff,gain_or_loss)
if buff == "Sandstorm" then
Idle()
end
end
function pet_midcast(spell,action)
end
function pet_aftercast(spell,action)
end
function self_command(command)
if command == 'M2' then
midcast_ElementalMagic_ind = midcast_ElementalMagic_ind +1
if midcast_ElementalMagic_ind > #sets.midcast_ElementalMagic.index then midcast_ElementalMagic_ind = 1 end
send_command('@input /echo <----- TP Set changed to '..sets.midcast_ElementalMagic.index[midcast_ElementalMagic_ind]..' ----->')
equip(sets.midcast_ElementalMagic[sets.midcast_ElementalMagic.index[midcast_ElementalMagic_ind]])
elseif command == 'C7' then -- PDT Toggle --
if Armor == 'PDT' then
Armor = 'none'
add_to_chat(8,'PDT Set: [Unlocked]')
else
Armor = 'PDT'
add_to_chat(158,'PDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C15' then -- 119 Toggle --
if Armor == '119' then
Armor = 'None'
add_to_chat(8,'119 Set: [Unlocked]')
else
Armor = '119'
add_to_chat(158,'119 Set: [Locked]')
end
status_change(player.status)
elseif command == 'Stun' then -- Stun Idle Toggle --
if Armor == 'Stun' then
Armor = 'None'
add_to_chat(8,'Stun Set: [Unlocked]')
else
Armor = 'Stun'
add_to_chat(158,'Stun Set: [Locked]')
end
status_change(player.status)
end
end
-- This function is user defined, but never called by GearSwap itself. It's just a user function that's only called from user functions. I wanted to check the weather and equip a weather-based set for some spells, so it made sense to make a function for it instead of replicating the conditional in multiple places.
function weathercheck(spell_element,set)
if spell_element == world.weather_element or spell_element == world.day_element then
equip(set,sets['Obi_'..spell_element])
else
equip(set)
end
end
I think I've done something really Basically dumb on this but I can not for the life of me figure out why the weather rule for elemental nukes isn't working.
I think I've done something really Basically dumb on this but I can not for the life of me figure out why the weather rule for elemental nukes isn't working.
I didn't look very indepth at the code for any other errors, but it should be spell.element all around(a few are spell_element).
having trouble getting my sch to cast spells in my nuking set. Not too great with gearswap yet so I'm sure I am doing something wrong. Maybe someone can put an example command here, would be great. ty
having trouble getting my sch to cast spells in my nuking set. Not too great with gearswap yet so I'm sure I am doing something wrong. Maybe someone can put an example command here, would be great. ty
Code
If spell.skill=="Elemental Magic" then
if string.find(spell.english,'helix') then
equip(sets['midcast_Helix'])
else
equip(sets.midcast_ElementalMagic)
end
Hello again, I'm trying to convert my dnc xml into lua and don't know how to write the following into lua. Any and all help would be appreciated, thanks in advanced.
Hello again, I'm trying to convert my dnc xml into lua and don't know how to write the following into lua. Any and all help would be appreciated, thanks in advanced.
Mote's covered this pretty well in his Utility Lua for DNC,might be bettter using it but I'll paste the part about Dnc and hopefully you can find what you want in it.
Code
local waltz_tp_cost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50, ['Curing Waltz IV'] = 65, ['Curing Waltz V'] = 80}
-- Utility function for automatically adjusting the waltz spell being used to match HP needs and TP limits.
-- Handle spell changes before attempting any precast stuff.
function refine_waltz(spell, action, spellMap, eventArgs)
if spell.type ~= 'Waltz' then
return
end
-- Don't modify anything for Healing Waltz or Divine Waltzes
if spell.english == "Healing Waltz" or spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local missingHP
-- If curing ourself, get our exact missing HP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
-- If curing someone in our alliance, we can estimate their missing 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 we have an estimated missing HP value, we can adjust the preferred tier used.
if missingHP ~= nil then
if player.main_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
return
elseif missingHP < 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 600 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif missingHP < 1100 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif missingHP < 1500 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
else
newWaltz = 'Curing Waltz V'
waltzID = 311
end
elseif player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
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
-- Not dnc main or sub; bail out
return
end
end
local tpCost = waltz_tp_cost[newWaltz]
local downgrade
-- Downgrade the spell to what we can afford
if player.tp < tpCost and not buffactive.trance then
--[[ Costs:
Curing Waltz: 20 TP
Curing Waltz II: 35 TP
Curing Waltz III: 50 TP
Curing Waltz IV: 65 TP
Curing Waltz V: 80 TP
Divine Waltz: 40 TP
Divine Waltz II: 80 TP
--]]
if player.tp < 20 then
add_to_chat(122, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
eventArgs.cancel = true
return
elseif player.tp < 35 then
newWaltz = 'Curing Waltz'
elseif player.tp < 50 then
newWaltz = 'Curing Waltz II'
elseif player.tp < 65 then
newWaltz = 'Curing Waltz III'
elseif player.tp < 80 then
newWaltz = 'Curing Waltz IV'
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(122, downgrade)
end
eventArgs.cancel = true
return
end
if missingHP > 0 then
add_to_chat(122,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
-- Function to allow for automatic adjustment of the spell target type based on preferences.
function auto_change_target(spell, action, spellMap)
-- Don't adjust targetting for explicitly named targets
if not spell.target.raw:startswith('<') then
return
end
-- Do not modify target for spells where we get <lastst> or <me>.
if spell.target.raw == ('<lastst>') or spell.target.raw == ('<me>') then
return
end
-- init a new eventArgs with current values
local eventArgs = {handled = false, PCTargetMode = state.PCTargetMode, SelectNPCTargets = state.SelectNPCTargets}
-- Allow the job to do custom handling, or override the default values.
-- They can completely handle it, or set one of the secondary eventArgs vars to selectively
-- override the default state vars.
if job_auto_change_target then
job_auto_change_target(spell, action, spellMap, eventArgs)
end
-- If the job handled it, we're done.
if eventArgs.handled then
return
end
local pcTargetMode = eventArgs.PCTargetMode
local selectNPCTargets = eventArgs.SelectNPCTargets
local validPlayers = S{'Self', 'Player', 'Party', 'Ally', 'NPC'}
local intersection = spell.targets * validPlayers
local canUseOnPlayer = not intersection:empty()
local newTarget
-- For spells that we can cast on players:
if canUseOnPlayer and pcTargetMode ~= 'default' then
-- Do not adjust targetting for player-targettable spells where the target was <t>
if spell.target.raw ~= ('<t>') then
if pcTargetMode == 'stal' then
-- Use <stal> if possible, otherwise fall back to <stpt>.
if spell.targets.Ally then
newTarget = '<stal>'
elseif spell.targets.Party then
newTarget = '<stpt>'
end
elseif pcTargetMode == 'stpt' then
-- Even ally-possible spells are limited to the current party.
if spell.targets.Ally or spell.targets.Party then
newTarget = '<stpt>'
end
elseif pcTargetMode == 'stpc' then
-- If it's anything other than a self-only spell, can change to <stpc>.
if spell.targets.Player or spell.targets.Party or spell.targets.Ally or spell.targets.NPC then
newTarget = '<stpc>'
end
end
end
-- For spells that can be used on enemies:
elseif spell.targets and spell.targets.Enemy and selectNPCTargets then
-- Note: this means macros should be written for <t>, and it will change to <stnpc>
-- if the flag is set. It won't change <stnpc> back to <t>.
newTarget = '<stnpc>'
end
-- If a new target was selected and is different from the original, call the change function.
if newTarget and newTarget ~= spell.target.raw then
change_target(newTarget)
end
end
function job_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
-- Default base equipment layer is fast recast.
equip(sets.midcast.FastRecast)
if spell.skill == 'Elemental Magic' and state.CastingMode == 'Proc' then
add_to_chat(15,'Proc mode, no damage gear for midcast.')
eventArgs.handled = true
end
if spell.skill == 'Elemental Magic' and player.hpp <= 74 then
equip({ring1="Sorcerer's Ring"})
end
end
end
function job_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
-- Default base equipment layer is fast recast.
equip(sets.midcast.FastRecast)
if spell.skill == 'Elemental Magic' and state.CastingMode == 'Proc' then
add_to_chat(15,'Proc mode, no damage gear for midcast.')
eventArgs.handled = true
end
if spell.skill == 'Elemental Magic' and player.hpp <= 74 then
equip({ring1="Sorcerer's Ring"})
end
end
end
This should work.
I'd recommend putting the scorer's ring in the set variable somewhere so that it gets accounted for by the verify command and other things that use it.
I keep getting this error even though I re-run the launcher on a daily basis usually. It's been going on for a few... Even on jobs that have no .lua files.
Ok having some issues with my SCH GS lately. If lets say Light(Dark) Arts is up but not Add: White(Black) hitting it again does put it up. But it's not doing anything for any of the other spells switches. Example: I hit my manifestion macro with light arts up/add: white. Its not swapping it to Accession.
EDIT: Ok after messing around more I noticed it pretty much will work with anything(the trigger) I actually have access to "cast(ja/spells)"(at that point in time).
Code
function pretarget(spell,action)
if buffactive['Light Arts'] or buffactive['Addendum: White'] then
if spell.english == "Light Arts" and not buffactive['Addendum: White'] then
cancel_spell()
send_command('input /ja Addendum: White <me>')
elseif spell.english == "Manifestation" then
cancel_spell()
send_command('input /ja Accession <me>')
elseif spell.english == "Alacrity" then
cancel_spell()
send_command('input /ja Celerity <me>')
elseif spell.english == "Parsimony" then
cancel_spell()
send_command('input /ja Penury <me>')
end
elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
if spell.english == "Dark Arts" and not buffactive['Addendum: Black'] then
cancel_spell()
send_command('input /ja Addendum: Black <me>')
elseif spell.english == "Accession" then
cancel_spell()
send_command('input /ja Manifestation <me>')
elseif spell.english == "Celerity" then
cancel_spell()
send_command('input /ja Alacrity <me>')
elseif spell.english == "Penury" then
cancel_spell()
send_command('input /ja Parsimony <me>')
end
end
end
I keep getting this error even though I re-run the launcher on a daily basis usually. It's been going on for a few... Even on jobs that have no .lua files.
This error stopped for me a couple days ago so I don't know what to tell you...
function job_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
-- Default base equipment layer is fast recast.
equip(sets.midcast.FastRecast)
if spell.skill == 'Elemental Magic' and state.CastingMode == 'Proc' then
add_to_chat(15,'Proc mode, no damage gear for midcast.')
eventArgs.handled = true
end
if spell.skill == 'Elemental Magic' and player.hpp <= 74 then
equip({ring1="Sorcerer's Ring"})
end
end
end
This should work.
I'd recommend putting the scorer's ring in the set variable somewhere so that it gets accounted for by the verify command and other things that use it.
Looks like he copied and pasted the Mote BLM file, rather than give him something which might be beyond his skill (No Offense) I figured the simplest solution for his immediate problem would provide the following:
A better base understanding of how to stack gear swaps within a single cast under different variables IE HP %
Allow him to potentially add more complex lines without editing Motes spell mapping
On a side note, the Obi rule is a nice touch in Motes rule, I believe it would be very simple to add a rule for that also based on that.
Plus on BLM when else would you need Sorc Ring when not casting anything that counts as Elemental Magic?
Hey again, I'm having a hard time trying to figure out how to make my automaton cure and have myself switch into the AF1 pup pants for added cure potency, also having the same issue with switching into the sheltered ring. Any help would be appreciated, thanks in advanced
if job_pet_midcast and string.find(spell.english,'Cure') and spell.target.type == 'SELF' then
equip(sets.pet_midcast.MatonCure)
end
end
function pet_aftercast(spell,action)
if string.find(spell.english,'Cure') or (spell.english:startswith('Protect') or spell.english:startswith('Shell')) and player.status == 'Engaged' and spell.target == 'SELF' then
equip(sets.TP[sets.TP.index[TP_ind]])
end
So I'm returning to FFXI after almost a 2 year break. However I've noticed that my beloved spellcast no longer works/is supoorted. I hear the new rage is gearswap.
My main jobs are MNK, THF, SMN and WHM in pretty much that order.
Can someone direct me to gearswap files that already are complete and I can just edit my gear to them?
This would be really helpful and appreciative. I know hoping for a converter to convert the SC file to a GS file is asking a bit much lol so this is the next best alternative :P
Hi all for some reason gear wont equip from my wardrobe ;/ and also nitro/SV isnt putting on the augment armor before it uses any help would be greatly appreciated. Can ignore the cycles I got this GS from a friend and adjusted it heh ya he dboxes.
New to gearswap not sure what way im to post the lua here so il use spoiler not to take up space.
if buffactive['Pianissimo'] and
spell.skill == 'Singing' then
if spell.target.raw == '<me>' then
change_target('<t>')
end
end
end
function precast(spell)
if spell.english == 'Pianissimo' or
spell.english == 'Tenuto' then
return
end
if spell.action_type == 'Magic' then
equip(sets.precast.FC)
if buffactive['silence'] then
cancel_spell()
add_to_chat(158,'== Silenced! Unable to cast spells! ==')
end
end
if spell.skill == 'Singing' then
equip(sets.precast.Singing)
if spell.target.type == 'MONSTER' then
equip({main='Lehbrailg +2',sub='Mephitis Grip'})
end
if T{"Victory March","Advancing March"}:
contains(spell.english) then
equip({range="Gjallarhorn"})
elseif T{"Archer's Prelude","Hunter's Prelude","Blade Madrigal","Sword Madrigal"}:
contains(spell.english) then
equip({range="Gjallarhorn"})
elseif T{"Mage's Ballad","Mage's Ballad II","Mage's Ballad III"}:
contains(spell.english) then
equip({range="Gjallarhorn"})
elseif T{"Magic Finale","Foe Lullaby","Foe Lullaby II"}:
contains(spell.english) then
equip({range="Gjallarhorn"})
elseif T{"Valor Minuet","Valor Minuet II","Valor Minuet III","Valor Minuet IV","Valor Minuet V"}:
contains(spell.english) then
equip({range="Gjallarhorn"})
elseif T{"Army's Paeon","Army's Paeon II","Army's Paeon III","Army's Paeon IV","Army's Paeon V","Army's Paeon VI"}:
contains(spell.english) then
equip({range="Terpander"})
elseif T{"Horde Lullaby","Horde Lullaby II"}:
contains(spell.english) then
equip({range="Gjallarhorn",hands="Brioso Cuffs +1"})
elseif T{'Foe Requiem','Foe Requiem II','Foe Requiem III','Foe Requiem IV','Foe Requiem V','Foe Requiem VI','Foe Requiem VII',}:
contains(spell.english) then
equip({range="Gjallarhorn"})
else
equip({range="Terpander"})
end
end
if T{'Cure','Cure II','Cure III','Cure IV','Curaga','Curaga II','Cura'}:
contains(spell.english) then
equip(sets.precast.Cure)
end
if spell.skill == 'Enhancing Magic' then
equip(sets.precast.Enhancing)
if spell.english == 'Stoneskin' then
equip(sets.precast.Stoneskin)
end
end
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
end
function midcast(spell,act)
if spell.skill == 'Singing' then
equip(sets.midcast.Singing)
if spell.target.type == 'MONSTER' then
equip(sets.midcast.Enfeebling)
end
end
if T{"Mage's Ballad","Mage's Ballad II","Mage's Ballad III","Chocobo Mazurka","Raptor Mazurka"}:
contains(spell.english) then
equip({neck="Aoidos' Matinee",feet="Brioso Slippers +1"})
end
if T{'Cure','Cure II','Cure III','Cure IV','Curaga','Curaga II','Cura'}:
contains(spell.english) then
equip(sets.midcast.Cure)
if T{world.day_element,world.weather_element}:
contains(spell.element) then
equip({main="Chatoyant Staff",back="Twilight Cape"})
if player.inventory[Obi[spell.element]] then
equip(sets.Obi[spell.element])
end
end
end
if T{'Haste','Raise','Paralyna','Silena','Blindna','Stona','Viruna','Poisona','Erase'}:
contains(spell.english) then
equip(sets.midcast.Recast)
end
if spell.english == 'Cursna' then
equip(sets.midcast.Cursna)
end
if spell.english == 'Stoneskin' then
equip(sets.midcast.Stoneskin)
end
end
function aftercast(spell)
if spell.english == 'Pianissimo' or
spell.english == 'Tenuto' then
return
end
if spell.english == 'Foe Lullaby' and
not spell.interrupted then
send_command('@timers c "'..spell.english..'['..spell.target.name..']" 39 down')
end
if spell.english == 'Foe Lullaby II' and
not spell.interrupted then
send_command('@timers c "'..spell.english..'['..spell.target.name..']" 78 down')
end
if spell.english == 'Horde Lullaby' and
not spell.interrupted then
send_command('@timers c "'..spell.english..'['..spell.target.name..']" 36 down')
end
if spell.english == 'Horde Lullaby II' and
not spell.interrupted then
send_command('@timers c "'..spell.english..'['..spell.target.name..']" 72 down')
end
if Cycle1 == 'ON' then
if spell.english == "Archer's Prelude" then
send_command('@wait 3;input /ma "Valor Minuet V" <me>')
end
if spell.english == 'Valor Minuet V' then
if buffactive['Clarion Call'] or
songcount == 4 then
send_command("@wait 3;input /ma Hunter's Prelude <me>")
else
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
end
if spell.english == "Hunter's Prelude" then
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
if spell.english == "Army's Paeon VI" then
send_command('@wait 3;input /ma "Valor Minuet IV" <me>')
end
if spell.english == 'Valor Minuet IV' then
Cycle1 = 'OFF'
add_to_chat(158,"Song Cycle 1: ["..Cycle1.."]")
end
end
if Cycle2 == 'ON' then
if spell.english == "Mage's Ballad III" then
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Mage's Ballad II Oshawott")
end
if spell.english == "Mage's Ballad II" then
if buffactive['Clarion Call'] or
songcount == 4 then
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Mage's Ballad Oshawott")
else
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Victory March Oshawott")
end
end
if spell.english == "Mage's Ballad" then
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Army's Paeon VI Oshawott")
end
if spell.english == "Army's Paeon VI" then
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Victory March Oshawott")
end
if spell.english == "Victory March" then
Cycle2 = 'OFF'
add_to_chat(158,"Song Cycle 2: ["..Cycle2.."]")
end
end
if Cycle3 == 'ON' then
if spell.english == "Valor Minuet V" then
send_command('@wait 3;input /ma "Advancing March" <me>')
end
if spell.english == 'Advancing March' then
if buffactive['Clarion Call'] or
songcount == 4 then
send_command('@wait 3;input /ma "Valor Minuet IV" <me>')
else
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
end
if spell.english == "Valor Minuet IV" then
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
if spell.english == "Army's Paeon VI" then
send_command('@wait 3;input /ma "Victory March" <me>')
end
if spell.english == 'Victory March' then
Cycle3 = 'OFF'
add_to_chat(158,"Song Cycle 3: ["..Cycle3.."]")
end
end
if Cycle4 == 'ON' then
if spell.english == "Mage's Ballad III" then
send_command("@wait 3;input /ma Mage's Ballad II <me>")
end
if spell.english == "Mage's Ballad II" then
if buffactive['Clarion Call'] or
songcount == 4 then
send_command('@wait 3;input /ma "Victory March" <me>')
else
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
end
if spell.english == "Victory March" then
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
if spell.english == "Army's Paeon VI" then
send_command("@wait 3;input /ma Mage's Ballad <me>")
end
if spell.english == "Mage's Ballad" then
Cycle4 = 'OFF'
add_to_chat(158,"Song Cycle 4: ["..Cycle4.."]")
end
end
if Cycle5 == 'ON' then
if spell.english == "Valor Minuet IV" then
send_command('@wait 3;input /ma "Valor Minuet III" <me>')
end
if spell.english == 'Valor Minuet III' then
if buffactive['Clarion Call'] or
songcount == 4 then
send_command('@wait 3;input /ma "Valor Minuet" <me>')
else
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
end
if spell.english == "Valor Minuet" then
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
if spell.english == "Army's Paeon VI" then
send_command('@wait 3;input /ma "Valor Minuet II" <me>')
end
if spell.english == 'Valor Minuet II' then
Cycle5 = 'OFF'
add_to_chat(158,"Song Cycle 5: ["..Cycle5.."]")
end
end
if Cycle6 == 'ON' then
if spell.english == "Archer's Prelude" then
send_command('@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma "Valor Minuet V" Zubrin')
end
if spell.english == 'Valor Minuet V' then
if buffactive['Clarion Call'] or
songcount == 4 then
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Hunter's Prelude Zubrin")
else
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Army's Paeon VI Zubrin")
end
end
if spell.english == "Hunter's Prelude" then
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Army's Paeon VI Zubrin")
end
if spell.english == "Army's Paeon VI" then
send_command('@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma "Valor Minuet IV" Zubrin')
end
if spell.english == 'Valor Minuet IV' then
Cycle6 = 'OFF'
add_to_chat(158,"Song Cycle 6: ["..Cycle6.."]")
end
end
if Cycle7 == 'ON' then
if spell.english == "Archer's Prelude" then
send_command("@wait 3;input /ma Hunter's Prelude <me>")
end
if spell.english == "Hunter's Prelude" then
if buffactive['Clarion Call'] or
songcount == 4 then
send_command("@wait 3;input /ma Valor Minuet IV <me>")
else
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
end
if spell.english == "Valor Minuet IV" then
send_command("@wait 3;input /ma Army's Paeon VI <me>")
end
if spell.english == "Army's Paeon VI" then
send_command('@wait 3;input /ma "Valor Minuet V" <me>')
end
if spell.english == 'Valor Minuet V' then
Cycle7 = 'OFF'
add_to_chat(158,"Song Cycle 7: ["..Cycle7.."]")
end
end
if Cycle8 == 'ON' then
if spell.english == "Mage's Ballad III" then
send_command("@wait 3;input /ja Pianissimo <me>;wait 1.5;input /ma Mage's Ballad II Oshawott")
end
if spell.english == "Mage's Ballad II" then
Cycle8 = 'OFF'
add_to_chat(158,"Song Cycle 8: ["..Cycle8.."]")
end
end
if player.status == 'Engaged' then
equip(set_combine(sets.TP.Final,sets.DT.Mode))
else
equip(set_combine(sets.Idle,sets.DT.Mode))
end
end
function status_change(new,old)
if new == 'Engaged' then
equip(set_combine(sets.TP.Final,sets.DT.Mode))
else
equip(set_combine(sets.Idle,sets.DT.Mode))
end
end
function self_command(command)
if command == 'Update' then
if player.status == 'Engaged' then
equip(set_combine(sets.TP.Final,sets.DT.Mode))
else
equip(set_combine(sets.Idle,sets.DT.Mode))
end
end
if command == 'SongCycle1' then
Cycle1 = 'ON'
add_to_chat(158,"Song Cycle 1: ["..Cycle1.."]")
send_command("@input /ma Archer's Prelude <me>")
end
if command == 'SongCycle2' then
Cycle2 = 'ON'
add_to_chat(158,"Song Cycle 2: ["..Cycle2.."]")
send_command("@input /ja Pianissimo <me>;wait 1.5;input /ma Mage's Ballad III Oshawott")
end
if command == 'SongCycle3' then
Cycle3 = 'ON'
add_to_chat(158,"Song Cycle 3: ["..Cycle3.."]")
send_command("@input /ma Valor Minuet V <me>")
end
if command == 'SongCycle4' then
Cycle4 = 'ON'
add_to_chat(158,"Song Cycle 4: ["..Cycle4.."]")
send_command("@input /ja Tenuto <me>;wait 1.5;input /ma Mage's Ballad III <me>")
end
if command == 'SongCycle5' then
Cycle5 = 'ON'
add_to_chat(158,"Song Cycle 5: ["..Cycle5.."]")
send_command("@input /ma Valor Minuet IV <me>")
end
if command == 'SongCycle6' then
Cycle6 = 'ON'
add_to_chat(158,"Song Cycle 6: ["..Cycle6.."]")
send_command("@input /ja Pianissimo <me>;wait 1.5;input /ma Archer's Prelude Zubrin")
end
if command == 'SongCycle7' then
Cycle7 = 'ON'
add_to_chat(158,"Song Cycle 7: ["..Cycle7.."]")
send_command("@input /ma Archer's Prelude <me>")
end
if command == 'SongCycle8' then
Cycle8 = 'ON'
add_to_chat(158,"Song Cycle 8: ["..Cycle8.."]")
send_command("@input /ja Pianissimo <me>;wait 1.5;input /ma Mage's Ballad III Oshawott")
end
if command == 'Vars' then
add_to_chat(158,"Prelude: "..Cycle1.." PB: "..Cycle2.." March: "..Cycle3.." TB: "..Cycle4.."")
end
if command == 'SongCount' then
if songcount == 3 then
songcount = 4
add_to_chat(158,'Song Count: '..songcount..'')
elseif songcount == 4 then
songcount = 3
add_to_chat(158,'Song Count: '..songcount..'')
end
end
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.