|
Gearswap Support Thread
Server: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-04-15 14:28:11
However Motensen has been MIA for a year now and there's no telling if or when he will ever update his files again. He can't be completely gone, and the files must update somewhat automatically because I've never touched any of the Mote-*.lua files and my Mote-Mappings.lua has Hachirin-no-Obi for all the elements.obi_of table.
Maybe he just hasn't updated the Kinematics repository on GitHub?
Quetzalcoatl.Orestes
Server: Quetzalcoatl
Game: FFXI
Posts: 430
By Quetzalcoatl.Orestes 2015-04-15 16:48:41
Kinematics is a separate component from Gearswap. Think of it as an addon to an addon. Gearswap will update itself but it won't do anything to Kinematic's Libs. You have to manually update Kinematics.
However Motensen has been MIA for a year now and there's no telling if or when he will ever update his files again.
My guess is he got a cushy job over at Google with Aurieus.
Not the case. Kinematics luas have been included with gearswap for quite a while now, so nobody has to download them. (they're in the libs folder)
With that said, downloading them is only bad practice if he were actually updating the files, since your copies that reside in data would override his and you wouldn't get bug fixes/changes. His last change was 6 months ago though, so it likely doesn't matter.
Sylph.Ashiya
Server: Sylph
Game: FFXI
Posts: 144
By Sylph.Ashiya 2015-04-19 00:14:57
Would this be the correct way to address multiple augmented gear? This is from my blm set.
for Drain/Aspir:
Code -- feet={name="Helios Boots", augments={'"Drain" and "Aspir" potency +10',}}
sets.midcast.Drain = {main="Baqil Staff",sub="Mephitis Grip",ammo="Kalboron Stone",
head="Helios Band",neck="Dark Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Helios Jacket",hands="Helios Gloves",ring1="Sangoma Ring",ring2=gear.DarkRing.physical,
back="Bane Cape",waist="Fucho-no-obi",legs="Artsieq Hose",feet="Helios Boots"}
for Nuking, since they share the same type of gear but different augments:
Code -- Elemental Magic sets
-- feet={ name="Helios Boots", augments={'"Mag.Atk.Bns."+25','"Occult Acumen"+10','Mag. crit. hit dmg. +5%',}}
sets.midcast['Elemental Magic'] = {main="Keraunos",sub="Wizzan Grip",ammo="Witchstone",
head="Helios Band",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Hagondes Coat +1",hands="Helios Gloves",ring1="Shiva Ring",ring2="Shiva Ring",
back="Toro Cape",waist="Oneiros Sash",legs="Telchine Braconi",feet="Helios Boots"}
Edit: Did some testing and apparently it's not switching out my feet. It keeps putting on the Drain/Aspir Augmented ones.
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-19 00:40:34
Code
function user_setup()
-- Augmented Gear --
gear.DrainFeet = {name="Helios Boots", augments={'"Drain" and "Aspir" potency +10'}}
gear.NukeFeet = {name="Helios Boots", augments={'"Mag.Atk.Bns."+25','"Occult Acumen"+10','Mag. crit. hit dmg. +5%'}}
end
sets.midcast.Drain = {main="Baqil Staff",
sub="Mephitis Grip", ammo="Kalboron Stone",
head="Helios Band", neck="Dark Torque",
ear1="Psystorm Earring", ear2="Lifestorm Earring",
body="Helios Jacket", hands="Helios Gloves",
ring1="Sangoma Ring", ring2=gear.DarkRing.physical,
back="Bane Cape", waist="Fucho-no-obi",
legs="Artsieq Hose", feet=gear.DrainFeet}
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast['Elemental Magic'] = {main="Keraunos",
sub="Wizzan Grip", ammo="Witchstone",
head="Helios Band", neck="Eddy Necklace",
ear1="Hecate's Earring", ear2="Friomisi Earring",
body="Hagondes Coat +1", hands="Helios Gloves",
ring1="Shiva Ring", ring2="Shiva Ring",
back="Toro Cape", waist="Oneiros Sash",
legs="Telchine Braconi", feet=gear.NukeFeet}
By ClaudeusXI 2015-04-19 14:38:57
Hi, I'm basing this off of Bokura's GEO.lua, and I was wondering how to implement code that differentiates between low tier nukes (T1-2) and higher tier (T3+) so I can use different sets for this.
Also, how do I get it to differntiate between Geo- and Indicolure spells on midcast? I want to get those "indi-spell duration+" pieces in for those spells.
I was also having issues with staff/grip in midcast set; it won't equip them if I was wearing club/Shield. (staff/grip are removed in the version under).
Any comments about improvements (not related to gear) are also welcome.
Code function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For Magic. Default ACC Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
IdleIndex = 1
IdleArray = {"Movement","Refresh","Geomancy"} -- Default Idle Set Is Movement --
Armor = 'None'
define_geomancy_values()
Obi = 'OFF' -- Turn Default Obi ON or OFF Here --
Idris = 'ON' -- Set Idris ON or OFF Here --
target_distance = 5 -- Set Default Distance Here --
select_default_macro_book() -- Change Default Macro Book At The End --
Cure_Spells = {"Cure","Cure II","Cure III","Cure IV"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II"} -- Curaga Degradation --
sc_map = {SC1 = "GeoTorpor", SC2 = "GeoLanguor", SC3 = "IndiFocus"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
Non_Obi_Spells = S{
'Burn','Choke','Drown','Frost','Rasp','Shock','Impact','Anemohelix','Cryohelix',
'Geohelix','Hydrohelix','Ionohelix','Luminohelix','Noctohelix','Pyrohelix'}
Cities = S{
"Ru'lude Gardens","Upper Jeuno","Lower Jeuno","Port Jeuno",
"Port Windurst","Windurst Waters","Windurst Woods","Windurst Walls","Heavens Tower",
"Port San d'Oria","Northern San d'Oria","Southern San d'Oria",
"Port Bastok","Bastok Markets","Bastok Mines","Metalworks",
"Aht Urhgan Whitegate","Nashmau","Tavanazian Safehold",
"Selbina","Mhaura","Norg","Eastern Adoulin","Western Adoulin","Kazham"}
-- Idle Sets --
sets.Idle = {}
sets.Idle.Refresh = {
main="Bolelabunga",
sub="Genbu's Shield",
range="Dunna",
head="Bagua Galero +1",
neck="Twilight Torque",
ear1="Ethereal Earring",
ear2="Loquac. Earring",
body="Geo. Tunic +1",
hands="Bagua Mitaines +1",
ring1="Defending Ring",
ring2="Patricius Ring",
back="Umbra Cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Geo. Sandals +1"}
sets.Idle.Movement = set_combine(sets.Idle.Refresh,{
})
sets.Idle.Geomancy = set_combine(sets.Idle.Refresh,{
main="Idris",
sub="Genbu's Shield",
head="Azimuth Hood",
neck="Twilight Torque",
hands="Geo. Mitaines +1",
ring1="Defending Ring",
back="Lifestream Cape",
feet="Bagua Sandals +1"})
sets.Resting = set_combine(sets.Idle.Movement,{})
-- PDT Set --
sets.PDT = {
main="Idris",
sub="Genbu's Shield",
range="Dunna",
head="Azimuth Hood",
neck="Twilight Torque",
ear1="Ethereal Earring",
ear2="Sanare Earring",
body="Geo. Tunic +1",
hands="Geo. Mitaines +1",
ring1="Defending Ring",
ring2="Patricus Ring",
back="Umbra Cape",
waist="Isa Belt",
legs="Hagondes Pants +1",
feet="Bagua Sandals +1"}
sets.Sublimation = {
main="Bolelabunga",
sub="Genbu's Shield",
head="Wivre Hairpin",
ear2="Loquac. Earring",
body="Geo. Tunic +1",
hands="Bagua Mitaines +1",
legs="Assid. Pants +1",
feet="Geo. Sandals +1"}
-- Precast Sets ---
sets.Precast = {}
-- FastCast Sets --
sets.Precast.FastCast = {
main="Idris",
sub="Genbu's Shield",
head="Nahtirah Hat",
neck="Jeweled Collar",
ear1="Andoaa Earring",
ear2="Loquac. Earring",
body="Anhur Robe",
hands="Otomi Gloves",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
-- Geomancy Precast --
sets.Precast.Geomancy = {
main="Idris",
sub="Genbu's Shield",
range="Dunna",
head="Nahtirah Hat",
neck="Jeweled Collar",
ear2="Loquac. Earring",
body="Anhur Robe",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
-- Elemental Staves --
sets.Precast.Thunder = {main='Idris'}
sets.Precast.Water = {main='Idris'}
sets.Precast.Fire = {main='Idris'}
sets.Precast.Ice = {main='Idris'}
sets.Precast.Wind = {main='Idris'}
sets.Precast.Earth = {main='Idris'}
sets.Precast.Light = {main='Idris'}
sets.Precast.Dark = {main='Idris'}
-- Precast Enhancing Magic --
sets.Precast['Enhancing Magic'] = set_combine(sets.Precast.FastCast,{
head="Umuthi Hat",
neck="Jeweled Collar",
waist="Siegel Sash"})
sets.Precast.Stoneskin = set_combine(sets.Precast['Enhancing Magic'],{hands="Carapacho Cuffs"})
-- Precast Elemental Magic --
sets.Precast['Elemental Magic'] = set_combine(sets.Precast.FastCast,{hands="Bagua Mitaines +1"})
-- Precast Cure Set --
sets.Precast.Cure = {
head="Nahtirah Hat",
neck="Jeweled Collar",
ear2="Loquac. Earring",
body="Heka's Kalasiris",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Pahtli Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
-- Midcast Base Set --
sets.Midcast = {}
-- Cure Set --
sets.Midcast.Cure = {
main="Tamaxchi",
sub="Genbu's Shield",
head="Artsieq Hat",
neck="Nuna Gorget +1",
ear1="Lifestorm Earring",
ear2="Gifted Earring",
body="Heka's Kalasiris",
hands="Telchine Gloves",
ring1="Globidonta Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Witful Belt",
legs="Assid. Pants +1",
feet="Telchine Pigaches"}
-- Curaga Set --
sets.Midcast.Curaga = {
main="Tamaxchi",
sub="Genbu's Shield",
head="Artsieq Hat",
neck="Nuna Gorget +1",
ear1="Lifestorm Earring",
ear2="Loquac. Earring",
body="Heka's Kalasiris",
hands="Telchine Gloves",
ring1="Aquasoul Ring",
ring2="Karka Ring",
back="Pahtli Cape",
waist="Pythia Sash +1",
legs="Geo. Pants +1",
feet="Geo. Sandals +1"}
-- Haste Set --
sets.Midcast.Haste = {
head="Nahtirah Hat",
neck="Jeweled Collar",
ear2="Loquac. Earring",
body="Azimuth Coat",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Geo. Sandals +1"}
sets.Midcast['Enhancing Magic'] = {
head="Umuthi Hat",
neck="Jeweled Collar",
body="Anhur Robe",
hands="Telchine Gloves",
ring1="Weather. Ring",
ring2="Veneficium Ring",
waist="Sekhmet Corset",
feet="Umbani Boots"}
sets.Midcast.Stoneskin = set_combine(sets.Midcast['Enhancing Magic'],{
waist="Siegel Sash",
legs="Haven Hose"})
sets.Midcast.Cursna = set_combine(sets.Midcast.Haste,{
head="Nahtirah Hat",
ear2="Gifted Earring",
body="Bagua Tunic +1",
hands="Telchine Gloves",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Witful Belt",
legs="Assid. Pants +1",
feet="Geo. Sandals +1"})
sets.Midcast.Stun = {
main="Idris",
sub="Genbu's Shield",
head="Nahtirah Hat",
neck="Twilight Torque",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Artsieq Jubbah",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
sets.Midcast.Stun.MidACC = set_combine(sets.Midcast.Stun,{})
sets.Midcast.Stun.HighACC = set_combine(sets.Midcast.Stun.MidACC,{})
-- Dark Magic Sets --
sets.Midcast['Dark Magic'] = {
main="Idris",
sub="Genbu's Shield",
head="Bagua Galero +1",
neck="Eddy Necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Geo. Tunic +1",
hands="Azimuth Gloves",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Fucho-no-Obi",
legs="Azimuth Tights",
feet="Helios Boots"}
sets.Midcast['Dark Magic'].MidACC = set_combine(sets.Midcast['Dark Magic'],{})
sets.Midcast['Dark Magic'].HighACC = set_combine(sets.Midcast['Dark Magic'].MidACC,{})
-- Elemental Sets --
sets.Midcast['Elemental Magic'] = {
main="Idris",
sub="Genbu's Shield",
head="Geo. Galero +1",
neck="Eddy Necklace",
ear1="Crematio Earring",
ear2="Psystorm Earring",
body="Bagua Tunic +1",
hands="Yaoyotl Gloves",
ring1="Weather. Ring",
ring2="Strendu Ring",
back="Refraction Cape",
waist="Yamabuki-no-Obi",
legs="Hagondes Pants +1",
feet="Umbani Boots"}
sets.Midcast['Elemental Magic'].MidACC = set_combine(sets.Midcast['Elemental Magic'],{})
sets.Midcast['Elemental Magic'].HighACC = set_combine(sets.Midcast['Elemental Magic'].MidACC,{})
-- Enfeebling Sets --
sets.Midcast['Enfeebling Magic'] = {
main="Idris",
sub="Genbu's Shield",
head="Artsieq Hat",
neck="Imbodla Necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Artsieq Jubbah",
hands="Azimuth Gloves",
ring1="Weather. Ring",
ring2="Globidonta Ring",
back="Refraction Cape",
waist="Tengu-no-Obi",
legs="Azimuth Tights",
feet="Bagua Sandals +1"}
sets.Midcast['Enfeebling Magic'].MidACC = set_combine(sets.Midcast['Enfeebling Magic'],{})
sets.Midcast['Enfeebling Magic'].HighACC = set_combine(sets.Midcast['Enfeebling Magic'].MidACC,{})
sets.Midcast.Impact = {
main="Idris",
sub="Genbu's Shield",
neck="Eddy Necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Twilight Cloak",
hands="Yaoyotl Gloves",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Demonry Sash",
legs="Geo. Pants +1",
feet="Nares Clogs"}
-- Elemental Obi/Twilight Cape --
sets.Obi = {}
sets.Obi.Thunder = {back="Twilight Cape",waist='Rairin Obi'}
sets.Obi.Water = {back="Twilight Cape",waist='Suirin Obi'}
sets.Obi.Fire = {back="Twilight Cape",waist='Karin Obi'}
sets.Obi.Ice = {back="Twilight Cape",waist='Hyorin Obi'}
sets.Obi.Wind = {back="Twilight Cape",waist='Furin Obi'}
sets.Obi.Earth = {back="Twilight Cape",waist='Dorin Obi'}
sets.Obi.Light = {back="Twilight Cape",waist='Korin Obi'}
sets.Obi.Dark = {back="Twilight Cape",waist='Anrin Obi'}
-- JA Sets --
sets.JA = {}
sets.JA['Life Cycle'] = {body="Geo. Tunic +1"}
sets.JA.Bolster = {body="Bagua Tunic +1"}
sets.JA['Radial Arcana'] = {feet="Bagua Sandals +1"}
sets.JA['Full Circle'] = {
head="Azimuth Hood",
hands="Bagua Mitaines +1"}
-- Melee Set --
sets.Melee = set_combine(sets.Midcast.Haste,{
main="Idris",
sub="Genbu's Shield",
head="Bagua Galero +1",
neck="Asperity Necklace",
ear1="Ethereal Earring",
ear2="Brutal Earring",
body="Geo. Tunic +1",
hands="Bagua Mitaines +1",
ring1="Defending Ring",
ring2="Patricus Ring",
back="Mecisto. Mantle",
waist="Witful Belt",
legs="Assid. Pants +1",
feet="Bagua Sandals +1"})
-- WS Base Set --
sets.WS = {}
sets.WS["Hexa Strike"] = {}
sets.WS.Realmrazer = {}
sets.WS.Shattersoul = {}
end
function pretarget(spell,action)
if (string.find(spell.type,'Magic') or spell.type == "Ninjutsu" or spell.type == "Geomancy") and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english:ifind("Cure") and player.mp<actualCost(spell.mp_cost) then
degrade_spell(spell,Cure_Spells)
elseif spell.english:ifind("Curaga") and player.mp<actualCost(spell.mp_cost) then
degrade_spell(spell,Curaga_Spells)
elseif string.find(spell.english,'Geo') and pet.isvalid then -- Change Any Geo Spells To Full Circle If You Have A Luopan Active --
cancel_spell()
send_command('input /ja "Full Circle" <me>')
elseif 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
function precast(spell,action)
if spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
if buffactive.silence or spell.target.distance > 16+target_distance then -- Cancel Magic or Ninjutsu 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 string.find(spell.english,'Cur') and spell.english ~= "Cursna" then
equip(sets.Precast.Cure)
elseif spell.english == "Impact" then
equip(set_combine(sets.Precast.FastCast,{body="Twilight Cloak"}))
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
elseif sets.Precast[spell.skill] then
equip(sets.Precast[spell.skill])
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
elseif sets.WS[spell.english] then
equip(sets.WS[spell.english])
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
elseif spell.type == "Geomancy" then
if Cities:contains(world.area) then
cancel_spell()
add_to_chat(123,'Unable To Use Geomancy In Town')
return
else
if buffactive.silence or spell.target.distance > 16+target_distance then -- Cancel Geomancy 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
display_geomancy_info(spell)
equip(sets.Precast.Geomancy)
end
end
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
if not spell.type == "Geomancy" and Idris == 'OFF' and sets.Precast[spell.element] then
equip(sets.Precast[spell.element])
end
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == "Geomancy" or spell.type == 'Ninjutsu' then
equipSet = sets.Midcast
if string.find(spell.english,'Cure') then
equipSet = equipSet.Cure
elseif string.find(spell.english,'Cura') then
equipSet = equipSet.Curaga
elseif string.find(spell.english,'Banish') then
equipSet = set_combine(equipSet.Haste,{})
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
else
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[spell.type] then
equipSet = equipSet[spell.type]
end
if (spell.skill == 'Elemental Magic' or string.find(spell.english,'Cur') or string.find(spell.english,'Bio') or string.find(spell.english,'Dia') or spell.english == 'Aspir' or spell.english == 'Drain') and not Non_Obi_Spells:contains(spell.english) and (world.day_element == spell.element or world.weather_element == spell.element) and sets.Obi[spell.element] and Obi == 'ON' and spell.english ~= "Cursna" then -- Use Obi Toggle To Equip Normal Waist Gear --
equipSet = set_combine(equipSet,sets.Obi[spell.element])
end
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function aftercast(spell,action)
if not spell.interrupted then
if spell.english == "Sleep II" then-- Sleep II Countdown --
send_command('wait 60;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
send_command('wait 30;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Banish II" then -- Banish II Countdown --
send_command('wait 20;input /echo Banish Effect: [WEARING OFF IN 10 SEC.]')
end
end
status_change(player.status)
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif buffactive["Sublimation: Activated"] then
equip(sets.Sublimation)
elseif new == 'Engaged' then
equip(sets.Melee)
elseif new == 'Idle' then
equip(sets.Idle[IdleArray[IdleIndex]])
elseif new == 'Resting' then
equip(sets.Resting)
end
if StunIndex == 1 then
equip(sets.Midcast.Stun)
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 == 'C1' then -- Magic Accuracy Toggle --
AccIndex = (AccIndex % #AccArray) + 1
add_to_chat(158,'Magic Accuracy Level: ' .. AccArray[AccIndex])
status_change(player.status)
elseif command == 'C2' then -- Stun Toggle --
if StunIndex == 1 then
StunIndex = 0
add_to_chat(123,'Stun Set: [Unlocked]')
else
StunIndex = 1
add_to_chat(158,'Stun Set: [Locked]')
end
status_change(player.status)
elseif command == 'C5' then -- Auto Update Gear Toggle --
status_change(player.status)
add_to_chat(158,'Auto Update Gear')
elseif command == 'C3' then -- Obi Toggle --
if Obi == 'ON' then
Obi = 'OFF'
add_to_chat(123,'Obi: [OFF]')
else
Obi = 'ON'
add_to_chat(158,'Obi: [ON]')
end
status_change(player.status)
elseif command == 'C7' then -- PDT Toggle --
if Armor == 'PDT' then
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 == 'C8' 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 == 'C6' then -- Idle Toggle --
IdleIndex = (IdleIndex % #IdleArray) + 1
add_to_chat(158,'Idle Set: '..IdleArray[IdleIndex])
status_change(player.status)
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function actualCost(originalCost)
if buffactive["Penury"] then
return originalCost*.5
elseif buffactive["Light Arts"] then
return originalCost*.9
else
return originalCost
end
end
function degrade_spell(spell,degrade_array)
spell_index = table.find(degrade_array,spell.name)
if spell_index > 1 then
new_spell = degrade_array[spell_index - 1]
change_spell(new_spell,spell.target.raw)
add_to_chat(8,spell.name..' Canceled: ['..player.mp..'/'..player.max_mp..'MP::'..player.mpp..'%] Casting '..new_spell..' instead.')
end
end
function change_spell(spell_name,target)
cancel_spell()
send_command('//'..spell_name..' '..target)
end
function define_geomancy_values()
geomancy = {
Frailty = {bonus="Defense Down"},
Torpor = {bonus="Evasion Down"},
Languor = {bonus="Magic Evasion Down"},
Focus = {bonus="Magic Accuracy"},
Malaise = {bonus="Magic Defense Down"},
Precision = {bonus="Accuracy"},
Refresh = {bonus="Refresh"},
Fade = {bonus="Magic Attack Down"},
Wilt = {bonus="Attack Down"},
Vex = {bonus="Magic Accuracy Down"},
Slip = {bonus="Accuracy Down"},
Acumen = {bonus="Magic Attack"},
Fend = {bonus="Magic Defense"},
Fury = {bonus="Attack"},
Attunement = {bonus="Magic Evasion"},
Voidance = {bonus="Evasion"},
Barrier = {bonus="Defense"}
}
end
function display_geomancy_info(spell)
geoType=nil
string.gsub(spell.english.."-","-(.-)-",function(geo) geoType=geo end)
geoInfo = geomancy[geoType]
if geoInfo then
add_to_chat(158, spell.english..' = '..tostring(geoInfo.bonus))
end
end
function sub_job_change(newSubjob, oldSubjob)
select_default_macro_book()
end
function set_macro_page(set,book)
if not tonumber(set) then
add_to_chat(123,'Error setting macro page: Set is not a valid number ('..tostring(set)..').')
return
end
if set < 1 or set > 10 then
add_to_chat(123,'Error setting macro page: Macro set ('..tostring(set)..') must be between 1 and 10.')
return
end
if book then
if not tonumber(book) then
add_to_chat(123,'Error setting macro page: book is not a valid number ('..tostring(book)..').')
return
end
if book < 1 or book > 20 then
add_to_chat(123,'Error setting macro page: Macro book ('..tostring(book)..') must be between 1 and 20.')
return
end
send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(set))
else
send_command('@input /macro set '..tostring(set))
end
end
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'RDM' then
set_macro_page(1, 1)
elseif player.sub_job == 'BLM' then
set_macro_page(1, 1)
elseif player.sub_job == 'WHM' then
set_macro_page(1, 1)
else
set_macro_page(1, 1)
end
end
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-19 19:06:03
I didn't see any staff or grip in your lua so I can't help with that.
As for the low-tier nukes and Indi spells I'm sure you can work this into your lua somehow. Code
lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder',
'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II',
'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III',
'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II'}
sets.Midcast['Elemental Magic'] = {} -- INT and MAB gear.
sets.Midcast.LowTierNuke = {} -- +Magic Damage gear.
sets.Midcast.Geomancy = {range="Nepote Bell"}
sets.Midcast.Geomancy.Indicolure = {range="Nepote Bell", legs="Bagua Pants"}
function midcast(spell,action)
if spell.skill == 'Elemental Magic' then
if lowTierNukes:contains(spell.english) then
equipSet = set_combine(equipSet, sets.Midcast.LowTierNuke)
else
equipSet = set_combine(equipSet, equipSet[spell.skill])
end
elseif spell.skill == 'Geomancy' then
if spell.english:startswith('Indi') then
equipSet = set_combine(equipSet, sets.Midcast.Geomancy.Indicolure)
else
equipSet = set_combine(equipSet, sets.Midcast.Geomancy)
end
end
end
By ClaudeusXI 2015-04-19 19:10:51
Thanks, I will try. I'm not so good with this :-)
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-19 22:36:02
I haven't tested it but this should work for you. Just add your own gear in LowTierNuke and Geomancy midcast sets. http://pastebin.com/Ps14tRp9
Cerberus.Tidis
Server: Cerberus
Game: FFXI
Posts: 3927
By Cerberus.Tidis 2015-04-23 13:21:08
I set up a PLD lua file based on Motenn's PLD file and I would like to get dual wielding properly set up, however I can't work out how it works, I can't see a toggle for DW at all but it was already there in the original PLD file before I edited it.
I just thought I'd try it and see if it would equip the right gear, just because it was there but it doesn't, does anyone know how the dual wielding is supposed to work in Motenn's files or alternatively, how I can set up dual wielding? It's not a huge deal since it's just a case of using heartseeker + dudgeon earrings. 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.Sentinel = buffactive.sentinel or false
state.Buff.Cover = buffactive.cover or false
state.Buff.Doom = buffactive.Doom or false
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', 'Acc')
state.HybridMode:options('Normal', 'PDT', 'Reraise')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.PhysicalDefenseMode:options('PDT', 'HP', 'Reraise', 'Charm')
state.MagicalDefenseMode:options('MDT', 'HP', 'Reraise', 'Charm')
state.ExtraDefenseMode = M{['description']='Extra Defense Mode', 'None', 'MP', 'Knockback', 'MP_Knockback'}
state.EquipShield = M(false, 'Equip Shield w/Defense')
update_defense_mode()
send_command('bind ^f11 gs c cycle MagicalDefenseMode')
send_command('bind !f11 gs c cycle ExtraDefenseMode')
send_command('bind @f10 gs c toggle EquipShield')
send_command('bind @f11 gs c toggle EquipShield')
select_default_macro_book()
end
function user_unload()
send_command('unbind ^f11')
send_command('unbind !f11')
send_command('unbind @f10')
send_command('unbind @f11')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Invincible'] = {legs="Caballarius Breeches +1"}
sets.precast.JA['Holy Circle'] = {feet="Reverence Leggings +1"}
sets.precast.JA['Shield Bash'] = {hands="Caballarius Gauntlets +1"}
sets.precast.JA['Sentinel'] = {feet="Caballarius Leggings +1"}
sets.precast.JA['Rampart'] = {head="Caballarius Coronet +1"}
sets.precast.JA['Fealty'] = {body="Caballarius Surcoat +1"}
sets.precast.JA['Divine Emblem'] = {feet="Creed Sabatons +2"}
sets.precast.JA['Cover'] = {head="Reverence Coronet +1"}
-- add mnd for Chivalry
sets.precast.JA['Chivalry'] = {
head="Reverence Coronet +1",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Aquasoul Ring",ring2="Aquasoul Ring",
back="Weard Mantle",legs="Reverence Breeches +1",feet="Whirlpool Greaves"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Reverence Coronet +1",
hands="Reverence Gauntlets +1",
legs="Reverence Breeches +1",feet="Whirlpool Greaves"}
-- 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="Incantor Stone",
head="Cizin Helm +1",ear2="Loquacious Earring",legs="Enif Cosciales"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="Ginsen",
head="Otomi Helm",neck=gear.ElementalGorget,ear1="Brutal Earring",ear2="Moonshade Earring",
body="Xaddi Mail",hands="Cizin Mufflers +1",ring1="Rajas Ring",ring2="Karieyh Ring",
back="Bleating Mantle",waist=gear.ElementalBelt,legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.precast.WS.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Xaddi Mail",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Patricius Ring",
back="Bleating Mantle",waist=gear.ElementalBelt,legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {ring1="Aquasoul Ring",ring2="Aquasoul Ring"})
sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS.Acc, {ring1="Aquasoul Ring"})
sets.precast.WS['Savage Blade'] = {ammo="Cheruski Needle",
head="Otomi Helm",neck="Breeze Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Phorcys Korazin",hands="Cab. Gauntlets +1",ring1="Ifrit Ring",ring2="Ifrit Ring",
back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Cab. Breeches +1",feet="Whirlpool Greaves"}
sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {head="Yaoyotl Helm",body="Xaddi Mail",hands="Buremte Gloves"})
sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {ammo="Jukikuk Feather",
neck="Breeze Gorget",legs="Mikinaak Cuisses",ring1="Ramuh Ring",ring2="Ramuh Ring",waist="Chiner's Belt +1"})
sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {head="Yaoyotl Helm",body="Xaddi Mail",hand="Buremte Gloves"})
sets.precast.WS['Sanguine Blade'] = {ammo="Ginsen",
head="Reverence Coronet +1",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Karieyh Ring",ring2="K'ayres Ring",
legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.precast.WS['Atonement'] = {
head="Reverence Coronet +1",neck=gear.ElementalGorget,ear1="Creed Earring",ear2="Steelflash Earring",
body="Phorcys Korazin",hands="Reverence Gauntlets +1",ring1="Karieyh Ring",
waist=gear.ElementalBelt,legs="Reverence Breeches +1",feet="Caballarius Leggings +1"}
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {ammo="Incantor Stone",
head="Cizin Helm +1",
body="Nuevo Coselete",hands="Reverence Gauntlets +1",
waist="Zoran's Belt",legs="Enif Cosciales",feet="Reverence Leggings +1"}
sets.midcast.Enmity = {
head="Reverence Coronet +1",neck="Invidia Torque",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Odium Ring",ring2="Hercules' Ring",
waist="Goading Belt",legs="Reverence Breeches +1",feet="Caballarius Leggings +1"}
sets.midcast.Flash = set_combine(sets.midcast.Enmity, {ammo="Incantor Stone",head="Cizin Helm +1",body="Nuevo Coselete",legs="Enif Cosciales"})
sets.midcast.Stun = sets.midcast.Flash
sets.midcast.Cure = {
head="Adaman Barbuta",neck="Invidia Torque",ear1="Hospitaler Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Buremte Gloves",
legs="Reverence Breeches +1",feet="Caballarius Leggings +1"}
sets.midcast['Enhancing Magic'] = {legs="Reverence Breeches +1"}
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Shell = {ring1="Sheltered Ring"}
--------------------------------------
-- Idle/resting/defense/etc sets
--------------------------------------
sets.Reraise = {head="Twilight Helm", body="Twilight Mail"}
sets.resting = {head="Twilight Helm",neck="Creed Collar",
body="Ares' Cuirass +1"}
-- Idle sets
sets.idle = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Town = {main="Burtgang",sub="Ochain",ammo="Incantor Stone",
head="Reverence Coronet +1",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Weak = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
sets.Kiting = {legs="Crimson Cuisses"}
sets.latent_refresh = {waist="Fucho-no-obi"}
--------------------------------------
-- Defense sets
--------------------------------------
-- Extra defense sets. Apply these on top of melee or defense sets.
sets.Knockback = {back="Repulse Mantle"}
sets.MP = {neck="Creed Collar",waist="Flume Belt"}
sets.MP_Knockback = {neck="Creed Collar",waist="Flume Belt",back="Repulse Mantle"}
-- If EquipShield toggle is on (Win+F10 or Win+F11), equip the weapon/shield combos here
-- when activating or changing defense mode:
sets.PhysicalShield = {main="Burtgang",sub="Ochain"} -- Ochain
sets.MagicalShield = {main="Burtgang",sub="Aegis"} -- Aegis
-- Basic defense sets.
sets.defense.PDT = {ammo="Brigantia Pebble",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Ethereal Earring",
body="Reverence Surcoat +1",hands="Cizin Mufflers +1",ring1="Patricius Ring",ring2=gear.DarkRing.physical,
back="Repulse Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Cizin Greaves +1"}
sets.defense.HP = {ammo="Brigantia Pebble",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Caballarius Gauntlets +1",ring1="Patricius Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Creed Baudrier",legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.defense.Reraise = {ammo="Brigantia Pebble",
head="Twilight Helm",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Twilight Mail",hands="Cizin Mufflers +1",ring1="Patricius Ring",ring2=gear.DarkRing.physical,
back="Repulse Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Cizin Greaves +1"}
sets.defense.Charm = {ammo="Brigantia Pebble",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Ethereal Earring",
body="Reverence Surcoat +1",hands="Cizin Mufflers +1",ring1="Patricius Ring",ring2=gear.DarkRing.physical,
back="Repulse Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Cizin Greaves +1"}
-- To cap MDT with Shell IV (52/256), need 76/256 in gear.
-- Shellra V can provide 75/256, which would need another 53/256 in gear.
sets.defense.MDT = {ammo="Demonry Stone",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Patricius Ring",ring2="Shadow Ring",
back="Weard Mantle",waist="Creed Baudrier",legs="Caballarius Breeches +1",feet="Caballarius Leggings +1"}
--------------------------------------
-- Engaged sets
--------------------------------------
sets.engaged = {ammo="Ginsen",
head="Otomi Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Xaddi Mail",hands="Cizin Mufflers +1",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.engaged.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Xaddi Mail",hands="Buremte Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Weard Mantle",waist="Windbuffet Belt +1",legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.engaged.DW = {ammo="Ginsen",
head="Otomi Helm",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Xaddi Mail",hands="Cizin Mufflers",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.engaged.DW.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Xaddi Mail",hands="Buremte Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Weard Mantle",waist="Windbuffet Belt +1",legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.engaged.PDT = set_combine(sets.engaged, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.Reraise = set_combine(sets.engaged, sets.Reraise)
sets.engaged.Acc.Reraise = set_combine(sets.engaged.Acc, sets.Reraise)
sets.engaged.DW.PDT = set_combine(sets.engaged.DW, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.DW.Acc.PDT = set_combine(sets.engaged.DW.Acc, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.DW.Reraise = set_combine(sets.engaged.DW, sets.Reraise)
sets.engaged.DW.Acc.Reraise = set_combine(sets.engaged.DW.Acc, sets.Reraise)
--------------------------------------
-- Custom buff sets
--------------------------------------
sets.buff.Doom = {ring2="Ephedra Ring"}
sets.buff.Cover = {head="Reverence Coronet +1", body="Caballarius Surcoat +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function job_midcast(spell, action, spellMap, eventArgs)
-- If DefenseMode is active, apply that gear over midcast
-- choices. Precast is allowed through for fast cast on
-- spells, but we want to return to def gear before there's
-- time for anything to hit us.
-- Exclude Job Abilities from this restriction, as we probably want
-- the enhanced effect of whatever item of gear applies to them,
-- and only one item should be swapped out.
if state.DefenseMode.value ~= 'None' and spell.type ~= 'JobAbility' then
handle_equipping_gear(player.status)
eventArgs.handled = true
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_state_change(field, new_value, old_value)
classes.CustomDefenseGroups:clear()
classes.CustomDefenseGroups:append(state.ExtraDefenseMode.current)
if state.EquipShield.value == true then
classes.CustomDefenseGroups:append(state.DefenseMode.current .. 'Shield')
end
classes.CustomMeleeGroups:clear()
classes.CustomMeleeGroups:append(state.ExtraDefenseMode.current)
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
update_defense_mode()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
if state.Buff.Doom then
idleSet = set_combine(idleSet, sets.buff.Doom)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.Buff.Doom then
meleeSet = set_combine(meleeSet, sets.buff.Doom)
end
return meleeSet
end
function customize_defense_set(defenseSet)
if state.ExtraDefenseMode.value ~= 'None' then
defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
end
if state.EquipShield.value == true then
defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
end
if state.Buff.Doom then
defenseSet = set_combine(defenseSet, sets.buff.Doom)
end
return defenseSet
end
function display_current_job_state(eventArgs)
local msg = 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ', WS: ' .. state.WeaponskillMode.value
if state.DefenseMode.value ~= 'None' then
msg = msg .. ', Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
end
if state.ExtraDefenseMode.value ~= 'None' then
msg = msg .. ', Extra: ' .. state.ExtraDefenseMode.value
end
if state.EquipShield.value == true then
msg = msg .. ', Force Equip Shield'
end
if state.Kiting.value == true then
msg = msg .. ', Kiting'
end
if state.PCTargetMode.value ~= 'default' then
msg = msg .. ', Target PC: '..state.PCTargetMode.value
end
if state.SelectNPCTargets.value == true then
msg = msg .. ', Target NPCs'
end
add_to_chat(122, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function update_defense_mode()
if player.equipment.main == 'Kheshig Blade' and not classes.CustomDefenseGroups:contains('Kheshig Blade') then
classes.CustomDefenseGroups:append('Kheshig Blade')
end
if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
if player.equipment.sub and not player.equipment.sub:contains('Shield') and
player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
state.CombatForm:set('DW')
else
state.CombatForm:reset()
end
end
end
-- 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, 1)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 1)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 1)
else
set_macro_page(1, 1)
end
end
Quetzalcoatl.Orestes
Server: Quetzalcoatl
Game: FFXI
Posts: 430
By Quetzalcoatl.Orestes 2015-04-23 16:02:12
I set up a PLD lua file based on Motenn's PLD file and I would like to get dual wielding properly set up, however I can't work out how it works, I can't see a toggle for DW at all but it was already there in the original PLD file before I edited it.
I just thought I'd try it and see if it would equip the right gear, just because it was there but it doesn't, does anyone know how the dual wielding is supposed to work in Motenn's files or alternatively, how I can set up dual wielding? It's not a huge deal since it's just a case of using heartseeker + dudgeon earrings.
With the way it's written, you need to have an offhand weapon equipped when you change jobs, or subjob to NIN or DNC. i.e. When the PLD lua is first loaded it will check, and assign DW mode.
If that doesn't occur, you can press F12 anytime you want, and Mote's file will check your offhand slot again. You could probably get around pressing F12 by adding a call to update_defense_mode() in job_handle_equipping_gear()
Code
function job_handle_equipping_gear(status, eventArgs)
update_defense_mode()
end
Cerberus.Tidis
Server: Cerberus
Game: FFXI
Posts: 3927
By Cerberus.Tidis 2015-04-23 16:07:59
Ah ok thanks, I found it peculiar that it was all of a sudden working just now, nice to know I can manually make it re-check my equipment.
Quetzalcoatl.Eithin
Server: Quetzalcoatl
Game: FFXI
Posts: 10
By Quetzalcoatl.Eithin 2015-04-25 01:29:02
getting a syntax error when trying to load lua file.
error reads: Eithin_BLU.lua:2: syntax error near '2'
Only place I can think of that the problem may be is here
1 -------------------------------------------------------------------------------------------------------------------
2 -- Setup functions for this job. Generally should not be modified.
3 -------------------------------------------------------------------------------------------------------------------
4
5 -- Initialization function for this job file.
6 function get_sets()
7 mote_include_version = 2
8
9 -- Load and initialize the include file.
10 include('Mote-Include.lua')
11 end
12
I can paste more if needed just didn't want to flood the whole board with the full file. Thanks in advance!
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-25 03:37:13
Just what you posted looks fine to me. Your lua seems to not load because it cannot find the correct library files (motes includes version 2).
1. Are your main luas and the lib files in the GearSwap/data folder?
2. Are you using a sidecar?
3. Are you using Kinematics latest library files (version 2) from here? There are 7 files and you need them all to work.
It might be better just to post your entire lua.
When posting codes be sure to contain it within the [code ] [/code ] tags (minus the spaces) so that it shows in a sized window rather than half the forum page which would be painful to read. Better yet, use pastebin.com and post the link.
Quetzalcoatl.Eithin
Server: Quetzalcoatl
Game: FFXI
Posts: 10
By Quetzalcoatl.Eithin 2015-04-25 09:04:50
1. the lib files are in the libs folder, and the job lua is in the data folder.
2.no idea what a sidecar is.
3.yes I am, and I have loaded a Kinematics file successfully within the last couple of days.
I will paste the full file. perhaps the error is somewhere else.
Code 1 -------------------------------------------------------------------------------------------------------------------
2 -- Setup functions for this job. Generally should not be modified.
3 -------------------------------------------------------------------------------------------------------------------
4
5 -- Initialization function for this job file.
6 function get_sets()
7 mote_include_version = 2
8
9 -- Load and initialize the include file.
10 include('Mote-Include.lua')
11 end
12
13
14 -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
15 function job_setup()
16 state.Buff['Burst Affinity'] = buffactive['Burst Affinity'] or false
17 state.Buff['Chain Affinity'] = buffactive['Chain Affinity'] or false
18 state.Buff.Convergence = buffactive.Convergence or false
19 state.Buff.Diffusion = buffactive.Diffusion or false
20 state.Buff.Efflux = buffactive.Efflux or false
21
22 state.Buff['Unbridled Learning'] = buffactive['Unbridled Learning'] or false
23
24
25 blue_magic_maps = {}
26
27 -- Mappings for gear sets to use for various blue magic spells.
28 -- While Str isn't listed for each, it's generally assumed as being at least
29 -- moderately signficant, even for spells with other mods.
30
31 -- Physical Spells --
32
33 -- Physical spells with no particular (or known) stat mods
34 blue_magic_maps.Physical = S{
35 'Bilgestorm'
36 }
37
38 -- Spells with heavy accuracy penalties, that need to prioritize accuracy first.
39 blue_magic_maps.PhysicalAcc = S{
40 'Heavy Strike',
41 }
42
43 -- Physical spells with Str stat mod
44 blue_magic_maps.PhysicalStr = S{
45 'Battle Dance','Bloodrake','Death Scissors','Dimensional Death',
46 'Empty Thrash','Quadrastrike','Sinker Drill','Spinal Cleave',
47 'Uppercut','Vertical Cleave'
48 }
49
50 -- Physical spells with Dex stat mod
51 blue_magic_maps.PhysicalDex = S{
52 'Amorphic Spikes','Asuran Claws','Barbed Crescent','Claw Cyclone','Disseverment',
53 'Foot Kick','Frenetic Rip','Goblin Rush','Hysteric Barrage','Paralyzing Triad',
54 'Seedspray','Sickle Slash','Smite of Rage','Terror Touch','Thrashing Assault',
55 'Vanity Dive'
56 }
57
58 -- Physical spells with Vit stat mod
59 blue_magic_maps.PhysicalVit = S{
60 'Body Slam','Cannonball','Delta Thrust','Glutinous Dart','Grand Slam',
61 'Power Attack','Quad. Continuum','Sprout Smack','Sub-zero Smash'
62 }
63
64 -- Physical spells with Agi stat mod
65 blue_magic_maps.PhysicalAgi = S{
66 'Benthic Typhoon','Feather Storm','Helldive','Hydro Shot','Jet Stream',
67 'Pinecone Bomb','Spiral Spin','Wild Oats'
68 }
69
70 -- Physical spells with Int stat mod
71 blue_magic_maps.PhysicalInt = S{
72 'Mandibular Bite','Queasyshroom'
73 }
74
75 -- Physical spells with Mnd stat mod
76 blue_magic_maps.PhysicalMnd = S{
77 'Ram Charge','Screwdriver','Tourbillion'
78 }
79
80 -- Physical spells with Chr stat mod
81 blue_magic_maps.PhysicalChr = S{
82 'Bludgeon'
83 }
84
85 -- Physical spells with HP stat mod
86 blue_magic_maps.PhysicalHP = S{
87 'Final Sting'
88 }
89
90 -- Magical Spells --
91
92 -- Magical spells with the typical Int mod
93 blue_magic_maps.Magical = S{
94 'Blastbomb','Blazing Bound','Bomb Toss','Cursed Sphere','Dark Orb','Death Ray',
95 'Diffusion Ray','Droning Whirlwind','Embalming Earth','Firespit','Foul Waters',
96 'Ice Break','Leafstorm','Maelstrom','Rail Cannon','Regurgitation','Rending Deluge',
97 'Retinal Glare','Subduction','Tem. Upheaval','Water Bomb'
98 }
99
100 -- Magical spells with a primary Mnd mod
101 blue_magic_maps.MagicalMnd = S{
102 'Acrid Stream','Evryone. Grudge','Magic Hammer','Mind Blast'
103 }
104
105 -- Magical spells with a primary Chr mod
106 blue_magic_maps.MagicalChr = S{
107 'Eyes On Me','Mysterious Light'
108 }
109
110 -- Magical spells with a Vit stat mod (on top of Int)
111 blue_magic_maps.MagicalVit = S{
112 'Thermal Pulse'
113 }
114
115 -- Magical spells with a Dex stat mod (on top of Int)
116 blue_magic_maps.MagicalDex = S{
117 'Charged Whisker','Gates of Hades'
118 }
119
120 -- Magical spells (generally debuffs) that we want to focus on magic accuracy over damage.
121 -- Add Int for damage where available, though.
122 blue_magic_maps.MagicAccuracy = S{
123 '1000 Needles','Absolute Terror','Actinic Burst','Auroral Drape','Awful Eye',
124 'Blank Gaze','Blistering Roar','Blood Drain','Blood Saber','Chaotic Eye',
125 'Cimicine Discharge','Cold Wave','Corrosive Ooze','Demoralizing Roar','Digest',
126 'Dream Flower','Enervation','Feather Tickle','Filamented Hold','Frightful Roar',
127 'Geist Wall','Hecatomb Wave','Infrasonics','Jettatura','Light of Penance',
128 'Lowing','Mind Blast','Mortal Ray','MP Drainkiss','Osmosis','Reaving Wind',
129 'Sandspin','Sandspray','Sheep Song','Soporific','Sound Blast','Stinking Gas',
130 'Sub-zero Smash','Venom Shell','Voracious Trunk','Yawn'
131 }
132
133 -- Breath-based spells
134 blue_magic_maps.Breath = S{
135 'Bad Breath','Flying Hip Press','Frost Breath','Heat Breath',
136 'Hecatomb Wave','Magnetite Cloud','Poison Breath','Radiant Breath','Self-Destruct',
137 'Thunder Breath','Vapor Spray','Wind Breath'
138 }
139
140 -- Stun spells
141 blue_magic_maps.Stun = S{
142 'Blitzstrahl','Frypan','Head Butt','Sudden Lunge','Tail slap','Temporal Shift',
143 'Thunderbolt','Whirl of Rage'
144 }
145
146 -- Healing spells
147 blue_magic_maps.Healing = S{
148 'Healing Breeze','Magic Fruit','Plenilune Embrace','Pollen','Restoral','White Wind',
149 'Wild Carrot'
150 }
151
152 -- Buffs that depend on blue magic skill
153 blue_magic_maps.SkillBasedBuff = S{
154 'Barrier Tusk','Diamondhide','Magic Barrier','Metallic Body','Plasma Charge',
155 'Pyric Bulwark','Reactor Cool',
156 }
157
158 -- Other general buffs
159 blue_magic_maps.Buff = S{
160 'Amplification','Animating Wail','Battery Charge','Carcharian Verve','Cocoon',
161 'Erratic Flutter','Exuviation','Fantod','Feather Barrier','Harden Shell',
162 'Memento Mori','Nat. Meditation','Occultation','Orcish Counterstance','Refueling',
163 'Regeneration','Saline Coat','Triumphant Roar','Warm-Up','Winds of Promyvion',
164 'Zephyr Mantle'
165 }
166
167
168 -- Spells that require Unbridled Learning to cast.
169 unbridled_spells = S{
170 'Absolute Terror','Bilgestorm','Blistering Roar','Bloodrake','Carcharian Verve',
171 'Crashing Thunder','Droning Whirlwind','Gates of Hades','Harden Shell','Polar Roar',
172 'Pyric Bulwark','Thunderbolt','Tourbillion','Uproot'
173 }
174 end
175
176 -------------------------------------------------------------------------------------------------------------------
177 -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
178 -------------------------------------------------------------------------------------------------------------------
179
180 -- Setup vars that are user-dependent. Can override this function in a sidecar file.
181 function user_setup()
182 state.OffenseMode:options('Normal', 'Acc', 'Refresh', 'Learning')
183 state.WeaponskillMode:options('Normal', 'Acc')
184 state.CastingMode:options('Normal', 'Resistant')
185 state.IdleMode:options('Normal', 'PDT', 'Learning')
186
187 gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -4%','Mag. Atk. Bns +26'}}
188
189 -- Additional local binds
190 send_command('bind ^` input /ja "Chain Affinity" <me>')
191 send_command('bind !` input /ja "Efflux" <me>')
192 send_command('bind @` input /ja "Burst Affinity" <me>')
193
194 update_combat_form()
195 select_default_macro_book()
196 end
197
198
199 -- Called when this job file is unloaded (eg: job change)
200 function user_unload()
201 send_command('unbind ^`')
202 send_command('unbind !`')
203 send_command('unbind @`')
204 end
205
206
207 -- Set up gear sets.
208 function init_gear_sets()
209 --------------------------------------
210 -- Start defining the sets
211 --------------------------------------
212
213 sets.buff['Burst Affinity'] = {feet="Mavi Basmak +1"}
214 sets.buff['Chain Affinity'] = {head="Mavi Kavuk +1"}
215 sets.buff.Convergence = {head="Luhlaza Keffiyeh"}
216 sets.buff.Diffusion = {feet="Luhlaza Charuqs"}
217 sets.buff.Enchainment = {body="Luhlaza Jubbah"}
218 sets.buff.Efflux = {legs="Mavi Tayt +1"}
219
220
221 -- Precast Sets
222
223 -- Precast sets to enhance JAs
224 sets.precast.JA['Azure Lore'] = {hands="Mirage Bazubands +2"}
225
226
227 -- Waltz set (chr and vit)
228 sets.precast.Waltz = {ammo="Sonia's Plectrum",
229 head="Uk'uxkaj Cap",
230 body="Vanir Cotehardie",hands="Buremte Gloves",ring1="Spiral Ring",
231 back="Iximulew Cape",waist="Caudata Belt",legs="Hagondes Pants",feet="Iuitl Gaiters +1"}
232
233 -- Don't need any special gear for Healing Waltz.
234 sets.precast.Waltz['Healing Waltz'] = {}
235
236 -- Fast cast sets for spells
237
238 sets.precast.FC = {ammo="Impatiens",
239 head="Haruspex Hat",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
240 body="Helios Jacket",hands="Helios Gloves",ring1="Prolix Ring",
241 back="Swith Cape +1",waist="Witful Belt",legs="Enif Cosciales",feet="Chelona Boots +1"}
242
243 sets.precast.FC['Blue Magic'] = set_combine(sets.precast.FC, {body="Mavi Mintan +2"})
244
245
246 -- Weaponskill sets
247 -- Default set for any weaponskill that isn't any more specifically defined
248 sets.precast.WS = {
249 head="Taeon Chapeau",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
250 body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
251 back="Atheling Mantle",waist="Twilight Belt",legs="Taeon Tights",feet="Iaeon Boots"}
252
253 sets.precast.WS.acc = set_combine(sets.precast.WS, {hands="Taeon Gloves"})
254
255 -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
256 sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {ring1="Aquasoul Ring",feet="Helios Boots"})
257
258 sets.precast.WS['Sanguine Blade'] = {
259 head="Helios Band",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
260 body="Hagondes Coat +1",hands="Helios Gloves",ring1="Fenrir Ring +1",ring2="Adoulin Ring",
261 back="Cornflower Cape",legs="Hagondes Pants +1",feet="Helios Boots"}
262
263
264 -- Midcast Sets
265 sets.midcast.FastRecast = {
266 head="Haruspex Hat",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
267 body="Helios Jacket",hands="Helios Gloves",ring1="Prolix Ring",
268 back="Swith Cape +1",waist="Witful Belt",legs="Hagondes Pants +1",feet="Helios Boots"}
269
270 sets.midcast['Blue Magic'] = {}
271
272 -- Physical Spells --
273
274 sets.midcast['Blue Magic'].Physical = {ammo="Mavi Tathlum",
275 head="Taeon Chapeau",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Steelflash Earring",
276 body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
277 back="Atheling Mantle",waist="Twilight Belt",legs="Taeon Tights",feet="Taeon Boots"}
278
279 sets.midcast['Blue Magic'].PhysicalAcc = {ammo="Jukukik Feather",
280 head="Taeon Chapeau",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Steelflash Earring",
281 body="Mavi Mintan +2",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Adoulin Ring",
282 back="Cornflower Cape",waist="Twilight Belt",legs="Taeon Tights",feet="Taeon Boots"}
283
284 sets.midcast['Blue Magic'].PhysicalStr = set_combine(sets.midcast['Blue Magic'].Physical,
285 {body="Taeon Tabard",hands="Taeon Gloves"})
286
287 sets.midcast['Blue Magic'].PhysicalDex = set_combine(sets.midcast['Blue Magic'].Physical,
288 {ammo="Jukukik Feather",body="Taeon Tabard",hands="Taeon Gloves",
289 waist="Chiner's Belt +1",legs="Taeon Boots"})
290
291 sets.midcast['Blue Magic'].PhysicalVit = set_combine(sets.midcast['Blue Magic'].Physical,
292 {body="Taeon Tabard",hands="Taeon Gloves",back="Oneiros Cappa"})
293
294 sets.midcast['Blue Magic'].PhysicalAgi = set_combine(sets.midcast['Blue Magic'].Physical,
295 {body="Taeon Tabard",hands="Hagondes Cuffs",ring2="Stormsoul Ring",
296 waist="Scouter's Rope",feet="Taeon Boots"})
297
298 sets.midcast['Blue Magic'].PhysicalInt = set_combine(sets.midcast['Blue Magic'].Physical,
299 {ear1="Friomisi Earring",body="Hagondes Coat +1",hands="Helios Gloves",
300 ring2="Icesoul Ring",back="Cornflower Cape",feet="Telchine Pigaches"})
301
302 sets.midcast['Blue Magic'].PhysicalMnd = set_combine(sets.midcast['Blue Magic'].Physical,
303 {ear1="Lifestorm Earring",body="Telchine Chasuble",hands="Telchine Gloves",
304 ring2="Aquasoul Ring",back="Swith Cape +1"})
305
306 sets.midcast['Blue Magic'].PhysicalChr = set_combine(sets.midcast['Blue Magic'].Physical,
307 {body="Telchine Chasuble",hands="Telchine Gloves",back="Swith Cape +1",
308 waist="Chaac Belt"})
309
310 sets.midcast['Blue Magic'].PhysicalHP = set_combine(sets.midcast['Blue Magic'].Physical)
311
312
313 -- Magical Spells --
314
315 sets.midcast['Blue Magic'].Magical = {ammo="Dosis Tathlum",
316 head="Helios Band",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
317 body="Hagondes Coat +1",hands="Helios Gloves",ring1="Fenrir Ring +1",ring2="Adoulin Ring",
318 back="Cornflower Cape",waist="Aswang Sash",legs="Hagondes Pants +1",feet="Helios Boots"}
319
320 sets.midcast['Blue Magic'].Magical.Resistant = set_combine(sets.midcast['Blue Magic'].Magical,
321 {body="Hagondes Coat +1",ring1="Sangoma Ring",legs="Hagondes Pants +1",feet="Helios Boots"})
322
323 sets.midcast['Blue Magic'].MagicalMnd = set_combine(sets.midcast['Blue Magic'].Magical,
324 {ring1="Aquasoul Ring"})
325
326 sets.midcast['Blue Magic'].MagicalChr = set_combine(sets.midcast['Blue Magic'].Magical)
327
328 sets.midcast['Blue Magic'].MagicalVit = set_combine(sets.midcast['Blue Magic'].Magical,
329 {ring1="Spiral Ring"})
330
331 sets.midcast['Blue Magic'].MagicalDex = set_combine(sets.midcast['Blue Magic'].Magical)
332
333 sets.midcast['Blue Magic'].MagicAccuracy = {ammo="Mavi Tathlum",
334 head="Telchine Cap",neck="Stoicheion Medal",ear1="Enchanter Earring +1",ear2="Psystorm Earring",
335 body="Mavi Mintan +2",hands="Hagondes Cuffs",ring1="Adoulin Ring",ring2="Fenrir Ring +1"
336 back="Cornflower Cape",legs="Iuitl Tights",feet="Helios Boots"}
337
338 -- Breath Spells --
339
340 sets.midcast['Blue Magic'].Breath = {ammo="Mavi Tathlum",
341 head="Telchine Cap",neck="Ej Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
342 body="Vanir Cotehardie",hands="Assimilator's Bazubands +1",ring1="K'ayres Ring",ring2="Beeline Ring",
343 back="Refraction Cape",legs="Enif Cosciales",feet="Iuitl Gaiters +1"}
344
345 -- Other Types --
346
347 sets.midcast['Blue Magic'].Stun = set_combine(sets.midcast['Blue Magic'].MagicAccuracy,
348 {waist="Chaac Belt"})
349
350 sets.midcast['Blue Magic']['White Wind'] = {
351 head="Whirlpool Mask",neck="Lavalier +1",ear1="Bloodgem Earring",ear2="Loquacious Earring",
352 body="Vanir Cotehardie",hands="Buremte Gloves",ring1="K'ayres Ring",ring2="Meridian Ring",
353 back="Fravashi Mantle",waist="Hurch'lan Sash",legs="Enif Cosciales",feet="Hagondes Sabots"}
354
355 sets.midcast['Blue Magic'].Healing = {
356 head="Telchine Cap",ear1="Lifestorm Earring",ear2="Loquacious Earring",
357 body="Telchine Chasuble",hands="Telchine Gloves",ring1="Aquasoul Ring",ring2="Asklepian Ring",
358 back="Swith Cape +1"waist="Chuq'aba Belt",legs="Telchine Braconi",feet="Telchine Pigaches"}
359
360 sets.midcast['Blue Magic'].SkillBasedBuff = {ammo="Mavi Tathlum",
361 head="Luhlaza Keffiyeh",
362 body="Assimilator's Jubbah",
363 back="Cornflower Cape",legs="Mavi Tayt +1",feet="Luhlaza Charuqs"}
364
365 sets.midcast['Blue Magic'].Buff = {}
366
367 sets.midcast.Protect = {ring1="Sheltered Ring"}
368 sets.midcast.Protectra = {ring1="Sheltered Ring"}
369 sets.midcast.Shell = {ring1="Sheltered Ring"}
370 sets.midcast.Shellra = {ring1="Sheltered Ring"}
371
372
373
374
375 -- Sets to return to when not performing an action.
376
377 -- Gear for learning spells: +skill and AF hands.
378 sets.Learning = {ammo="Mavi Tathlum",hands="Assimilator's Bazubands +1"}
379 --head="Luhlaza Keffiyeh",
380 --body="Assimilator's Jubbah",hands="Assimilator's Bazubands +1",
381 --back="Cornflower Cape",legs="Mavi Tayt +1",feet="Luhlaza Charuqs"}
382
383
384 sets.latent_refresh = {waist="Fucho-no-obi"}
385
386 -- Resting sets
387 sets.resting = {
388 head="Ocelomeh Headpiece",neck="Wiglen Gorget",
389 body="Hagondes Coat +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
390 waist="Austerity Belt",feet="Chelona Boots +1"}
391
392 -- Idle sets
393 sets.idle = {ammo="Impatiens",
394 head="Helios Band",neck="Wiglen Gorget",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
395 body="Hagondes Coat +1",hands="Hagondes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
396 back="Cornflower Cape",waist="Aswang Sash",legs="Crimson Cuisses",feet="Helios Boots"}
397
398 sets.idle.PDT = {ammo="Impatiens",
399 head="Helios Band",neck="Wiglen Gorget",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
400 body="Hagondes Coat +1",hands="Hagondes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
401 back="Cornflower Cape",waist="Aswang Sash",legs="Crimson Cuisses",feet="Helios Boots"}
402
403 sets.idle.Town = {main="Buramenk'ah",ammo="Impatiens",
404 head="Mavi Kavuk +2",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
405 body="Luhlaza Jubbah",hands="Assimilator's Bazubands +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
406 back="Atheling Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Luhlaza Charuqs"}
407
408 sets.idle.Learning = set_combine(sets.idle, sets.Learning)
409
410
411 -- Defense sets
412 sets.defense.PDT = {ammo="Iron Gobbet",
413 head="Whirlpool Mask",neck="Wiglen Gorget",ear1="Bloodgem Earring",
414 body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Defending Ring",ring2=gear.DarkRing.physical,
415 back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
416
417 sets.defense.MDT = {ammo="Demonry Stone",
418 head="Whirlpool Mask",neck="Twilight Torque",ear1="Bloodgem Earring",
419 body="Hagondes Coat",hands="Iuitl Wristbands",ring1="Defending Ring",ring2="Shadow Ring",
420 back="Engulfer Cape",waist="Flume Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
421
422 sets.Kiting = {legs="Crimson Cuisses"}
423
424 -- Engaged sets
425
426 -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
427 -- sets if more refined versions aren't defined.
428 -- If you create a set with both offense and defense modes, the offense mode should be first.
429 -- EG: sets.engaged.Dagger.Accuracy.Evasion
430
431 -- Normal melee group
432 sets.engaged = {ammo="Focal Orb",
433 head="Taeon Chapeau",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
434 body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
435 back="Atheling Mantle",waist="Chiner's Belt +1",legs="Taeon Tights",feet="Taeon Boots"}
436
437 sets.engaged.Acc = {ammo="Mavi Tathlum",
438 head="Taeon Chapeau",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
439 body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
440 back="Cornflower Cape",waist="Chiner's Belt +1",legs="Taeon Tights",feet="Taeon Boots"}
441
442 sets.engaged.Refresh = {ammo="Dosis Tathlum",
443 head="Helios Band",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
444 body="Hagondes Coat +1",hands="Helios Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
445 back="Atheling Mantle",waist="Aswang Sash",legs="Hagondes Pants +1",feet="Helios Boots"}
446
447 sets.engaged.DW = {ammo="Jukukik Feather",
448 head="Whirlpool Mask",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
449 body="Luhlaza Jubbah",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
450 back="Atheling Mantle",waist="Windbuffet Belt",legs="Manibozho Brais",feet="Iuitl Gaiters +1"}
451
452 sets.engaged.DW.Acc = {ammo="Jukukik Feather",
453 head="Whirlpool Mask",neck="Ej Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
454 body="Luhlaza Jubbah",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
455 back="Letalis Mantle",waist="Hurch'lan Sash",legs="Manibozho Brais",feet="Qaaxo Leggings"}
456
457 sets.engaged.DW.Refresh = {ammo="Jukukik Feather",
458 head="Whirlpool Mask",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
459 body="Hagondes Coat +1",hands="Assimilator's Bazubands +1",ring1="Rajas Ring",ring2="Epona's Ring",
460 back="Letalis Mantle",waist="Windbuffet Belt",legs="Manibozho Brais",feet="Qaaxo Leggings"}
461
462 sets.engaged.Learning = set_combine(sets.engaged, sets.Learning)
463 sets.engaged.DW.Learning = set_combine(sets.engaged.DW, sets.Learning)
464
465
466 sets.self_healing = {ring1="Aquasoul Ring",ring2="Asklepian Ring"}
467 end
468
469 -------------------------------------------------------------------------------------------------------------------
470 -- Job-specific hooks for standard casting events.
471 -------------------------------------------------------------------------------------------------------------------
472
473 -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
474 -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
475 function job_precast(spell, action, spellMap, eventArgs)
476 if unbridled_spells:contains(spell.english) and not state.Buff['Unbridled Learning'] then
477 eventArgs.cancel = true
478 windower.send_command('@input /ja "Unbridled Learning" <me>; wait 1.5; input /ma "'..spell.name..'" '..spell.target.name)
479 end
480 end
481
482 -- Run after the default midcast() is done.
483 -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
484 function job_post_midcast(spell, action, spellMap, eventArgs)
485 -- Add enhancement gear for Chain Affinity, etc.
486 if spell.skill == 'Blue Magic' then
487 for buff,active in pairs(state.Buff) do
488 if active and sets.buff[buff] then
489 equip(sets.buff[buff])
490 end
491 end
492 if spellMap == 'Healing' and spell.target.type == 'SELF' and sets.self_healing then
493 equip(sets.self_healing)
494 end
495 end
496
497 -- If in learning mode, keep on gear intended to help with that, regardless of action.
498 if state.OffenseMode.value == 'Learning' then
499 equip(sets.Learning)
500 end
501 end
502
503
504 -------------------------------------------------------------------------------------------------------------------
505 -- Job-specific hooks for non-casting events.
506 -------------------------------------------------------------------------------------------------------------------
507
508 -- Called when a player gains or loses a buff.
509 -- buff == buff gained or lost
510 -- gain == true if the buff was gained, false if it was lost.
511 function job_buff_change(buff, gain)
512 if state.Buff[buff] ~= nil then
513 state.Buff[buff] = gain
514 end
515 end
516
517 -------------------------------------------------------------------------------------------------------------------
518 -- User code that supplements standard library decisions.
519 -------------------------------------------------------------------------------------------------------------------
520
521 -- Custom spell mapping.
522 -- Return custom spellMap value that can override the default spell mapping.
523 -- Don't return anything to allow default spell mapping to be used.
524 function job_get_spell_map(spell, default_spell_map)
525 if spell.skill == 'Blue Magic' then
526 for category,spell_list in pairs(blue_magic_maps) do
527 if spell_list:contains(spell.english) then
528 return category
529 end
530 end
531 end
532 end
533
534 -- Modify the default idle set after it was constructed.
535 function customize_idle_set(idleSet)
536 if player.mpp < 51 then
537 set_combine(idleSet, sets.latent_refresh)
538 end
539 return idleSet
540 end
541
542 -- Called by the 'update' self-command, for common needs.
543 -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
544 function job_update(cmdParams, eventArgs)
545 update_combat_form()
546 end
547
548
549 -------------------------------------------------------------------------------------------------------------------
550 -- Utility functions specific to this job.
551 -------------------------------------------------------------------------------------------------------------------
552
553 function update_combat_form()
554 -- Check for H2H or single-wielding
555 if player.equipment.sub == "Genbu's Shield" or player.equipment.sub == 'empty' then
556 state.CombatForm:reset()
557 else
558 state.CombatForm:set('DW')
559 end
560 end
561
562
563 -- Select default macro book on initial load or subjob change.
564 function select_default_macro_book()
565 -- Default macro set/book
566 if player.sub_job == 'DNC' then
567 set_macro_page(2, 7)
568 else
569 set_macro_page(1, 7)
570 end
571 end
572
573
Quetzalcoatl.Eithin
Server: Quetzalcoatl
Game: FFXI
Posts: 10
By Quetzalcoatl.Eithin 2015-04-25 09:32:43
Oh! perhaps the double column of line numbers? was a copy paste just noticed it :/
Going to edit the second column out. will update shortly.
Quetzalcoatl.Eithin
Server: Quetzalcoatl
Game: FFXI
Posts: 10
By Quetzalcoatl.Eithin 2015-04-25 10:00:57
Fixed the problem! thank you for your help @Quixacotl
Quetzalcoatl.Orestes
Server: Quetzalcoatl
Game: FFXI
Posts: 430
By Quetzalcoatl.Orestes 2015-04-25 10:44:34
Just what you posted looks fine to me. Your lua seems to not load because it cannot find the correct library files (motes includes version 2).
1. Are your main luas and the lib files in the GearSwap/data folder?
2. Are you using a sidecar?
3. Are you using Kinematics latest library files (version 2) from here? There are 7 files and you need them all to work.
It might be better just to post your entire lua.
When posting codes be sure to contain it within the [code ] [/code ] tags (minus the spaces) so that it shows in a sized window rather than half the forum page which would be painful to read. Better yet, use pastebin.com and post the link.
Motes luas have been included with windower for almost a year now. No need to tell people they have to download them.
Quetzalcoatl.Eithin
Server: Quetzalcoatl
Game: FFXI
Posts: 10
By Quetzalcoatl.Eithin 2015-04-25 11:06:16
I actually have another issue hopefully someone can help me with.
I've noticed when I play that the gearswapping seems to be inconsistent, for example, casting restoral GS goes to my cure set no problem, but then going back to my idle set it will miss certain pieces. Now if I cast restoral again, upon returning to my idle set it will get the pieces it missed the first time but miss different pieces this time.
I have checked all of my spelling and made sure all pieces are in my inventory/wardrobe.
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-26 01:30:30
Quetzalcoatl.Orestes said: »Just what you posted looks fine to me. Your lua seems to not load because it cannot find the correct library files (motes includes version 2).
1. Are your main luas and the lib files in the GearSwap/data folder?
2. Are you using a sidecar?
3. Are you using Kinematics latest library files (version 2) from here? There are 7 files and you need them all to work.
It might be better just to post your entire lua.
When posting codes be sure to contain it within the [code ] [/code ] tags (minus the spaces) so that it shows in a sized window rather than half the forum page which would be painful to read. Better yet, use pastebin.com and post the link.
Motes luas have been included with windower for almost a year now. No need to tell people they have to download them. Motes may be included with Windower but time and time again the same question gets asked, "Why won't my Motes lua load?" and for the most part, the answer lies in one of those 3 options I gave. So I stand by my answer.
I like to believe people post here because they need help... no matter how trivial that question may seem to some others. I like to help, not to put any feather on my cap or to prove anything. I once posted a SpellCast question back in the heyday and got a reply to the effect that it was a stupid question to ask. Well it wasn't stupid to me it was a big deal. Fortunately I had one truly helpful, knowledgeable and sympathetic person point me in the right direction. Now I find helping others with GS intriguing. It's like solving a puzzle. It's also my way of returning a favor.
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-26 02:17:26
Quetzalcoatl.Eithin said: »I actually have another issue hopefully someone can help me with.
I've noticed when I play that the gearswapping seems to be inconsistent, for example, casting restoral GS goes to my cure set no problem, but then going back to my idle set it will miss certain pieces. Now if I cast restoral again, upon returning to my idle set it will get the pieces it missed the first time but miss different pieces this time.
I have checked all of my spelling and made sure all pieces are in my inventory/wardrobe. Just eyeballing it, line 410 - "sets.midcast['Blue Magic'].Healing" you're missing a comma after back="Swith Cape +1". Should be back="Swith Cape +1", (note the comma).
Quetzalcoatl.Eithin
Server: Quetzalcoatl
Game: FFXI
Posts: 10
By Quetzalcoatl.Eithin 2015-04-26 09:30:04
Thank you. However, that is not the problem.
Quetzalcoatl.Orestes
Server: Quetzalcoatl
Game: FFXI
Posts: 430
By Quetzalcoatl.Orestes 2015-04-26 12:47:44
Quetzalcoatl.Orestes said: »Just what you posted looks fine to me. Your lua seems to not load because it cannot find the correct library files (motes includes version 2).
1. Are your main luas and the lib files in the GearSwap/data folder?
2. Are you using a sidecar?
3. Are you using Kinematics latest library files (version 2) from here? There are 7 files and you need them all to work.
It might be better just to post your entire lua.
When posting codes be sure to contain it within the [code ] [/code ] tags (minus the spaces) so that it shows in a sized window rather than half the forum page which would be painful to read. Better yet, use pastebin.com and post the link.
Motes luas have been included with windower for almost a year now. No need to tell people they have to download them. Motes may be included with Windower but time and time again the same question gets asked, "Why won't my Motes lua load?" and for the most part, the answer lies in one of those 3 options I gave. So I stand by my answer.
I like to believe people post here because they need help... no matter how trivial that question may seem to some others. I like to help, not to put any feather on my cap or to prove anything. I once posted a SpellCast question back in the heyday and got a reply to the effect that it was a stupid question to ask. Well it wasn't stupid to me it was a big deal. Fortunately I had one truly helpful, knowledgeable and sympathetic person point me in the right direction. Now I find helping others with GS intriguing. It's like solving a puzzle. It's also my way of returning a favor.
I commend you for all the help you do. Sorry if that seemed like a jab at you. I didn't post that without reason though.
If somebody is saying Mote's luas won't load, there's only a few likely reasons. They either don't have the gearswap addon loaded. Their resources are horribly outdated, or they have old copies of mote's libs residing in their data folder (from downloading them).
Tossing Mote's files in your data folder can actually do harm to the user. Gearswap's lua include path checks lib, then data. Anything inside data will take precedence over Mote's files inside lib. If Mote was to fix something critical, any user who tossed his files in data would come here looking for fixes to their broken gearswap, as their files would block them from loading his.
None of this technically matters since Mote has been MIA for 6 months. That doesn't mean he will never update them again though, and following good practice is worthwhile.
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-26 16:21:37
Quetzalcoatl.Orestes said: »Quetzalcoatl.Orestes said: »Just what you posted looks fine to me. Your lua seems to not load because it cannot find the correct library files (motes includes version 2).
1. Are your main luas and the lib files in the GearSwap/data folder?
2. Are you using a sidecar?
3. Are you using Kinematics latest library files (version 2) from here? There are 7 files and you need them all to work.
It might be better just to post your entire lua.
When posting codes be sure to contain it within the [code ] [/code ] tags (minus the spaces) so that it shows in a sized window rather than half the forum page which would be painful to read. Better yet, use pastebin.com and post the link.
Motes luas have been included with windower for almost a year now. No need to tell people they have to download them. Motes may be included with Windower but time and time again the same question gets asked, "Why won't my Motes lua load?" and for the most part, the answer lies in one of those 3 options I gave. So I stand by my answer.
I like to believe people post here because they need help... no matter how trivial that question may seem to some others. I like to help, not to put any feather on my cap or to prove anything. I once posted a SpellCast question back in the heyday and got a reply to the effect that it was a stupid question to ask. Well it wasn't stupid to me it was a big deal. Fortunately I had one truly helpful, knowledgeable and sympathetic person point me in the right direction. Now I find helping others with GS intriguing. It's like solving a puzzle. It's also my way of returning a favor.
I commend you for all the help you do. Sorry if that seemed like a jab at you. I didn't post that without reason though.
If somebody is saying Mote's luas won't load, there's only a few likely reasons. They either don't have the gearswap addon loaded. Their resources are horribly outdated, or they have old copies of mote's libs residing in their data folder (from downloading them).
Tossing Mote's files in your data folder can actually do harm to the user. Gearswap's lua include path checks lib, then data. Anything inside data will take precedence over Mote's files inside lib. If Mote was to fix something critical, any user who tossed his files in data would come here looking for fixes to their broken gearswap, as their files would block them from loading his.
None of this technically matters since Mote has been MIA for 6 months. That doesn't mean he will never update them again though, and following good practice is worthwhile. Orestes you are absolutely correct and once again I have to admit that I stand corrected. I knew about the libs folder but didn't see the check paths as you had just explained it. Thank you for enlightening me.
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-26 16:45:10
Quetzalcoatl.Eithin said: »Thank you. However, that is not the problem. It would be more helpful to us if you can post your lua since we don't have much else to go on.
Quetzalcoatl.Eithin
Server: Quetzalcoatl
Game: FFXI
Posts: 10
By Quetzalcoatl.Eithin 2015-04-26 20:24:59
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['Burst Affinity'] = buffactive['Burst Affinity'] or false
state.Buff['Chain Affinity'] = buffactive['Chain Affinity'] or false
state.Buff.Convergence = buffactive.Convergence or false
state.Buff.Diffusion = buffactive.Diffusion or false
state.Buff.Efflux = buffactive.Efflux or false
state.Buff['Unbridled Learning'] = buffactive['Unbridled Learning'] or false
blue_magic_maps = {}
-- Mappings for gear sets to use for various blue magic spells.
-- While Str isn't listed for each, it's generally assumed as being at least
-- moderately signficant, even for spells with other mods.
-- Physical Spells --
-- Physical spells with no particular (or known) stat mods
blue_magic_maps.Physical = S{
'Bilgestorm'
}
-- Spells with heavy accuracy penalties, that need to prioritize accuracy first.
blue_magic_maps.PhysicalAcc = S{
'Heavy Strike',
}
-- Physical spells with Str stat mod
blue_magic_maps.PhysicalStr = S{
'Battle Dance','Bloodrake','Death Scissors','Dimensional Death',
'Empty Thrash','Quadrastrike','Sinker Drill','Spinal Cleave',
'Uppercut','Vertical Cleave'
}
-- Physical spells with Dex stat mod
blue_magic_maps.PhysicalDex = S{
'Amorphic Spikes','Asuran Claws','Barbed Crescent','Claw Cyclone','Disseverment',
'Foot Kick','Frenetic Rip','Goblin Rush','Hysteric Barrage','Paralyzing Triad',
'Seedspray','Sickle Slash','Smite of Rage','Terror Touch','Thrashing Assault',
'Vanity Dive'
}
-- Physical spells with Vit stat mod
blue_magic_maps.PhysicalVit = S{
'Body Slam','Cannonball','Delta Thrust','Glutinous Dart','Grand Slam',
'Power Attack','Quad. Continuum','Sprout Smack','Sub-zero Smash'
}
-- Physical spells with Agi stat mod
blue_magic_maps.PhysicalAgi = S{
'Benthic Typhoon','Feather Storm','Helldive','Hydro Shot','Jet Stream',
'Pinecone Bomb','Spiral Spin','Wild Oats'
}
-- Physical spells with Int stat mod
blue_magic_maps.PhysicalInt = S{
'Mandibular Bite','Queasyshroom'
}
-- Physical spells with Mnd stat mod
blue_magic_maps.PhysicalMnd = S{
'Ram Charge','Screwdriver','Tourbillion'
}
-- Physical spells with Chr stat mod
blue_magic_maps.PhysicalChr = S{
'Bludgeon'
}
-- Physical spells with HP stat mod
blue_magic_maps.PhysicalHP = S{
'Final Sting'
}
-- Magical Spells --
-- Magical spells with the typical Int mod
blue_magic_maps.Magical = S{
'Blastbomb','Blazing Bound','Bomb Toss','Cursed Sphere','Dark Orb','Death Ray',
'Diffusion Ray','Droning Whirlwind','Embalming Earth','Firespit','Foul Waters',
'Ice Break','Leafstorm','Maelstrom','Rail Cannon','Regurgitation','Rending Deluge',
'Retinal Glare','Subduction','Tem. Upheaval','Water Bomb'
}
-- Magical spells with a primary Mnd mod
blue_magic_maps.MagicalMnd = S{
'Acrid Stream','Evryone. Grudge','Magic Hammer','Mind Blast'
}
-- Magical spells with a primary Chr mod
blue_magic_maps.MagicalChr = S{
'Eyes On Me','Mysterious Light'
}
-- Magical spells with a Vit stat mod (on top of Int)
blue_magic_maps.MagicalVit = S{
'Thermal Pulse'
}
-- Magical spells with a Dex stat mod (on top of Int)
blue_magic_maps.MagicalDex = S{
'Charged Whisker','Gates of Hades'
}
-- Magical spells (generally debuffs) that we want to focus on magic accuracy over damage.
-- Add Int for damage where available, though.
blue_magic_maps.MagicAccuracy = S{
'1000 Needles','Absolute Terror','Actinic Burst','Auroral Drape','Awful Eye',
'Blank Gaze','Blistering Roar','Blood Drain','Blood Saber','Chaotic Eye',
'Cimicine Discharge','Cold Wave','Corrosive Ooze','Demoralizing Roar','Digest',
'Dream Flower','Enervation','Feather Tickle','Filamented Hold','Frightful Roar',
'Geist Wall','Hecatomb Wave','Infrasonics','Jettatura','Light of Penance',
'Lowing','Mind Blast','Mortal Ray','MP Drainkiss','Osmosis','Reaving Wind',
'Sandspin','Sandspray','Sheep Song','Soporific','Sound Blast','Stinking Gas',
'Sub-zero Smash','Venom Shell','Voracious Trunk','Yawn'
}
-- Breath-based spells
blue_magic_maps.Breath = S{
'Bad Breath','Flying Hip Press','Frost Breath','Heat Breath',
'Hecatomb Wave','Magnetite Cloud','Poison Breath','Radiant Breath','Self-Destruct',
'Thunder Breath','Vapor Spray','Wind Breath'
}
-- Stun spells
blue_magic_maps.Stun = S{
'Blitzstrahl','Frypan','Head Butt','Sudden Lunge','Tail slap','Temporal Shift',
'Thunderbolt','Whirl of Rage'
}
-- Healing spells
blue_magic_maps.Healing = S{
'Healing Breeze','Magic Fruit','Plenilune Embrace','Pollen','Restoral','White Wind',
'Wild Carrot'
}
-- Buffs that depend on blue magic skill
blue_magic_maps.SkillBasedBuff = S{
'Barrier Tusk','Diamondhide','Magic Barrier','Metallic Body','Plasma Charge',
'Pyric Bulwark','Reactor Cool',
}
-- Other general buffs
blue_magic_maps.Buff = S{
'Amplification','Animating Wail','Battery Charge','Carcharian Verve','Cocoon',
'Erratic Flutter','Exuviation','Fantod','Feather Barrier','Harden Shell',
'Memento Mori','Nat. Meditation','Occultation','Orcish Counterstance','Refueling',
'Regeneration','Saline Coat','Triumphant Roar','Warm-Up','Winds of Promyvion',
'Zephyr Mantle'
}
-- Spells that require Unbridled Learning to cast.
unbridled_spells = S{
'Absolute Terror','Bilgestorm','Blistering Roar','Bloodrake','Carcharian Verve',
'Crashing Thunder','Droning Whirlwind','Gates of Hades','Harden Shell','Polar Roar',
'Pyric Bulwark','Thunderbolt','Tourbillion','Uproot'
}
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', 'Acc', 'Refresh', 'Learning')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'PDT', 'Learning')
gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -4%','Mag. Atk. Bns +26'}}
-- Additional local binds
send_command('bind ^` input /ja "Chain Affinity" <me>')
send_command('bind !` input /ja "Efflux" <me>')
send_command('bind @` input /ja "Burst Affinity" <me>')
update_combat_form()
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind @`')
end
-- Set up gear sets.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
sets.buff['Burst Affinity'] = {feet="Mavi Basmak +1"}
sets.buff['Chain Affinity'] = {head="Mavi Kavuk +1"}
sets.buff.Convergence = {head="Luhlaza Keffiyeh"}
sets.buff.Diffusion = {feet="Luhlaza Charuqs"}
sets.buff.Enchainment = {body="Luhlaza Jubbah"}
sets.buff.Efflux = {legs="Mavi Tayt +1"}
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Azure Lore'] = {hands="Mirage Bazubands +2"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {ammo="Sonia's Plectrum",
head="Uk'uxkaj Cap",
body="Vanir Cotehardie",hands="Buremte Gloves",ring1="Spiral Ring",
back="Iximulew Cape",waist="Caudata Belt",legs="Hagondes Pants",feet="Iuitl Gaiters +1"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",
head="Haruspex Hat",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
body="Helios Jacket",hands="Helios Gloves",ring1="Prolix Ring",
back="Swith Cape +1",waist="Witful Belt",legs="Enif Cosciales",feet="Chelona Boots +1"}
sets.precast.FC['Blue Magic'] = set_combine(sets.precast.FC, {body="Mavi Mintan +2"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
head="Taeon Chapeau",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Twilight Belt",legs="Taeon Tights",feet="Iaeon Boots"}
sets.precast.WS.acc = set_combine(sets.precast.WS, {hands="Taeon Gloves"})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {ring1="Aquasoul Ring",feet="Helios Boots"})
sets.precast.WS['Sanguine Blade'] = {
head="Helios Band",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Hagondes Coat +1",hands="Helios Gloves",ring1="Fenrir Ring +1",ring2="Adoulin Ring",
back="Cornflower Cape",legs="Hagondes Pants +1",feet="Helios Boots"}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Haruspex Hat",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
body="Helios Jacket",hands="Helios Gloves",ring1="Prolix Ring",
back="Swith Cape +1",waist="Witful Belt",legs="Hagondes Pants +1",feet="Helios Boots"}
sets.midcast['Blue Magic'] = {}
-- Physical Spells --
sets.midcast['Blue Magic'].Physical = {ammo="Mavi Tathlum",
head="Taeon Chapeau",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Steelflash Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Twilight Belt",legs="Taeon Tights",feet="Taeon Boots"}
sets.midcast['Blue Magic'].PhysicalAcc = {ammo="Jukukik Feather",
head="Taeon Chapeau",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Steelflash Earring",
body="Mavi Mintan +2",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Adoulin Ring",
back="Cornflower Cape",waist="Twilight Belt",legs="Taeon Tights",feet="Taeon Boots"}
sets.midcast['Blue Magic'].PhysicalStr = set_combine(sets.midcast['Blue Magic'].Physical,
{body="Taeon Tabard",hands="Taeon Gloves"})
sets.midcast['Blue Magic'].PhysicalDex = set_combine(sets.midcast['Blue Magic'].Physical,
{ammo="Jukukik Feather",body="Taeon Tabard",hands="Taeon Gloves",
waist="Chiner's Belt +1",legs="Taeon Boots"})
sets.midcast['Blue Magic'].PhysicalVit = set_combine(sets.midcast['Blue Magic'].Physical,
{body="Taeon Tabard",hands="Taeon Gloves",back="Oneiros Cappa"})
sets.midcast['Blue Magic'].PhysicalAgi = set_combine(sets.midcast['Blue Magic'].Physical,
{body="Taeon Tabard",hands="Hagondes Cuffs",ring2="Stormsoul Ring",
waist="Scouter's Rope",feet="Taeon Boots"})
sets.midcast['Blue Magic'].PhysicalInt = set_combine(sets.midcast['Blue Magic'].Physical,
{ear1="Friomisi Earring",body="Hagondes Coat +1",hands="Helios Gloves",
ring2="Icesoul Ring",back="Cornflower Cape",feet="Telchine Pigaches"})
sets.midcast['Blue Magic'].PhysicalMnd = set_combine(sets.midcast['Blue Magic'].Physical,
{ear1="Lifestorm Earring",body="Telchine Chasuble",hands="Telchine Gloves",
ring2="Aquasoul Ring",back="Swith Cape +1"})
sets.midcast['Blue Magic'].PhysicalChr = set_combine(sets.midcast['Blue Magic'].Physical,
{body="Telchine Chasuble",hands="Telchine Gloves",back="Swith Cape +1",
waist="Chaac Belt"})
sets.midcast['Blue Magic'].PhysicalHP = set_combine(sets.midcast['Blue Magic'].Physical)
-- Magical Spells --
sets.midcast['Blue Magic'].Magical = {ammo="Dosis Tathlum",
head="Helios Band",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Hagondes Coat +1",hands="Helios Gloves",ring1="Fenrir Ring +1",ring2="Adoulin Ring",
back="Cornflower Cape",waist="Aswang Sash",legs="Hagondes Pants +1",feet="Helios Boots"}
sets.midcast['Blue Magic'].Magical.Resistant = set_combine(sets.midcast['Blue Magic'].Magical,
{body="Hagondes Coat +1",ring1="Sangoma Ring",legs="Hagondes Pants +1",feet="Helios Boots"})
sets.midcast['Blue Magic'].MagicalMnd = set_combine(sets.midcast['Blue Magic'].Magical,
{ring1="Aquasoul Ring"})
sets.midcast['Blue Magic'].MagicalChr = set_combine(sets.midcast['Blue Magic'].Magical)
sets.midcast['Blue Magic'].MagicalVit = set_combine(sets.midcast['Blue Magic'].Magical,
{ring1="Spiral Ring"})
sets.midcast['Blue Magic'].MagicalDex = set_combine(sets.midcast['Blue Magic'].Magical)
sets.midcast['Blue Magic'].MagicAccuracy = {ammo="Mavi Tathlum",
head="Telchine Cap",neck="Stoicheion Medal",ear1="Enchanter Earring +1",ear2="Psystorm Earring",
body="Mavi Mintan +2",hands="Hagondes Cuffs",ring1="Adoulin Ring",ring2="Fenrir Ring +1",
back="Cornflower Cape",legs="Iuitl Tights",feet="Helios Boots"}
-- Breath Spells --
sets.midcast['Blue Magic'].Breath = {ammo="Mavi Tathlum",
head="Telchine Cap",neck="Ej Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Vanir Cotehardie",hands="Assimilator's Bazubands +1",ring1="K'ayres Ring",ring2="Beeline Ring",
back="Refraction Cape",legs="Enif Cosciales",feet="Iuitl Gaiters +1"}
-- Other Types --
sets.midcast['Blue Magic'].Stun = set_combine(sets.midcast['Blue Magic'].MagicAccuracy,
{waist="Chaac Belt"})
sets.midcast['Blue Magic']['White Wind'] = {
head="Whirlpool Mask",neck="Lavalier +1",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Buremte Gloves",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Fravashi Mantle",waist="Hurch'lan Sash",legs="Enif Cosciales",feet="Hagondes Sabots"}
sets.midcast['Blue Magic'].Healing = {
head="Telchine Cap",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Telchine Chasuble",hands="Telchine Gloves",ring1="Aquasoul Ring",ring2="Asklepian Ring",
back="Swith Cape +1",waist="Chuq'aba Belt",legs="Telchine Braconi",feet="Telchine Pigaches"}
sets.midcast['Blue Magic'].SkillBasedBuff = {ammo="Mavi Tathlum",
head="Luhlaza Keffiyeh",
body="Assimilator's Jubbah",
back="Cornflower Cape",legs="Mavi Tayt +1",feet="Luhlaza Charuqs"}
sets.midcast['Blue Magic'].Buff = {}
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Protectra = {ring1="Sheltered Ring"}
sets.midcast.Shell = {ring1="Sheltered Ring"}
sets.midcast.Shellra = {ring1="Sheltered Ring"}
-- Sets to return to when not performing an action.
-- Gear for learning spells: +skill and AF hands.
sets.Learning = {ammo="Mavi Tathlum",hands="Assimilator's Bazubands +1"}
--head="Luhlaza Keffiyeh",
--body="Assimilator's Jubbah",hands="Assimilator's Bazubands +1",
--back="Cornflower Cape",legs="Mavi Tayt +1",feet="Luhlaza Charuqs"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Resting sets
sets.resting = {
head="Ocelomeh Headpiece",neck="Wiglen Gorget",
body="Hagondes Coat +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",feet="Chelona Boots +1"}
-- Idle sets
sets.idle = {ammo="Impatiens",
head="Helios Band",neck="Wiglen Gorget",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Hagondes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Cornflower Cape",waist="Aswang Sash",legs="Crimson Cuisses",feet="Helios Boots"}
sets.idle.PDT = {ammo="Impatiens",
head="Helios Band",neck="Wiglen Gorget",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Hagondes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Cornflower Cape",waist="Aswang Sash",legs="Crimson Cuisses",feet="Helios Boots"}
sets.idle.Town = {main="Buramenk'ah",ammo="Impatiens",
head="Mavi Kavuk +2",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Luhlaza Jubbah",hands="Assimilator's Bazubands +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Atheling Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Luhlaza Charuqs"}
sets.idle.Learning = set_combine(sets.idle, sets.Learning)
-- Defense sets
sets.defense.PDT = {ammo="Iron Gobbet",
head="Whirlpool Mask",neck="Wiglen Gorget",ear1="Bloodgem Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
sets.defense.MDT = {ammo="Demonry Stone",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Bloodgem Earring",
body="Hagondes Coat",hands="Iuitl Wristbands",ring1="Defending Ring",ring2="Shadow Ring",
back="Engulfer Cape",waist="Flume Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
sets.Kiting = {legs="Crimson Cuisses"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {ammo="Focal Orb",
head="Taeon Chapeau",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Chiner's Belt +1",legs="Taeon Tights",feet="Taeon Boots"}
sets.engaged.Acc = {ammo="Mavi Tathlum",
head="Taeon Chapeau",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Cornflower Cape",waist="Chiner's Belt +1",legs="Taeon Tights",feet="Taeon Boots"}
sets.engaged.Refresh = {ammo="Dosis Tathlum",
head="Helios Band",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Hagondes Coat +1",hands="Helios Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Aswang Sash",legs="Hagondes Pants +1",feet="Helios Boots"}
sets.engaged.DW = {ammo="Jukukik Feather",
head="Whirlpool Mask",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
body="Luhlaza Jubbah",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt",legs="Manibozho Brais",feet="Iuitl Gaiters +1"}
sets.engaged.DW.Acc = {ammo="Jukukik Feather",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
body="Luhlaza Jubbah",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Hurch'lan Sash",legs="Manibozho Brais",feet="Qaaxo Leggings"}
sets.engaged.DW.Refresh = {ammo="Jukukik Feather",
head="Whirlpool Mask",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
body="Hagondes Coat +1",hands="Assimilator's Bazubands +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Windbuffet Belt",legs="Manibozho Brais",feet="Qaaxo Leggings"}
sets.engaged.Learning = set_combine(sets.engaged, sets.Learning)
sets.engaged.DW.Learning = set_combine(sets.engaged.DW, sets.Learning)
sets.self_healing = {ring1="Aquasoul Ring",ring2="Asklepian Ring"}
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)
if unbridled_spells:contains(spell.english) and not state.Buff['Unbridled Learning'] then
eventArgs.cancel = true
windower.send_command('@input /ja "Unbridled Learning" <me>; wait 1.5; input /ma "'..spell.name..'" '..spell.target.name)
end
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
-- Add enhancement gear for Chain Affinity, etc.
if spell.skill == 'Blue Magic' then
for buff,active in pairs(state.Buff) do
if active and sets.buff[buff] then
equip(sets.buff[buff])
end
end
if spellMap == 'Healing' and spell.target.type == 'SELF' and sets.self_healing then
equip(sets.self_healing)
end
end
-- If in learning mode, keep on gear intended to help with that, regardless of action.
if state.OffenseMode.value == 'Learning' then
equip(sets.Learning)
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)
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
-- Return custom spellMap value that can override the default spell mapping.
-- Don't return anything to allow default spell mapping to be used.
function job_get_spell_map(spell, default_spell_map)
if spell.skill == 'Blue Magic' then
for category,spell_list in pairs(blue_magic_maps) do
if spell_list:contains(spell.english) then
return category
end
end
end
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
update_combat_form()
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function update_combat_form()
-- Check for H2H or single-wielding
if player.equipment.sub == "Genbu's Shield" or player.equipment.sub == 'empty' then
state.CombatForm:reset()
else
state.CombatForm:set('DW')
end
end
-- 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(2, 7)
else
set_macro_page(1, 7)
end
end
This is my lua after the fixes I have made.
Are you saying this file needs to be in the lib folder and not the data folder?
Server: Odin
Game: FFXI
Posts: 170
By Odin.Quixacotl 2015-04-27 01:11:35
Your JOB.lua file is fine in the data folder.
I actually tested your BLU.lua and it's working just fine for me, except that I don't own any augmented Helios or Telchine gear.
Do you own any augmented Helios or Telchine gear? There's been reports that augmented Skirmish gear hasn't been equipping correctly but I'm not sure if that's been fixed or not.
By inkydo 2015-04-27 09:00:08
If this has been asked before Sorry.... However, I am swapping gear to fast when skill chaining with others and myself. I don’t see the Animation and others say the same thing, but I know I am doing it at the proper time.
An example would be great thanks!
Odin.Tamoa
Server: Odin
Game: FFXI
Posts: 197
By Odin.Tamoa 2015-04-27 09:35:20
If this has been asked before Sorry.... However, I am swapping gear to fast when skill chaining with others and myself. I don’t see the Animation and others say the same thing, but I know I am doing it at the proper time.
An example would be great thanks!
The animation won't show up if you have effects off during battle. Skillchain damage doesn't show up in chat log if you blink. Check your settings and try when having lockstyle on.
Edit: actually, when rereading your post I'm a little confused what you mean. It doesn't matter if you swap gear too fast, you will still skillchain.
By inkydo 2015-04-27 10:12:48
If this has been asked before Sorry.... However, I am swapping gear to fast when skill chaining with others and myself. I don’t see the Animation and others say the same thing, but I know I am doing it at the proper time.
An example would be great thanks!
The animation won't show up if you have effects off during battle. Skillchain damage doesn't show up in chat log if you blink. Check your settings and try when having lockstyle on.
Edit: actually, when rereading your post I'm a little confused what you mean. It doesn't matter if you swap gear too fast, you will still skillchain.
I cannot see the animation of the skillchain... I am also not seeing the dmg.
Lockstyle only works if I don’t use Shurikens, as I still blink even if lockstyle is on. So before I used GS I use to give my In-game macros a wait command to allow the animation catch-up to the gear swaps even the in game will cause this to happen.
It is a simple fix to allow a wait before you switch back to TP gear.
Does that clear it up, Sorry I confuse many people all the time, especially when typing.
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.
|
|