|
Gearswap Support Thread
Leviathan.Redherring
Serveur: Leviathan
Game: FFXI
Posts: 162
By Leviathan.Redherring 2016-07-24 22:04:03
hoping someone can spot the problem, these are the last two pieces of gear in a set.
legs={ name="Merlinic shalwar", augments={'INT+1 MND+1 Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
feet={ name="Merlinic crackows", augments={'Mag. Acc.+26','"Mag.Atk.Bns."+30','Enmity-8',}}}
I am not getting any errors when GS loads just that my feet and legs are not loading
the augments on the gear are listed as
Feet:
Mag. Acc.+26
"Mag. Atk. Bns."+30
Enmity-8
Legs:
INT+1 MND+1 Mag. Acc.+20
"Mag. Atk. Bns."+20
Serveur: Asura
Game: FFXI
Posts: 1326
By Asura.Azagarth 2016-07-24 22:31:34
did you get the augments through /export? if not thats probably why.
[+]
Leviathan.Redherring
Serveur: Leviathan
Game: FFXI
Posts: 162
By Leviathan.Redherring 2016-07-24 22:36:59
that worked, thanks!
By Trashboat 2016-07-26 11:36:02
Is it possible to swap your main and sub weapon without first unequipping both? Guessing no but hoping for some gearswap magic.
Shiva.Hiep
Serveur: Shiva
Game: FFXI
Posts: 669
By Shiva.Hiep 2016-07-28 15:31:26
Does anyone have a gearswap using mote's format for DRK?
By ClaudeusXI 2016-07-29 05:02:58
Hello, I'm wondering if anyone can help me out with this. I get an error that refers to logic in 342, and is in regards to some preshot function.
Code -- ** I Use Some of Motenten's Functions ** --
-- Last Updated: 05/03/14 6:30 AM ** --
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For Shooting/QD/TP/WS. Default ACC Set Is LowACC. The First TP Set Of Your Main Weapon Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
IdleIndex = 1
IdleArray = {'Movement', 'Regen'} -- Default Idle Set Is Movement --
Armor = 'None'
define_roll_values()
warning = false
AutoMode = 'OFF' -- Set Default Auto RA/WS ON or OFF Here --
Obi = 'ON' -- Turn Default Obi ON or OFF Here --
ammo_warning_limit = 10 -- Set Ammo Limit Check Here --
target_distance = 5 -- Set Default Distance Here --
select_default_macro_book() -- Change Default Macro Book At The End --
ACC_Shots = S{"Light Shot","Dark Shot"}
Cure_Spells = {"Cure","Cure II","Cure III","Cure IV"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II"} -- Curaga Degradation --
sc_map = {SC1="CoursersRoll", SC2="DiaII", SC3="LightShot"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
-- Idle/Town Sets --
sets.Idle = {}
sets.Idle.Regen = {
ammo="Adlivun Bullet",
head="Oce. Headpiece +1",
neck="Bathy Choker +1"}
sets.Idle.Movement = set_combine(sets.Idle.Regen,{
ammo="Adlivun Bullet",
head="Meghanada Visor +1",
neck="Twilight Torque",
ear1="Crematio Earring",
ear2="Sanare Earring",
body="Mekosu. Harness",
hands="Chasseur's Gants +1",
ring1="Paguroidea Ring",
ring2="Defending Ring",
back="Mecisto. Mantle",
waist="Sweordfaetels +1",
legs="Carmine Cuisses +1",
feet="Meg. Jam. +1"})
-- QD Sets --
sets.QD = {
ammo="Animikii Bullet",
head="Lak. Hat +1",
neck="Deviant Necklace",
ear1="Crematio Earring",
ear2="Friomisi Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Garuda Ring +1",
ring2="Arvina Ringlet +1",
back="Camulus's Mantle",
waist="Salire Belt",
legs="Lak. Trews +1",
feet="Adhemar Gamashes"}
-- PDT/MDT Sets --
sets.PDT = {
ammo="Adlivun Bullet",
head="Meghanada Visor +1",
neck="Twilight Torque",
ear1="Suppanomimi",
ear2="Sanare Earring",
body="Meg. Cuirie +1",
hands="Meg. Gloves +1",
ring1="Patricius Ring",
ring2="Defending Ring",
back="Shadow Mantle",
waist="Sailfi Belt +1",
legs="Meg. Chausses +1",
feet="Lanun Bottes +1"}
sets.MDT = set_combine(sets.PDT,{})
-- Roll Set --
sets.Rolls = set_combine(sets.PDT,{
ammo="Adlivun Bullet",
head="Lanun Tricorne +1",
hands="Chasseur's Gants +1",
ring1="Luzaf's Ring",
ring2="Barataria Ring",
back="Camulus's Mantle",
legs="Desultor Tassets"})
-- Preshot --
sets.Preshot = {
ammo="Adlivun Bullet",
head="Chass. Tricorne +1",
body="Pursuer's Doublet",
hands="Lanun Gants +1",
back="Navarch's Mantle",
waist="Impulse Belt",
legs="Adhemar Kecks",
feet="Meg. Jam. +1"}
-- Shooting Base Set --
sets.Midshot = {
ammo="Adlivun Bullet",
head="Meghanada Visor +1",
neck="Ocachi Gorget",
ear1="Tripudio Earring",
ear2="Neritic Earring",
body="Meg. Cuirie +1",
hands="Meg. Gloves +1",
ring1="Rajas Ring",
ring2="Paqichikaji Ring",
back="Gunslinger's Cape",
waist="Sweordfaetels +1",
legs="Adhemar Kecks",
feet="Meg. Jam. +1"}
sets.Midshot.MidACC = set_combine(sets.Midshot,{})
sets.Midshot.HighACC = set_combine(sets.Midshot.MidACC,{
ear1="Clearview Earring",
ring1="Garuda Ring +1"})
-- Melee Sets --
sets.Melee = {
ammo="Adlivun Bullet",
head="Meghanada Visor +1",
neck="Subtlety Spec.",
ear1="Tripudio Earring",
ear2="Brutal Earring",
body="Meg. Cuirie +1",
hands="Meg. Gloves +1",
ring1="Epona's Ring",
ring2="Oneiros Ring",
back="Kayapa Cape",
waist="Sailfi Belt +1",
legs="Meg Chausses +1",
feet="Meg. Jam. +1"}
sets.Melee.MidACC = set_combine(sets.Melee,{})
sets.Melee.HighACC = set_combine(sets.Melee.MidACC,{
ear1="Suppanomimi",
ring1="Patricius Ring",
ring2="Mars's Ring",
legs="Carmine Cuisses +1"})
sets.Melee.Dual = {
ammo="Adlivun Bullet",
head="Taeon Chapeau",
neck="Subtlety Spec.",
ear1="Suppanomimi",
ear2="Brutal Earring",
body="Meg. Cuirie +1",
hands="Floral Gauntlets",
ring1="Epona's Ring",
ring2="Oneiros Ring",
back="Kayapa Cape",
waist="Dynamic Belt +1",
legs="Meg Chausses +1",
feet="Meg. Jam. +1"}
sets.Melee.Dual.MidACC = set_combine(sets.Melee.Dual,{})
sets.Melee.Dual.HighACC = set_combine(sets.Melee.Dual.MidACC,{
ring1="Patricius Ring",
ring2="Mars's Ring",
legs="Carmine Cuisses +1"})
-- WS Base Set --
sets.WS = {}
-- Savage Blade Sets --
sets.WS["Savage Blade"] = {
ammo="Adlivun Bullet",
head="Meghanada Visor +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Brutal Earring",
body="Meg. Cuirie +1",
hands="Meg. Gloves +1",
ring1="Rajas Ring",
ring2="Ifrit Ring +1",
back="Camulus's Mantle",
waist="Fotia Belt",
legs="Meg. Chausses +1",
feet="Meg. Jam. +1"}
sets.WS["Savage Blade"].MidACC = set_combine(sets.WS["Savage Blade"],{})
sets.WS["Savage Blade"].HighACC = set_combine(sets.WS["Savage Blade"].MidACC,{
ring1="Rajas Ring",
ring2="Mars's Ring",
legs="Carmine Cuisses +1"})
-- Last Stand Sets --
sets.WS["Last Stand"] = {
ammo="Adlivun Bullet",
head="Meghanada Visor +1",
neck="Fotia Gorget",
ear1="Neritic Earring",
ear2="Moonshade Earring",
body="Meg. Cuirie +1",
hands="Meg. Gloves +1",
ring1="Garuda Ring +1",
ring2="Ifrit Ring +1",
back="Camulus's Mantle",
waist="Fotia Belt",
legs="Meg. Chausses +1",
feet="Meg. Jam. +1"}
sets.WS["Last Stand"].MidACC = set_combine(sets.WS["Last Stand"],{})
sets.WS["Last Stand"].HighACC = set_combine(sets.WS["Last Stand"].MidACC,{
ring1="Garuda Ring +1",
ring2="Paqichikaji Ring"})
-- Slug Shot Sets --
sets.WS["Slug Shot"] = {
ammo="Adlivun Bullet",
head="Meghanada Visor +1",
neck="Fotia Gorget",
ear1="Neritic Earring",
ear2="Moonshade Earring",
body="Meg. Cuirie +1",
hands="Meg. Gloves +1",
ring1="Garuda Ring +1",
ring2="Ifrit Ring +1",
back="Camulus's Mantle",
waist="Fotia Belt",
legs="Meg. Chausses +1",
feet="Meg. Jam. +1"}
sets.WS["Slug Shot"].MidACC = set_combine(sets.WS["Slug Shot"],{})
sets.WS["Slug Shot"].HighACC = set_combine(sets.WS["Slug Shot"].MidACC,{
ring1="Garuda Ring +1",
ring2="Paqichikaji Ring"})
-- Wildfire Sets --
sets.WS.Wildfire = {
ammo="Orichalc. Bullet",
head="Lanun Tricorne +1",
neck="Deviant Necklace",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Garuda Ring +1",
ring2="Arvina Ringlet +1",
back="Camulus's Mantle",
waist="Salire Belt",
legs="Lak. Trews +1",
feet="Adhemar Gamashes"}
-- Leaden Salute Sets --
sets.WS['Leaden Salute'] = {
ammo="Orichalc. Bullet", -- Orichalc. Bullet --
head="Pixie Hairpin +1",
neck="Deviant Necklace",
ear1="Friomisi Earring",
ear2="Moonshade Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Archon Ring",
ring2="Arvina Ringlet +1",
back="Camulus's Mantle",
waist="Salire Belt",
legs="Lak. Trews +1",
feet="Adhemar Gamashes"}
sets.WS['Leaden Salute'].MidACC = set_combine(sets.WS['Leaden Salute'],{})
sets.WS['Leaden Salute'].HighACC = set_combine(sets.WS['Leaden Salute'].MidACC,{})
-- Elemental Obi --
sets.Obi = {}
sets.Obi.Thunder = {waist='Rairin Obi'}
sets.Obi.Water = {waist='Suirin Obi'}
sets.Obi.Fire = {waist='Karin Obi'}
sets.Obi.Ice = {waist='Hyorin Obi'}
sets.Obi.Wind = {waist='Furin Obi'}
sets.Obi.Earth = {waist='Dorin Obi'}
sets.Obi.Light = {waist='Korin Obi'}
sets.Obi.Dark = {waist='Anrin Obi'}
-- JA Sets --
sets.JA = {}
sets.JA["Random Deal"] = {body="Lanun Frac +1"}
sets.JA.Fold = {hands="Lanun Gants +1"}
sets.JA["Snake Eye"] = {legs="Lanun Culottes +1"}
sets.JA["Wild Card"] = {feet="Lanun Bottes +1"}
-- Waltz Set --
sets.Waltz = {}
sets.Precast = {}
--Fastcast Set --
sets.Precast.FastCast = {
hands="Leyline Gloves",
ring2="Weather. Ring"}
sets.Midcast = {}
-- Magic Haste Set --
sets.Midcast.Haste = set_combine(sets.PDT,{})
end
function pretarget(spell,action)
if spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.type == "CorsairRoll" and buffactive[spell.english] then -- Change Any Rolls To Double-Up When You Have A Roll Up --
cancel_spell()
send_command('doubleup')
elseif spell.english == "Seigan" and buffactive.Seigan then -- Change Seigan To Third Eye If Seigan Is On --
cancel_spell()
send_command('ThirdEye')
elseif spell.english == "Meditate" and player.tp > 290 then -- Cancel Meditate If TP Is Above 290 --
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: ' .. player.tp)
elseif spell.action_type == 'Ranged Attack' then -- Auto WS
if player.tp >= 1000 and AutoMode == 'ON' and not buffactive.amnesia then
cancel_spell()
autoWS()
end
elseif spell.action_type == 'Ranged Attack' and spell.target.distance > 24.9 then
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
elseif spell.type == 'WeaponSkill' and player.status == 'Engaged' then
if spell.skill == 'Marksmanship' then
if spell.target.distance > 16+target_distance then
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
end
else
if spell.target.distance > target_distance then
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
end
end
end
end
function precast(spell,action)
if spell.action_type == 'Ranged Attack' or spell.type == "WeaponSkill" then
if player.equipment.ammo == "Animikii Bullet" then -- Cancel Ranged Attack or WS If You Have Animikii Bullet Equipped --
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: [Animikii Bullet Equipped!]')
return
else
local check_ammo
local check_ammo_count = 1
if spell.action_type == 'Ranged Attack' then
check_ammo = player.equipment.ammo
if player.equipment.ammo == 'empty' or player.inventory[check_ammo].count <= check_ammo_count then
add_to_chat(123, spell.name..' Canceled: [Out of Ammo]')
cancel_spell()
return
else
equip(sets.Preshot)
if player.inventory[check_ammo].count <= ammo_warning_limit and player.inventory[check_ammo].count > 1 and not warning then
add_to_chat(8, '***** [Low Ammo Warning!] *****')
warning = true
elseif player.inventory[check_ammo].count > ammo_warning_limit and warning then
warning = false
end
end
elseif spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if player.tp > 2999 or buffactive.Sekkanoki then
equipSet = set_combine(equipSet,{ear2="Crematio Earring"})
end
if spell.english == "Leaden Salute" and (world.day == "Darksday") then
add_to_chat('Used Anrin Obi')
equipSet = set_combine(equipSet, {waist="Anrin Obi"})
end
equip(equipSet)
end
end
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
if spell.english == "Snake Eye" then -- Auto Double-Up After You Use Snake Eye --
send_command('@wait 1;input /ja Double-Up <me>')
end
end
elseif spell.type == "CorsairRoll" or spell.english == "Double-Up" then
equip(sets.Rolls)
if spell.english == "Tactician's Roll" then
equip({body="Chasseur's Frac +1"})
elseif spell.english == "Caster's Roll" then
equip({legs="Chas. Culottes +1"})
elseif spell.english == "Courser's Roll" then
equip({feet="Chasseur's Bottes +1"})
end
elseif spell.type == "CorsairShot" then
equipSet = sets.QD
if ACC_Shots:contains(spell.english) then
equipSet = sets.QD.HighACC
else
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if not ACC_Shots:contains(spell.english) and (world.day_element == spell.element or world.weather_element == spell.element) and sets.Obi[spell.element] and Obi == 'ON' then -- Use Obi Toggle To Unlock Elemental Obi --
equipSet = set_combine(equipSet,sets.Obi[spell.element])
end
end
equip(equipSet)
elseif spell.action_type == 'Magic' then
if string.find(spell.english,'Utsusemi') then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: [3+ Images]')
return
else
equip(sets.Precast.FastCast)
end
else
equip(sets.Precast.FastCast)
end
elseif spell.type == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
end
function midcast(spell,action)
if spell.action_type == 'Ranged Attack' then
equipSet = sets.Midshot
if equipSet[player.equipment.range] then
equipSet = equipSet[player.equipment.range]
end
if buffactive['Triple Shot'] then
equipSet = set_combine(equipSet,{body="Chasseur's Frac +1"})
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
equip(equipSet)
elseif spell.action_type == 'Magic' then
if spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 2.8;cancel stoneskin')
end
equip(sets.Midcast.Stoneskin)
elseif spell.english == "Sneak" then
if spell.target.name == player.name and buffactive['Sneak'] then
send_command('cancel sneak')
end
equip(sets.Midcast.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
equip(sets.Midcast.Haste)
elseif spell.english == 'Monomi: Ichi' then
if buffactive['Sneak'] then
send_command('@wait 1.7;cancel sneak')
end
equip(sets.Midcast.Haste)
else
equip(sets.Midcast.Haste)
end
end
end
function aftercast(spell,action)
if spell.action_type == 'Ranged Attack' and AutoMode == 'ON' then
autoRA()
else
status_change(player.status)
end
if not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
elseif spell.type == 'CorsairRoll' then
display_roll_info(spell)
elseif spell.english == 'Light Shot' then -- Sleep Countdown --
send_command('wait 50;input /echo '..spell.name..' Effect: [WEARING OFF IN 10 SEC.];wait 10;input /echo '..spell.name..' Effect: [OFF]')
end
end
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif new == 'Engaged' then
equipSet = sets.Melee
if player.sub_job == 'DNC' or 'NIN' then
equipSet = sets.Melee.Dual
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
equip(equipSet)
elseif new == 'Idle' then
equip(sets.Idle[IdleArray[IdleIndex]])
elseif new == 'Resting' then
equip(sets.Resting)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "aftermath: lv.3" then -- AM3 Timer/Countdown --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down;wait 120;input /echo Aftermath: Lv.3 [WEARING OFF IN 60 SEC.];wait 30;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 20;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(123,'AM3: [OFF]')
end
elseif 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 -- Accuracy Level Toggle --
AccIndex = (AccIndex % #AccArray) + 1
status_change(player.status)
add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
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 == 'C15' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == '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
status_change(player.status)
add_to_chat(158,'Idle Set: ' .. IdleArray[IdleIndex])
elseif command == 'C2' then -- Auto RA/WS Toggle. *Don't Rely On This. It Isn't As Fast As Shooting Manually. It Is Mainly For AFK or When You Dualbox* --
if AutoMode == 'ON' then
AutoMode = 'OFF'
add_to_chat(123,'Auto Mode: [OFF]')
else
AutoMode = 'ON'
add_to_chat(158,'Auto Mode: [ON]')
end
elseif command == 'TP' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function autoRA()
send_command('@wait 2.1; input /ra <t>')
end
function autoWS() -- Change Auto WS Here --
send_command('input /ws "Leaden Salute" <t>')
end
function define_roll_values()
rolls = {
CorsairsRoll = {lucky=5, unlucky=9, bonus="Experience Points"},
NinjaRoll = {lucky=4, unlucky=8, bonus="Evasion"},
HuntersRoll = {lucky=4, unlucky=8, bonus="Accuracy"},
ChaosRoll = {lucky=4, unlucky=8, bonus="Attack"},
MagussRoll = {lucky=2, unlucky=6, bonus="Magic Defense"},
HealersRoll = {lucky=3, unlucky=7, bonus="Cure Potency Received"},
PuppetRoll = {lucky=4, unlucky=8, bonus="Pet Magic Accuracy/Attack"},
ChoralRoll = {lucky=2, unlucky=6, bonus="Spell Interruption Rate"},
MonksRoll = {lucky=3, unlucky=7, bonus="Subtle Blow"},
BeastRoll = {lucky=4, unlucky=8, bonus="Pet Attack"},
SamuraiRoll = {lucky=2, unlucky=6, bonus="Store TP"},
EvokersRoll = {lucky=5, unlucky=9, bonus="Refresh"},
RoguesRoll = {lucky=5, unlucky=9, bonus="Critical Hit Rate"},
WarlocksRoll = {lucky=4, unlucky=8, bonus="Magic Accuracy"},
FightersRoll = {lucky=5, unlucky=9, bonus="Double Attack Rate"},
DrachenRoll = {lucky=4, unlucky=8, bonus="Pet Accuracy"},
GallantsRoll = {lucky=3, unlucky=7, bonus="Defense"},
WizardsRoll = {lucky=5, unlucky=9, bonus="Magic Attack"},
DancersRoll = {lucky=3, unlucky=7, bonus="Regen"},
ScholarsRoll = {lucky=2, unlucky=6, bonus="Conserve MP"},
BoltersRoll = {lucky=3, unlucky=9, bonus="Movement Speed"},
CastersRoll = {lucky=2, unlucky=7, bonus="Fast Cast"},
CoursersRoll = {lucky=3, unlucky=9, bonus="Snapshot"},
BlitzersRoll = {lucky=4, unlucky=9, bonus="Attack Delay"},
TacticiansRoll = {lucky=5, unlucky=8, bonus="Regain"},
AlliessRoll = {lucky=3, unlucky=10, bonus="Skillchain Damage"},
MisersRoll = {lucky=5, unlucky=7, bonus="Save TP"},
CompanionsRoll = {lucky=2, unlucky=10, bonus="Pet Regain and Regen"},
AvengersRoll = {lucky=4, unlucky=8, bonus="Counter Rate"},
NaturalistsRoll = {lucky=3, unlucky=7, bonus="Enhancing Magic Duration"},
RuneistsRoll = {lucky=4, unlucky=8, bonus="Magic Evasion"}
}
end
function display_roll_info(spell)
rollinfo = rolls[(string.gsub((string.gsub(spell.english, "%'+", "")), "%s+", ""))]
if rollinfo then
add_to_chat(158, spell.english..' = '..rollinfo.bonus..'. Lucky Roll is '..
tostring(rollinfo.lucky)..', Unlucky Roll is '..tostring(rollinfo.unlucky)..'.')
end
end
function refine_waltz(spell,action)
if spell.type ~= 'Waltz' then
return
end
if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local missingHP = 0
local targ
if spell.target.type == "SELF" then
targ = alliance[1][1]
missingHP = player.max_hp - player.hp
elseif spell.target.isallymember then
targ = find_player_in_alliance(spell.target.name)
local est_max_hp = targ.hp / (targ.hpp/100)
missingHP = math.floor(est_max_hp - targ.hp)
end
if targ then
if player.sub_job == 'DNC' then
if missingHP < 40 then
add_to_chat(123,'Full HP!')
cancel_spell()
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
else
newWaltz = 'Curing Waltz III'
end
else
return
end
end
local waltzTPCost = {['Curing Waltz'] = 200,['Curing Waltz II'] = 350,['Curing Waltz III'] = 500,['Curing Waltz IV'] = 650,['Curing Waltz V'] = 800}
local tpCost = waltzTPCost[newWaltz]
local downgrade
if player.tp < tpCost and not buffactive.trance then
if player.tp < 200 then
add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
cancel_spell()
return
elseif player.tp < 350 then
newWaltz = 'Curing Waltz'
elseif player.tp < 500 then
newWaltz = 'Curing Waltz II'
elseif player.tp < 650 then
newWaltz = 'Curing Waltz III'
elseif player.tp < 800 then
newWaltz = 'Curing Waltz IV'
end
downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
end
if newWaltz ~= spell.english then
send_command('wait 0.03;input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
if downgrade then
add_to_chat(8, downgrade)
end
cancel_spell()
return
end
if missingHP > 0 then
add_to_chat(8,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
function find_player_in_alliance(name)
for i,v in ipairs(alliance) do
for k,p in ipairs(v) do
if p.name == name then
return p
end
end
end
end
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 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 == 'SAM' then
set_macro_page(1, 9)
elseif player.sub_job == 'WHM' then
set_macro_page(1, 9)
elseif player.sub_job == 'DNC' then
set_macro_page(1, 9)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 9)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 9)
elseif player.sub_job == 'WAR' then
set_macro_page(1, 9)
elseif player.sub_job == 'DRG' then
set_macro_page(1, 9)
else
set_macro_page(1, 9)
end
end
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-07-29 05:44:22
I assume that you are ranged attacking when the error occurs, and your ammo is located in wardrobe.
The logic assumes the ammo is in your inventory. You can tweak it a little so that will stop giving you an indexing error, but that particular condition will keep checking true if your ammo isn't in your inventory, and thus keep telling you you are low on ammo and cancel your action.
Either change lines 340-354 (there are other indexing holes), and move your ammo into inventory Code if spell.action_type == 'Ranged Attack' then
check_ammo = player.equipment.ammo
if player.equipment.ammo == 'empty' or not player.inventory[check_ammo] or player.inventory[check_ammo].count <= check_ammo_count then
add_to_chat(123, spell.name..' Canceled: [Out of Ammo]')
cancel_spell()
return
else
equip(sets.Preshot)
if player.inventory[check_ammo] and player.inventory[check_ammo].count <= ammo_warning_limit and player.inventory[check_ammo].count > 1 and not warning then
add_to_chat(8, '***** [Low Ammo Warning!] *****')
warning = true
elseif player.inventory[check_ammo] and player.inventory[check_ammo].count > ammo_warning_limit and warning then
warning = false
end
end
Or delete lines 341-346 and 348-354 (and the file will no longer warn you when low on ammo).
By ClaudeusXI 2016-07-29 06:10:42
Thanks for this!
Serveur: Odin
Game: FFXI
Posts: 136
By Odin.Brocovich 2016-07-29 12:45:05
Hi, i got two different idle sets, my standard one with DT- and one with refresh stuff: Code
sets.idle = ...
sets.idle.Refresh = ...
i'm using the function customize_idle_set to trigger latent refresh items: Code
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
this works only for the default idle set tho.
Does anyone know how to change this function, so the latent items only swap if i'm using sets.idle.refresh?
Thanks in advance.
Odin.Lygre
Serveur: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-07-29 13:21:26
Probably need to see more, because that should work.
EDIT: oops, try this. Code function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-07-29 19:21:42
He wants it only during refresh mode though. I think,
Code function customize_idle_set(idleSet)
if state.IdleMode.value == "Refresh" and player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
Phoenix.Gerrott
Serveur: Phoenix
Game: FFXI
Posts: 158
By Phoenix.Gerrott 2016-07-30 11:57:52
Hello, recently after adding Trishula to my lua i noticed it not swapping back from Breath gear post WS quite frequently, so i set out to try to find a fix, i noticed Bokura had a more up to date file so I'm trying to use that. Now rather than make a new Trishula set this time i just added ACC toggle to base TP, but now this new file is having way more issues. I just stay in the set of whatever the last action was. It loaded without error right away but its completely unusable atm and i have no clue what I'm doing, any assistance is greatly appreciated.
Code -- *** Credit goes to Flippant & Martel for helping me with this Gearswap *** --
-- ** I Use Some of Motenten's Functions ** --
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 4 Levels Of Accuracy Sets For TP/WS/Hybrid/Jump. First Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below. Most of These Sets Are Empty So You Need To Edit Them On Your Own. Remember To Check What The Combined Set Is For Each Sets. --
AttIndex = 1
AttArray = {"LowATT","HighATT","LowContent"} -- LowATT Is The Same As LowACC Set. MidACC, HighACC & MaxACC Take Priority Over These 2 Sets(HighATT & LowContent). --
IdleIndex = 1
IdleArray = {"Movement","Regen","Refresh"} -- Default Idle Set Is Movement --
Armor = 'None'
Twilight = 'None'
Rancor = 'OFF'-- Set Default Rancor ON or OFF Here --
Brais = 'OFF' -- Set Default High Jump Enmity Legs ON or OFF Here --
Samurai_Roll = 'ON' -- Set Default SAM Roll ON or OFF Here --
target_distance = 10 -- Set Default Distance Here --
-- Gavialis Helm --
elements = {}
elements.equip = {head="Gavialis Helm"}
elements.Stardiver = S{"Light","Dark","Earth"}
Cure_Spells = {"Cure","Cure II","Cure III","Cure IV"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II"} -- Curaga Degradation --
Healer_Type_Wyvern = S{"WHM","RDM","BLM","BLU","SCH","GEO","SMN"} -- 50% Healing Breath Trigger SubJob --
Hybrid_Type_Wyvern = S{"PLD","DRK","BRD","NIN","RUN"} -- 33% Healing Breath Trigger SubJob --
sc_map = {SC1="Drakesbane", SC2="SpiritJump", SC3="SoulJump"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
sets.Idle = {}
-- Idle/Town Sets --
sets.Idle.Regen = {
ammo="Staunch Tathlum",
head="Twilight Helm",
body="Kumarbi's Akar",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Bathy Choker +1",
waist="Lycopodium Sash",
right_ear="Infused Earring",
left_ear="Anastasi Earring",
left_ring="Paguroidea Ring",
right_ring="Shneddick Ring",
back="Shadow Mantle",}
sets.Idle.Movement = set_combine(sets.Idle.Regen,{})
sets.Idle.Refresh = set_combine(sets.Idle.Regen,{
--head="Wivre Hairpin",
body="Ares' Cuirass +1",
hands="Ogier's Gauntlets",
feet="Ogier's Leggings"})
-- Twilight Set --
sets.Twilight = {head="Twilight Helm",body="Twilight Mail"}
-- TP Base Set --
sets.TP = {
ammo="Ginsen",
head={ name="Otomi Helm", augments={'Haste+2','"Snapshot"+2','STR+8',}},
body="Valorous Mail",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.TP.MidACC = set_combine(sets.TP,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body={ name="Valorous Mail", augments={'Accuracy+24 Attack+24','"Dbl.Atk."+3','AGI+7','Accuracy+10',}},
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Ganesha's Mala",
waist="Ioskeha Belt",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},
})
sets.TP.HighACC = set_combine(sets.TP.MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Ryunohige(AM3 Down) TP Sets --
sets.TP.Ryunohige = {
ammo="Ginsen",
head={ name="Otomi Helm", augments={'Haste+2','"Snapshot"+2','STR+8',}},
body="Valorous Mail",
--body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.TP.Ryunohige.MidACC = set_combine(sets.TP.Ryunohige,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body={ name="Valorous Mail", augments={'Accuracy+24 Attack+24','"Dbl.Atk."+3','AGI+7','Accuracy+10',}},
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Ganesha's Mala",
waist="Ioskeha Belt",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.TP.Ryunohige.HighACC = set_combine(sets.TP.Ryunohige.MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Ryunohige(AM3 Up) TP Sets --
sets.TP.Ryunohige.AM3 = set_combine(sets.TP.Ryunohige,{
ammo="Ginsen",
head={ name="Acro Helm", augments={'Accuracy+19 Attack+19','"Store TP"+6','STR+4 DEX+4',}},
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Acro Breeches", augments={'Accuracy+18 Attack+18','"Store TP"+6','STR+7',}},
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
right_ear="Tripudio Earring",
left_ear="Cessance Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.TP.Ryunohige.MidACC.AM3 = set_combine(sets.TP.Ryunohige.AM3,{
ammo="Ginsen",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Acro Breeches", augments={'Accuracy+18 Attack+18','"Store TP"+6','STR+7',}},
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
right_ear="Tripudio Earring",
left_ear="Cessance Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.TP.Ryunohige.HighACC.AM3 = set_combine(sets.TP.Ryunohige.MidACC.AM3,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Ryunohige(AM3 Down: Ionis) TP Sets --
sets.TP.Ryunohige.Ionis = set_combine(sets.TP.Ryunohige,{})
sets.TP.Ryunohige.MidACC.Ionis = set_combine(sets.TP.Ryunohige.MidACC,{})
sets.TP.Ryunohige.HighACC.Ionis = set_combine(sets.TP.Ryunohige.HighACC,{})
-- Ryunohige(AM3 Up: Ionis) TP Sets --
sets.TP.Ryunohige.AM3.Ionis = set_combine(sets.TP.Ryunohige.AM3,{})
sets.TP.Ryunohige.MidACC.AM3.Ionis = set_combine(sets.TP.Ryunohige.MidACC.AM3,{})
sets.TP.Ryunohige.HighACC.AM3.Ionis = set_combine(sets.TP.Ryunohige.HighACC.AM3,{})
-- Ryunohige(AM3 Down: SAM Roll) TP Sets --
sets.TP.Ryunohige.STP = set_combine(sets.TP.Ryunohige,{})
sets.TP.Ryunohige.MidACC.STP = set_combine(sets.TP.Ryunohige.MidACC,{})
sets.TP.Ryunohige.HighACC.STP = set_combine(sets.TP.Ryunohige.HighACC,{})
-- Ryunohige(AM3 Up: SAM Roll) TP Sets --
sets.TP.Ryunohige.AM3.STP = set_combine(sets.TP.Ryunohige.AM3,{})
sets.TP.Ryunohige.MidACC.AM3.STP = set_combine(sets.TP.Ryunohige.MidACC.AM3,{})
sets.TP.Ryunohige.HighACC.AM3.STP = set_combine(sets.TP.Ryunohige.HighACC.AM3,{})
-- Ryunohige(AM3 Down: Ionis + SAM Roll) TP Sets --
sets.TP.Ryunohige.Ionis.STP = set_combine(sets.TP.Ryunohige,{})
sets.TP.Ryunohige.MidACC.Ionis.STP = set_combine(sets.TP.Ryunohige.MidACC,{})
sets.TP.Ryunohige.HighACC.Ionis.STP = set_combine(sets.TP.Ryunohige.HighACC,{})
-- Ryunohige(AM3 Up: Ionis + SAM Roll) TP Sets --
sets.TP.Ryunohige.AM3.Ionis.STP = set_combine(sets.TP.Ryunohige.AM3,{})
sets.TP.Ryunohige.MidACC.AM3.Ionis.STP = set_combine(sets.TP.Ryunohige.MidACC.AM3,{})
sets.TP.Ryunohige.HighACC.AM3.Ionis.STP = set_combine(sets.TP.Ryunohige.HighACC.AM3,{})
-- Gungnir TP Sets --
sets.TP.Gungnir = {}
sets.TP.Gungnir.MidACC = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.HighACC = set_combine(sets.TP.Gungnir.MidACC,{})
-- Gungnir(Ionis) TP Sets --
sets.TP.Gungnir.Ionis = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.MidACC.Ionis = set_combine(sets.TP.Gungnir.MidACC,{})
sets.TP.Gungnir.HighACC.Ionis = set_combine(sets.TP.Gungnir.HighACC,{})
-- Gungnir(SAM Roll) TP Sets --
sets.TP.Gungnir.STP = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.MidACC.STP = set_combine(sets.TP.Gungnir.MidACC,{})
sets.TP.Gungnir.HighACC.STP = set_combine(sets.TP.Gungnir.HighACC,{})
-- Gungnir(Ionis + SAM Roll) TP Sets --
sets.TP.Gungnir.Ionis.STP = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.MidACC.Ionis.STP = set_combine(sets.TP.Gungnir.MidACC,{})
sets.TP.Gungnir.HighACC.Ionis.STP = set_combine(sets.TP.Gungnir.HighACC,{})
-- Rhongomiant TP Sets --
sets.TP.Rhongomiant = {}
sets.TP.Rhongomiant.MidACC = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.HighACC = set_combine(sets.TP.Rhongomiant.MidACC,{})
-- Rhongomiant(Ionis) TP Sets --
sets.TP.Rhongomiant.Ionis = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.MidACC.Ionis = set_combine(sets.TP.Rhongomiant.MidACC,{})
sets.TP.Rhongomiant.HighACC.Ionis = set_combine(sets.TP.Rhongomiant.HighACC,{})
-- Rhongomiant(SAM Roll) TP Sets --
sets.TP.Rhongomiant.STP = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.MidACC.STP = set_combine(sets.TP.Rhongomiant.MidACC,{})
sets.TP.Rhongomiant.HighACC.STP = set_combine(sets.TP.Rhongomiant.HighACC,{})
-- Rhongomiant(Ionis + SAM Roll) TP Sets --
sets.TP.Rhongomiant.Ionis.STP = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.MidACC.Ionis.STP = set_combine(sets.TP.Rhongomiant.MidACC,{})
sets.TP.Rhongomiant.HighACC.Ionis.STP = set_combine(sets.TP.Rhongomiant.HighACC,{})
-- Upukirex TP Sets --
sets.TP.Upukirex = {}
sets.TP.Upukirex.MidACC = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.HighACC = set_combine(sets.TP.Upukirex.MidACC,{})
-- Upukirex(Ionis) TP Sets --
sets.TP.Upukirex.Ionis = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.MidACC.Ionis = set_combine(sets.TP.Upukirex.MidACC,{})
sets.TP.Upukirex.HighACC.Ionis = set_combine(sets.TP.Upukirex.HighACC,{})
-- Upukirex(SAM Roll) TP Sets --
sets.TP.Upukirex.STP = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.MidACC.STP = set_combine(sets.TP.Upukirex.MidACC,{})
sets.TP.Upukirex.HighACC.STP = set_combine(sets.TP.Upukirex.HighACC,{})
-- Upukirex(Ionis + SAM Roll) TP Sets --
sets.TP.Upukirex.Ionis.STP = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.MidACC.Ionis.STP = set_combine(sets.TP.Upukirex.MidACC,{})
sets.TP.Upukirex.HighACC.Ionis.STP = set_combine(sets.TP.Upukirex.HighACC,{})
-- AM3 Rancor ON Mantle --
sets.TP.Rancor = {back="Rancorous Mantle"}
-- PDT/MDT Sets --
sets.PDT = {
ammo="Staunch Tathlum",
head="Sulevia's Mask +1",
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Twilight Torque",
waist="Flume Belt",
left_ear="Genmei Earring",
right_ear="Etiolation Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Shadow Mantle",}
sets.MDT = set_combine(sets.PDT,{
ammo="Staunch Tathlum",
waist="Nierenschutz",
left_ear="Sanare Earring",
right_ear="Etiolation Earring",
right_ring="Shadow Ring",
back="Engulfer Cape +1",})
-- Hybrid Sets --
sets.TP.Hybrid = set_combine(sets.PDT,{
ammo="Hasty Pinion +1",
head="Sulevia's Mask +1",
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Twilight Torque",
waist="Tempus Fugit",
left_ear="Genmei Earring",
right_ear="Digni. Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back="Agema Cape",})
sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
-- WS Base Set --
sets.WS = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},}
-- Drakesbane Sets --
sets.WS.Drakesbane = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Pelt. Cuissots +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},}
sets.WS.Drakesbane.MidACC = set_combine(sets.WS.Drakesbane,{
})
sets.WS.Drakesbane.HighACC = set_combine(sets.WS.Drakesbane.MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
right_ear="Zwazo Earring +1",
left_ear="Zennaroi Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Drakesbane(Low Level Content) Set --
sets.WS.Drakesbane.LowContent = set_combine(sets.WS.Drakesbane,{})
-- Drakesbane(High Attack) Set --
sets.WS.Drakesbane.HighATT = set_combine(sets.WS.Drakesbane,{})
-- Stardiver Sets --
sets.WS.Stardiver = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Valorous Hose",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},}
sets.WS.Stardiver.MidACC = set_combine(sets.WS.Stardiver,{
--legs="Sulevi. Cuisses +1",
})
sets.WS.Stardiver.HighACC = set_combine(sets.WS.Stardiver.MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
right_ear="Zwazo Earring +1",
left_ear="Zennaroi Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Geirskogul Set --
sets.WS.Geirskogul = {}
-- Camlann's Torment Set --
sets.WS["Camlann's Torment"] = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},}
sets.WS["Camlann's Torment"].MidACC = set_combine(sets.WS["Camlann's Torment"],{
})
sets.WS["Camlann's Torment"].HighACC = set_combine(sets.WS["Camlann's Torment"].MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
left_ear="Zennaroi Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
--Sonic Thrust Sets--
sets.WS["Sonic Thrust"] = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},}
sets.WS["Sonic Thrust"].MidACC = set_combine(sets.WS["Sonic Thrust"],{
})
sets.WS["Sonic Thrust"].HighACC = set_combine(sets.WS["Sonic Thrust"].MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
left_ear="Zennaroi Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA = {}
-- Jump Sets --
sets.JA.Jump = {
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Vishap Mail +1",
hands="Vishap F. G. +1",
legs="Pelt. Cuissots +1",
feet="Vishap Greaves +1",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.JA.Jump.MidACC = set_combine(sets.JA.Jump,{
head="Sulevia's Mask +1",
neck="Combatant's Torque",
waist="Kentarch Belt +1",})
sets.JA.Jump.HighACC = set_combine(sets.JA.Jump.MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- High Jump Sets --
sets.JA["High Jump"] = set_combine(sets.JA.Jump,{
feet="Valorous Greaves",})
sets.JA["High Jump"].MidACC = set_combine(sets.JA.Jump.MidACC,{
feet="Valorous Greaves",})
sets.JA["High Jump"].HighACC = set_combine(sets.JA.Jump.HighACC,{})
-- Spirit Jump Sets --
sets.JA["Spirit Jump"] = set_combine(sets.JA.Jump,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs="Pelt. Cuissots +1",
feet="Peltast's Schynbalds +1",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA["Spirit Jump"].MidACC = set_combine(sets.JA["Spirit Jump"],{
head="Sulevia's Mask +1",
neck="Combatant's Torque",
waist="Kentarch Belt +1",})
sets.JA["Spirit Jump"].HighACC = set_combine(sets.JA["Spirit Jump"].MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Soul Jump Sets --
sets.JA["Soul Jump"] = set_combine(sets.JA.Jump,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs="Pelt. Cuissots +1",
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA["Soul Jump"].MidACC = set_combine(sets.JA.Jump.MidACC,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs="Pelt. Cuissots +1",
feet="Valorous Greaves",
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA["Soul Jump"].HighACC = set_combine(sets.JA.Jump.HighACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Angon Set --
sets.JA.Angon = {ammo="Angon",ear1="Dragoon's Earring",hands="Pteroslaver Finger Gauntlets"}
sets.JA["Ancient Circle"] = {"Vishap Brais +1"}
sets.JA['Call Wyvern'] = {body="Pteroslaver Mail"}
sets.JA['Spirit Surge'] = {body="Pteroslaver Mail"}
sets.Pet = {}
-- Wyvern +HP Set --
sets.Pet.WyvernHP = {
head={ name="Ptero. Armet +1", augments={'Enhances "Deep Breathing" effect',}},
body={ name="Acro Surcoat", augments={'Pet: Mag. Acc.+25','Pet: Breath+8',}},
hands={ name="Acro Gauntlets", augments={'Pet: Mag. Acc.+17','Pet: Breath+8',}},
legs={ name="Acro Breeches", augments={'Pet: Mag. Acc.+18','Pet: Breath+8',}},
feet={ name="Acro Leggings", augments={'Pet: Mag. Acc.+25','Pet: Breath+8',}},
neck="Lancer's Torque",
waist="Glassblower's Belt",
left_ear="Anastasi Earring",
right_ear="Lancer's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.JA["Spirit Link"] = set_combine(sets.Pet.WyvernHP,{head="Vishap Armet +1",hands="Peltast's Vambraces +1", feet="Pteroslaver Greaves +1", right_ear="Pratik Earring",})
sets.Pet["Restoring Breath"] = set_combine(sets.Pet.WyvernHP)
sets.Pet["Smiting Breath"] = set_combine(sets.Pet.WyvernHP)
sets.Pet["Steady Wing"] = {
body={ name="Emicho Haubert", augments={'Pet: HP+100','Pet: INT+15','Pet: "Regen"+2',}},
neck="Chanoix's Gorget",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Vishap Brais +1",
feet={ name="Ptero. Greaves +1", augments={'Enhances "Empathy" effect',}},
left_ear="Anastasi Earring",
right_ear="Lancer's Earring",
back={ name="Updraft Mantle", augments={'STR+3','Pet: Breath+10','Pet: Damage taken -4%',}},}
-- Healing Breath Trigger: +HP Gear --
sets.HealingBreathTrigger = set_combine(sets.Pet.WyvernHP,{
head="Vishap Armet +1",
body="Sulevia's Plate. +1",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Pelt. Cuissots +1",
feet={ name="Ptero. Greaves +1", augments={'Enhances "Empathy" effect',}},
back="Reiki Cloak",})
-- Healing Breath Set --
sets.Healing_Breath = set_combine(sets.Pet.WyvernHP,{})
-- Elemental Breath Set
sets.Elemental_Breath = set_combine(sets.Pet.WyvernHP)
-- Waltz Set --
sets.Waltz = {}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Leyline Gloves",
legs="Enif Cosciales",
neck="Orunmila's Torque",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Veneficium Ring",
right_ring="Prolix Ring",}
sets.Midcast = {}
-- Magic Haste Set --
sets.Midcast.Haste = set_combine(sets.PDT,{
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Leyline Gloves",
legs="Enif Cosciales",
neck="Orunmila's Torque",
waist="Tempus Fugit",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Defending Ring",
right_ring="Prolix Ring",
back="Shadow Mantle",})
-- Stoneskin Set --
sets.Midcast.Stoneskin = {
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Stone Mufflers",
legs="Enif Cosciales",
neck="Stone Gorget",
waist="Tempus Fugit",
left_ear="Loquac. Earring",
right_ear="Earthcry Earring",
left_ring="Defending Ring",
right_ring="Prolix Ring",
back="Shadow Mantle",}
-- Cure Set --
sets.Midcast.Cure = {
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Leyline Gloves",
legs="Enif Cosciales",
neck="Orunmila's Torque",
waist="Tempus Fugit",
left_ear="Mendicant's Earring",
right_ear="Roundel Earring",
left_ring="Defending Ring",
right_ring="Prolix Ring",
back="Shadow Mantle",}
end
function pretarget(spell,action)
if midaction() or pet_midaction() then
cancel_spell()
return
elseif spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english == "Spirit Jump" and not pet.isvalid then -- Change Spirit Jump To Jump If Wyvern Is Not Present --
cancel_spell()
send_command('Jump')
elseif spell.english == "Soul Jump" and not pet.isvalid then -- Change Soul Jump To High Jump If Wyvern Is Not Present --
cancel_spell()
send_command('HighJump')
elseif spell.english == "Dismiss" and pet.hpp < 100 then -- Cancel Dismiss If Wyvern's HP Is Under 100% --
cancel_spell()
add_to_chat(123, spell.english .. ' Canceled: [' .. pet.hpp .. ']')
return
elseif spell.english == "Call Wyvern" and pet.isvalid then -- Change Call Wyvern To Dismiss If Wyvern Is Present --
cancel_spell()
send_command('Dismiss')
elseif spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
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)
end
end
function precast(spell,action)
if midaction() or pet_midaction() then
cancel_spell()
return
elseif spell.action_type == 'Ranged Attack' then
equip({ammo="Pebble"})
elseif spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[AttArray[AttIndex]] then
equipSet = equipSet[AttArray[AttIndex]]
end
if elements[spell.name] and elements[spell.name]:contains(world.day_element) then
equipSet = set_combine(equipSet,elements.equip)
end
if player.tp > 2990 or buffactive.Sekkanoki then -- Equip Kokou's Earring When You Have 3000 TP or Sekkanoki --
equipSet = set_combine(equipSet,{ear2="Kokou's Earring"})
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
equip(equipSet)
end
elseif spell.type == "JobAbility" then
equipSet = sets.JA
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if spell.english == "High Jump" and Brais == 'ON' then -- Use High Jump Enmity Toggle To Equip Vishap Brais +1 For High Jump --
equipSet = set_combine(equipSet,{legs="Vishap Brais +1"})
end
equip(equipSet)
elseif spell.action_type == 'Magic' then
if buffactive.silence or spell.target.distance > 16+target_distance then
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
return
else
if spell.english == 'Utsusemi: Ni' then
if buffactive['Copy Image (3)'] then
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: [3 Images]')
return
else
equip(sets.Precast.FastCast)
end
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
elseif spell.type == "PetCommand" then
equip(sets.Pet[spell.english])
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
function midcast(spell,action)
if pet_midaction() then
return
elseif spell.action_type == 'Ranged Attack' then
equip({ammo="Pebble"})
elseif spell.action_type == 'Magic' then
if (spell.english:startswith('Cur') or spell.english == "Wild Carrot" or spell.english == "Healing Breeze") and spell.english ~= "Cursna" then
equip(sets.Midcast.Cure)
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 2.8;cancel stoneskin')
end
equip(sets.Midcast.Stoneskin)
elseif spell.english:startswith('Protect') or spell.english:startswith('Shell') then
if spell.target.name == player.name then
equipSet = set_combine(equipSet,{ring2="Sheltered Ring"})
end
elseif spell.english == "Sneak" then
if spell.target.name == player.name and buffactive['Sneak'] then
send_command('cancel sneak')
end
equip(sets.Midcast.Haste)
elseif spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)']) then
send_command('@wait 1.7;cancel Copy Image*')
end
equip(sets.Midcast.Haste)
elseif spell.english == 'Monomi: Ichi' then
if buffactive['Sneak'] then
send_command('@wait 1.7;cancel sneak')
end
equip(sets.Midcast.Haste)
elseif Healer_Type_Wyvern:contains(player.sub_job) and player.hpp < 51 and pet.isvalid then
equip(sets.Healing_Breath_Trigger)
elseif Hybrid_Type_Wyvern:contains(player.sub_job) and player.hpp < 34 and pet.isvalid then
equip(sets.Healing_Breath_Trigger)
else
equip(sets.Midcast.Haste)
end
end
end
function aftercast(spell,action)
if pet_midaction() then
return
elseif not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
elseif spell.english == "Angon" then -- Angon Timer/Countdown --
timer_angon()
send_command('wait 80;input /echo '..spell.name..': [WEARING OFF IN 10 SEC.];wait 10;timers delete "Angon";input /echo '..spell.name..': [OFF]')
elseif spell.english == "Ancient Circle" then -- Ancient Circle Countdown --
send_command('wait 260;input /echo '..spell.name..': [WEARING OFF IN 10 SEC.];wait 10;input /echo '..spell.name..': [OFF]')
end
elseif not spell.type == "PetCommand" then
status_change(player.status)
end
end
function status_change(new,old)
check_equip_lock()
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[player.equipment.main] then
equipSet = equipSet[player.equipment.main]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if buffactive["Aftermath: Lv.3"] and equipSet["AM3"] then
if Rancor == 'ON' then -- Default Rancor Toggle Is Rancorous Mantle --
equipSet = set_combine(equipSet["AM3"],sets.TP.Rancor)
else -- Use Rancor Toggle For Atheling Mantle --
equipSet = equipSet["AM3"]
end
end
if buffactive.Ionis and equipSet["Ionis"] then
equipSet = equipSet["Ionis"]
end
if buffactive["Samurai Roll"] and equipSet["STP"] and Samurai_Roll == 'ON' then
equipSet = equipSet["STP"]
end
equip(equipSet)
else
equipSet = sets.Idle
if equipSet[IdleArray[IdleIndex]] then
equipSet = equipSet[IdleArray[IdleIndex]]
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
if world.area:endswith('Adoulin') then
equipSet = set_combine(equipSet,{body="Councilor's Garb"})
end
equip(equipSet)
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "aftermath: lv.3" then -- AM3 Timer/Countdown --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down;wait 150;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 15;input /echo Aftermath: Lv.3 [WEARING OFF IN 15 SEC.];wait 5;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(123,'AM3: [OFF]')
end
elseif buff == 'weakness' then -- Weakness Timer --
if gain then
send_command('timers create "Weakness" 300 up')
else
send_command('timers delete "Weakness"')
end
end
if buff == "sleep" and gain and player.hp > 200 and player.status == "Engaged" then -- Equip Berserker's Torque When You Are Asleep & Have 200+ HP --
equip({neck="Berserker's Torque"})
else
if not midaction() and not pet_midaction() then
status_change(player.status)
end
end
end
function pet_midcast(spell,action)
if spell.english:startswith('Healing') then
equip(sets.Healing_Breath)
elseif spell.target.type == 'MONSTER' then
equip(sets.Elemental_Breath)
end
end
function pet_aftercast(spell,action)
status_change(player.status)
end
function pet_change(pet,gain)
status_change(player.status)
end
-- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
function self_command(command)
if command == 'C1' then -- Accuracy Level Toggle --
AccIndex = (AccIndex % #AccArray) + 1
add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
status_change(player.status)
elseif command == 'C9' then -- Attack Toggle --
AttIndex = (AttIndex % #AttArray) + 1
add_to_chat(158,'Attack Level: '..AttArray[AttIndex])
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 == 'C2' then -- Hybrid Toggle --
if Armor == 'Hybrid' then
Armor = 'None'
add_to_chat(123,'Hybrid Set: [Unlocked]')
else
Armor = 'Hybrid'
add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
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 == 'C15' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C16' then -- Rancor Toggle --
if Rancor == 'ON' then
Rancor = 'OFF'
add_to_chat(123,'Rancor: [OFF]')
else
Rancor = 'ON'
add_to_chat(158,'Rancor: [ON]')
end
status_change(player.status)
elseif command == 'C10' then -- High Jump Enmity Toggle --
if Brais == 'ON' then
Brais = 'OFF'
add_to_chat(123,'High Jump Enmity: [OFF]')
else
Brais = 'ON'
add_to_chat(158,'High Jump Enmity: [ON]')
end
status_change(player.status)
elseif command == 'C17' then -- SAM Roll Toggle --
if Samurai_Roll == 'ON' then
Samurai_Roll = 'OFF'
add_to_chat(123,'SAM Roll: [OFF]')
else
Samurai_Roll = 'ON'
add_to_chat(158,'SAM Roll: [ON]')
end
status_change(player.status)
elseif command == 'C3' then -- Twilight Toggle --
if Twilight == 'Twilight' then
Twilight = 'None'
add_to_chat(123,'Twilight Set: [Unlocked]')
else
Twilight = 'Twilight'
add_to_chat(158,'Twilight 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 == 'TP' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function check_equip_lock() -- Lock Equipment Here --
if player.equipment.left_ring == "Warp Ring" or player.equipment.left_ring == "Capacity Ring" or player.equipment.right_ring == "Warp Ring" or player.equipment.right_ring == "Capacity Ring" then
disable('ring1','ring2')
elseif player.equipment.back == "Mecisto. Mantle" or player.equipment.back == "Aptitude Mantle +1" or player.equipment.back == "Aptitude Mantle" then
disable('back')
else
enable('ring1','ring2','back')
end
end
function timer_angon()
local duration = 90
send_command('timers create "Angon" '..tostring(duration)..' down')
end
function actualCost(originalCost)
if buffactive["Penury"] then
return originalCost*.5
elseif buffactive["Light Arts"] or buffactive["Addendum: White"] then
return originalCost*.9
elseif buffactive["Dark Arts"] or buffactive["Addendum: Black"] then
return originalCost*1.1
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 refine_waltz(spell,action)
if spell.type ~= 'Waltz' then
return
end
if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local missingHP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
if missingHP ~= nil then
if player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
add_to_chat(123,'Full HP!')
cancel_spell()
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
return
end
end
local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50, ['Curing Waltz IV'] = 65, ['Curing Waltz V'] = 80}
local tpCost = waltzTPCost[newWaltz]
local downgrade
if player.tp < tpCost and not buffactive.trance then
if player.tp < 20 then
add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
cancel_spell()
return
elseif player.tp < 35 then
newWaltz = 'Curing Waltz'
elseif player.tp < 50 then
newWaltz = 'Curing Waltz II'
elseif player.tp < 65 then
newWaltz = 'Curing Waltz III'
elseif player.tp < 80 then
newWaltz = 'Curing Waltz IV'
end
downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
if downgrade then
add_to_chat(158, downgrade)
end
cancel_spell()
return
end
if missingHP > 0 then
add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
function find_player_in_alliance(name)
for i,v in ipairs(alliance) do
for k,p in ipairs(v) do
if p.name == name then
return p
end
end
end
end
Cerberus.Quintow
Serveur: Cerberus
Game: FFXI
Posts: 150
By Cerberus.Quintow 2016-07-30 13:07:02
Sometimes when switching jobs from say thf/dnc to pld/war it'll have my dual wield engaged set as default but if I //lua r gearswap after job change it'll be correct in going to normal engaged mode. Anyway to circumvent this?
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-07-30 14:58:16
Hello, recently after adding Trishula to my lua i noticed it not swapping back from Breath gear post WS quite frequently, so i set out to try to find a fix, i noticed Bokura had a more up to date file so I'm trying to use that. Now rather than make a new Trishula set this time i just added ACC toggle to base TP, but now this new file is having way more issues. I just stay in the set of whatever the last action was. It loaded without error right away but its completely unusable atm and i have no clue what I'm doing, any assistance is greatly appreciated.
Code -- *** Credit goes to Flippant & Martel for helping me with this Gearswap *** --
-- ** I Use Some of Motenten's Functions ** --
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 4 Levels Of Accuracy Sets For TP/WS/Hybrid/Jump. First Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below. Most of These Sets Are Empty So You Need To Edit Them On Your Own. Remember To Check What The Combined Set Is For Each Sets. --
AttIndex = 1
AttArray = {"LowATT","HighATT","LowContent"} -- LowATT Is The Same As LowACC Set. MidACC, HighACC & MaxACC Take Priority Over These 2 Sets(HighATT & LowContent). --
IdleIndex = 1
IdleArray = {"Movement","Regen","Refresh"} -- Default Idle Set Is Movement --
Armor = 'None'
Twilight = 'None'
Rancor = 'OFF'-- Set Default Rancor ON or OFF Here --
Brais = 'OFF' -- Set Default High Jump Enmity Legs ON or OFF Here --
Samurai_Roll = 'ON' -- Set Default SAM Roll ON or OFF Here --
target_distance = 10 -- Set Default Distance Here --
-- Gavialis Helm --
elements = {}
elements.equip = {head="Gavialis Helm"}
elements.Stardiver = S{"Light","Dark","Earth"}
Cure_Spells = {"Cure","Cure II","Cure III","Cure IV"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II"} -- Curaga Degradation --
Healer_Type_Wyvern = S{"WHM","RDM","BLM","BLU","SCH","GEO","SMN"} -- 50% Healing Breath Trigger SubJob --
Hybrid_Type_Wyvern = S{"PLD","DRK","BRD","NIN","RUN"} -- 33% Healing Breath Trigger SubJob --
sc_map = {SC1="Drakesbane", SC2="SpiritJump", SC3="SoulJump"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
sets.Idle = {}
-- Idle/Town Sets --
sets.Idle.Regen = {
ammo="Staunch Tathlum",
head="Twilight Helm",
body="Kumarbi's Akar",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Bathy Choker +1",
waist="Lycopodium Sash",
right_ear="Infused Earring",
left_ear="Anastasi Earring",
left_ring="Paguroidea Ring",
right_ring="Shneddick Ring",
back="Shadow Mantle",}
sets.Idle.Movement = set_combine(sets.Idle.Regen,{})
sets.Idle.Refresh = set_combine(sets.Idle.Regen,{
--head="Wivre Hairpin",
body="Ares' Cuirass +1",
hands="Ogier's Gauntlets",
feet="Ogier's Leggings"})
-- Twilight Set --
sets.Twilight = {head="Twilight Helm",body="Twilight Mail"}
-- TP Base Set --
sets.TP = {
ammo="Ginsen",
head={ name="Otomi Helm", augments={'Haste+2','"Snapshot"+2','STR+8',}},
body="Valorous Mail",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.TP.MidACC = set_combine(sets.TP,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body={ name="Valorous Mail", augments={'Accuracy+24 Attack+24','"Dbl.Atk."+3','AGI+7','Accuracy+10',}},
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Ganesha's Mala",
waist="Ioskeha Belt",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},
})
sets.TP.HighACC = set_combine(sets.TP.MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Ryunohige(AM3 Down) TP Sets --
sets.TP.Ryunohige = {
ammo="Ginsen",
head={ name="Otomi Helm", augments={'Haste+2','"Snapshot"+2','STR+8',}},
body="Valorous Mail",
--body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.TP.Ryunohige.MidACC = set_combine(sets.TP.Ryunohige,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body={ name="Valorous Mail", augments={'Accuracy+24 Attack+24','"Dbl.Atk."+3','AGI+7','Accuracy+10',}},
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','DEX+8',}},
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Ganesha's Mala",
waist="Ioskeha Belt",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.TP.Ryunohige.HighACC = set_combine(sets.TP.Ryunohige.MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Ryunohige(AM3 Up) TP Sets --
sets.TP.Ryunohige.AM3 = set_combine(sets.TP.Ryunohige,{
ammo="Ginsen",
head={ name="Acro Helm", augments={'Accuracy+19 Attack+19','"Store TP"+6','STR+4 DEX+4',}},
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Acro Breeches", augments={'Accuracy+18 Attack+18','"Store TP"+6','STR+7',}},
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
right_ear="Tripudio Earring",
left_ear="Cessance Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.TP.Ryunohige.MidACC.AM3 = set_combine(sets.TP.Ryunohige.AM3,{
ammo="Ginsen",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs={ name="Acro Breeches", augments={'Accuracy+18 Attack+18','"Store TP"+6','STR+7',}},
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
right_ear="Tripudio Earring",
left_ear="Cessance Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.TP.Ryunohige.HighACC.AM3 = set_combine(sets.TP.Ryunohige.MidACC.AM3,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Ioskeha Belt",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Ryunohige(AM3 Down: Ionis) TP Sets --
sets.TP.Ryunohige.Ionis = set_combine(sets.TP.Ryunohige,{})
sets.TP.Ryunohige.MidACC.Ionis = set_combine(sets.TP.Ryunohige.MidACC,{})
sets.TP.Ryunohige.HighACC.Ionis = set_combine(sets.TP.Ryunohige.HighACC,{})
-- Ryunohige(AM3 Up: Ionis) TP Sets --
sets.TP.Ryunohige.AM3.Ionis = set_combine(sets.TP.Ryunohige.AM3,{})
sets.TP.Ryunohige.MidACC.AM3.Ionis = set_combine(sets.TP.Ryunohige.MidACC.AM3,{})
sets.TP.Ryunohige.HighACC.AM3.Ionis = set_combine(sets.TP.Ryunohige.HighACC.AM3,{})
-- Ryunohige(AM3 Down: SAM Roll) TP Sets --
sets.TP.Ryunohige.STP = set_combine(sets.TP.Ryunohige,{})
sets.TP.Ryunohige.MidACC.STP = set_combine(sets.TP.Ryunohige.MidACC,{})
sets.TP.Ryunohige.HighACC.STP = set_combine(sets.TP.Ryunohige.HighACC,{})
-- Ryunohige(AM3 Up: SAM Roll) TP Sets --
sets.TP.Ryunohige.AM3.STP = set_combine(sets.TP.Ryunohige.AM3,{})
sets.TP.Ryunohige.MidACC.AM3.STP = set_combine(sets.TP.Ryunohige.MidACC.AM3,{})
sets.TP.Ryunohige.HighACC.AM3.STP = set_combine(sets.TP.Ryunohige.HighACC.AM3,{})
-- Ryunohige(AM3 Down: Ionis + SAM Roll) TP Sets --
sets.TP.Ryunohige.Ionis.STP = set_combine(sets.TP.Ryunohige,{})
sets.TP.Ryunohige.MidACC.Ionis.STP = set_combine(sets.TP.Ryunohige.MidACC,{})
sets.TP.Ryunohige.HighACC.Ionis.STP = set_combine(sets.TP.Ryunohige.HighACC,{})
-- Ryunohige(AM3 Up: Ionis + SAM Roll) TP Sets --
sets.TP.Ryunohige.AM3.Ionis.STP = set_combine(sets.TP.Ryunohige.AM3,{})
sets.TP.Ryunohige.MidACC.AM3.Ionis.STP = set_combine(sets.TP.Ryunohige.MidACC.AM3,{})
sets.TP.Ryunohige.HighACC.AM3.Ionis.STP = set_combine(sets.TP.Ryunohige.HighACC.AM3,{})
-- Gungnir TP Sets --
sets.TP.Gungnir = {}
sets.TP.Gungnir.MidACC = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.HighACC = set_combine(sets.TP.Gungnir.MidACC,{})
-- Gungnir(Ionis) TP Sets --
sets.TP.Gungnir.Ionis = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.MidACC.Ionis = set_combine(sets.TP.Gungnir.MidACC,{})
sets.TP.Gungnir.HighACC.Ionis = set_combine(sets.TP.Gungnir.HighACC,{})
-- Gungnir(SAM Roll) TP Sets --
sets.TP.Gungnir.STP = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.MidACC.STP = set_combine(sets.TP.Gungnir.MidACC,{})
sets.TP.Gungnir.HighACC.STP = set_combine(sets.TP.Gungnir.HighACC,{})
-- Gungnir(Ionis + SAM Roll) TP Sets --
sets.TP.Gungnir.Ionis.STP = set_combine(sets.TP.Gungnir,{})
sets.TP.Gungnir.MidACC.Ionis.STP = set_combine(sets.TP.Gungnir.MidACC,{})
sets.TP.Gungnir.HighACC.Ionis.STP = set_combine(sets.TP.Gungnir.HighACC,{})
-- Rhongomiant TP Sets --
sets.TP.Rhongomiant = {}
sets.TP.Rhongomiant.MidACC = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.HighACC = set_combine(sets.TP.Rhongomiant.MidACC,{})
-- Rhongomiant(Ionis) TP Sets --
sets.TP.Rhongomiant.Ionis = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.MidACC.Ionis = set_combine(sets.TP.Rhongomiant.MidACC,{})
sets.TP.Rhongomiant.HighACC.Ionis = set_combine(sets.TP.Rhongomiant.HighACC,{})
-- Rhongomiant(SAM Roll) TP Sets --
sets.TP.Rhongomiant.STP = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.MidACC.STP = set_combine(sets.TP.Rhongomiant.MidACC,{})
sets.TP.Rhongomiant.HighACC.STP = set_combine(sets.TP.Rhongomiant.HighACC,{})
-- Rhongomiant(Ionis + SAM Roll) TP Sets --
sets.TP.Rhongomiant.Ionis.STP = set_combine(sets.TP.Rhongomiant,{})
sets.TP.Rhongomiant.MidACC.Ionis.STP = set_combine(sets.TP.Rhongomiant.MidACC,{})
sets.TP.Rhongomiant.HighACC.Ionis.STP = set_combine(sets.TP.Rhongomiant.HighACC,{})
-- Upukirex TP Sets --
sets.TP.Upukirex = {}
sets.TP.Upukirex.MidACC = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.HighACC = set_combine(sets.TP.Upukirex.MidACC,{})
-- Upukirex(Ionis) TP Sets --
sets.TP.Upukirex.Ionis = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.MidACC.Ionis = set_combine(sets.TP.Upukirex.MidACC,{})
sets.TP.Upukirex.HighACC.Ionis = set_combine(sets.TP.Upukirex.HighACC,{})
-- Upukirex(SAM Roll) TP Sets --
sets.TP.Upukirex.STP = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.MidACC.STP = set_combine(sets.TP.Upukirex.MidACC,{})
sets.TP.Upukirex.HighACC.STP = set_combine(sets.TP.Upukirex.HighACC,{})
-- Upukirex(Ionis + SAM Roll) TP Sets --
sets.TP.Upukirex.Ionis.STP = set_combine(sets.TP.Upukirex,{})
sets.TP.Upukirex.MidACC.Ionis.STP = set_combine(sets.TP.Upukirex.MidACC,{})
sets.TP.Upukirex.HighACC.Ionis.STP = set_combine(sets.TP.Upukirex.HighACC,{})
-- AM3 Rancor ON Mantle --
sets.TP.Rancor = {back="Rancorous Mantle"}
-- PDT/MDT Sets --
sets.PDT = {
ammo="Staunch Tathlum",
head="Sulevia's Mask +1",
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Twilight Torque",
waist="Flume Belt",
left_ear="Genmei Earring",
right_ear="Etiolation Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Shadow Mantle",}
sets.MDT = set_combine(sets.PDT,{
ammo="Staunch Tathlum",
waist="Nierenschutz",
left_ear="Sanare Earring",
right_ear="Etiolation Earring",
right_ring="Shadow Ring",
back="Engulfer Cape +1",})
-- Hybrid Sets --
sets.TP.Hybrid = set_combine(sets.PDT,{
ammo="Hasty Pinion +1",
head="Sulevia's Mask +1",
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Twilight Torque",
waist="Tempus Fugit",
left_ear="Genmei Earring",
right_ear="Digni. Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back="Agema Cape",})
sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
-- WS Base Set --
sets.WS = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},}
-- Drakesbane Sets --
sets.WS.Drakesbane = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Pelt. Cuissots +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},}
sets.WS.Drakesbane.MidACC = set_combine(sets.WS.Drakesbane,{
})
sets.WS.Drakesbane.HighACC = set_combine(sets.WS.Drakesbane.MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
right_ear="Zwazo Earring +1",
left_ear="Zennaroi Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Drakesbane(Low Level Content) Set --
sets.WS.Drakesbane.LowContent = set_combine(sets.WS.Drakesbane,{})
-- Drakesbane(High Attack) Set --
sets.WS.Drakesbane.HighATT = set_combine(sets.WS.Drakesbane,{})
-- Stardiver Sets --
sets.WS.Stardiver = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands="Sulev. Gauntlets +1",
legs="Valorous Hose",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},}
sets.WS.Stardiver.MidACC = set_combine(sets.WS.Stardiver,{
--legs="Sulevi. Cuisses +1",
})
sets.WS.Stardiver.HighACC = set_combine(sets.WS.Stardiver.MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
right_ear="Zwazo Earring +1",
left_ear="Zennaroi Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Geirskogul Set --
sets.WS.Geirskogul = {}
-- Camlann's Torment Set --
sets.WS["Camlann's Torment"] = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},}
sets.WS["Camlann's Torment"].MidACC = set_combine(sets.WS["Camlann's Torment"],{
})
sets.WS["Camlann's Torment"].HighACC = set_combine(sets.WS["Camlann's Torment"].MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
left_ear="Zennaroi Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
--Sonic Thrust Sets--
sets.WS["Sonic Thrust"] = {
ammo="Floestone",
head={ name="Valorous Mask", augments={'Accuracy+21 Attack+21','Sklchn.dmg.+2%','STR+14','Attack+9',}},
body="Sulevia's Plate. +1",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Sulevi. Cuisses +1",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back={ name="Brigantia's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},}
sets.WS["Sonic Thrust"].MidACC = set_combine(sets.WS["Sonic Thrust"],{
})
sets.WS["Sonic Thrust"].HighACC = set_combine(sets.WS["Sonic Thrust"].MidACC,{
ammo="Hasty Pinion +1",
head="Ynglinga Sallet",
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Olseni Belt",
left_ear="Zennaroi Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +25',}},
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA = {}
-- Jump Sets --
sets.JA.Jump = {
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Vishap Mail +1",
hands="Vishap F. G. +1",
legs="Pelt. Cuissots +1",
feet="Vishap Greaves +1",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.JA.Jump.MidACC = set_combine(sets.JA.Jump,{
head="Sulevia's Mask +1",
neck="Combatant's Torque",
waist="Kentarch Belt +1",})
sets.JA.Jump.HighACC = set_combine(sets.JA.Jump.MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- High Jump Sets --
sets.JA["High Jump"] = set_combine(sets.JA.Jump,{
feet="Valorous Greaves",})
sets.JA["High Jump"].MidACC = set_combine(sets.JA.Jump.MidACC,{
feet="Valorous Greaves",})
sets.JA["High Jump"].HighACC = set_combine(sets.JA.Jump.HighACC,{})
-- Spirit Jump Sets --
sets.JA["Spirit Jump"] = set_combine(sets.JA.Jump,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs="Pelt. Cuissots +1",
feet="Peltast's Schynbalds +1",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA["Spirit Jump"].MidACC = set_combine(sets.JA["Spirit Jump"],{
head="Sulevia's Mask +1",
neck="Combatant's Torque",
waist="Kentarch Belt +1",})
sets.JA["Spirit Jump"].HighACC = set_combine(sets.JA["Spirit Jump"].MidACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Soul Jump Sets --
sets.JA["Soul Jump"] = set_combine(sets.JA.Jump,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs="Pelt. Cuissots +1",
feet="Valorous Greaves",
neck="Ganesha's Mala",
waist="Sweordfaetels +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA["Soul Jump"].MidACC = set_combine(sets.JA.Jump.MidACC,{
ammo="Ginsen",
head="Sulevia's Mask +1",
body="Pelt. Plackart +1",
hands={ name="Acro Gauntlets", augments={'Accuracy+19 Attack+19','"Store TP"+6','DEX+10',}},
legs="Pelt. Cuissots +1",
feet="Valorous Greaves",
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Cessance Earring",
right_ear="Tripudio Earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
sets.JA["Soul Jump"].HighACC = set_combine(sets.JA.Jump.HighACC,{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+13 Attack+13','"Store TP"+6','DEX+5','Accuracy+12','Attack+12',}},
body="Valorous Mail",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet={ name="Valorous Greaves", augments={'Accuracy+21 Attack+21','"Store TP"+7','Accuracy+11',}},
neck="Combatant's Torque",
waist="Kentarch Belt +1",
left_ear="Zennaroi Earring",
right_ear="Digni. Earring",
left_ring="Ramuh Ring +1",
right_ring="Begrudging Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},})
-- Angon Set --
sets.JA.Angon = {ammo="Angon",ear1="Dragoon's Earring",hands="Pteroslaver Finger Gauntlets"}
sets.JA["Ancient Circle"] = {"Vishap Brais +1"}
sets.JA['Call Wyvern'] = {body="Pteroslaver Mail"}
sets.JA['Spirit Surge'] = {body="Pteroslaver Mail"}
sets.Pet = {}
-- Wyvern +HP Set --
sets.Pet.WyvernHP = {
head={ name="Ptero. Armet +1", augments={'Enhances "Deep Breathing" effect',}},
body={ name="Acro Surcoat", augments={'Pet: Mag. Acc.+25','Pet: Breath+8',}},
hands={ name="Acro Gauntlets", augments={'Pet: Mag. Acc.+17','Pet: Breath+8',}},
legs={ name="Acro Breeches", augments={'Pet: Mag. Acc.+18','Pet: Breath+8',}},
feet={ name="Acro Leggings", augments={'Pet: Mag. Acc.+25','Pet: Breath+8',}},
neck="Lancer's Torque",
waist="Glassblower's Belt",
left_ear="Anastasi Earring",
right_ear="Lancer's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Brigantia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}},}
sets.JA["Spirit Link"] = set_combine(sets.Pet.WyvernHP,{head="Vishap Armet +1",hands="Peltast's Vambraces +1", feet="Pteroslaver Greaves +1", right_ear="Pratik Earring",})
sets.Pet["Restoring Breath"] = set_combine(sets.Pet.WyvernHP)
sets.Pet["Smiting Breath"] = set_combine(sets.Pet.WyvernHP)
sets.Pet["Steady Wing"] = {
body={ name="Emicho Haubert", augments={'Pet: HP+100','Pet: INT+15','Pet: "Regen"+2',}},
neck="Chanoix's Gorget",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Vishap Brais +1",
feet={ name="Ptero. Greaves +1", augments={'Enhances "Empathy" effect',}},
left_ear="Anastasi Earring",
right_ear="Lancer's Earring",
back={ name="Updraft Mantle", augments={'STR+3','Pet: Breath+10','Pet: Damage taken -4%',}},}
-- Healing Breath Trigger: +HP Gear --
sets.HealingBreathTrigger = set_combine(sets.Pet.WyvernHP,{
head="Vishap Armet +1",
body="Sulevia's Plate. +1",
hands={ name="Despair Fin. Gaunt.", augments={'STR+12','VIT+7','Haste+2%',}},
legs="Pelt. Cuissots +1",
feet={ name="Ptero. Greaves +1", augments={'Enhances "Empathy" effect',}},
back="Reiki Cloak",})
-- Healing Breath Set --
sets.Healing_Breath = set_combine(sets.Pet.WyvernHP,{})
-- Elemental Breath Set
sets.Elemental_Breath = set_combine(sets.Pet.WyvernHP)
-- Waltz Set --
sets.Waltz = {}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Leyline Gloves",
legs="Enif Cosciales",
neck="Orunmila's Torque",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Veneficium Ring",
right_ring="Prolix Ring",}
sets.Midcast = {}
-- Magic Haste Set --
sets.Midcast.Haste = set_combine(sets.PDT,{
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Leyline Gloves",
legs="Enif Cosciales",
neck="Orunmila's Torque",
waist="Tempus Fugit",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Defending Ring",
right_ring="Prolix Ring",
back="Shadow Mantle",})
-- Stoneskin Set --
sets.Midcast.Stoneskin = {
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Stone Mufflers",
legs="Enif Cosciales",
neck="Stone Gorget",
waist="Tempus Fugit",
left_ear="Loquac. Earring",
right_ear="Earthcry Earring",
left_ring="Defending Ring",
right_ring="Prolix Ring",
back="Shadow Mantle",}
-- Cure Set --
sets.Midcast.Cure = {
ammo="Impatiens",
head={ name="Cizin Helm +1", augments={'Phys. dmg. taken -3%','Accuracy+4',}},
hands="Leyline Gloves",
legs="Enif Cosciales",
neck="Orunmila's Torque",
waist="Tempus Fugit",
left_ear="Mendicant's Earring",
right_ear="Roundel Earring",
left_ring="Defending Ring",
right_ring="Prolix Ring",
back="Shadow Mantle",}
end
function pretarget(spell,action)
if midaction() or pet_midaction() then
cancel_spell()
return
elseif spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english == "Spirit Jump" and not pet.isvalid then -- Change Spirit Jump To Jump If Wyvern Is Not Present --
cancel_spell()
send_command('Jump')
elseif spell.english == "Soul Jump" and not pet.isvalid then -- Change Soul Jump To High Jump If Wyvern Is Not Present --
cancel_spell()
send_command('HighJump')
elseif spell.english == "Dismiss" and pet.hpp < 100 then -- Cancel Dismiss If Wyvern's HP Is Under 100% --
cancel_spell()
add_to_chat(123, spell.english .. ' Canceled: [' .. pet.hpp .. ']')
return
elseif spell.english == "Call Wyvern" and pet.isvalid then -- Change Call Wyvern To Dismiss If Wyvern Is Present --
cancel_spell()
send_command('Dismiss')
elseif spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
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)
end
end
function precast(spell,action)
if midaction() or pet_midaction() then
cancel_spell()
return
elseif spell.action_type == 'Ranged Attack' then
equip({ammo="Pebble"})
elseif spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[AttArray[AttIndex]] then
equipSet = equipSet[AttArray[AttIndex]]
end
if elements[spell.name] and elements[spell.name]:contains(world.day_element) then
equipSet = set_combine(equipSet,elements.equip)
end
if player.tp > 2990 or buffactive.Sekkanoki then -- Equip Kokou's Earring When You Have 3000 TP or Sekkanoki --
equipSet = set_combine(equipSet,{ear2="Kokou's Earring"})
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
equip(equipSet)
end
elseif spell.type == "JobAbility" then
equipSet = sets.JA
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if spell.english == "High Jump" and Brais == 'ON' then -- Use High Jump Enmity Toggle To Equip Vishap Brais +1 For High Jump --
equipSet = set_combine(equipSet,{legs="Vishap Brais +1"})
end
equip(equipSet)
elseif spell.action_type == 'Magic' then
if buffactive.silence or spell.target.distance > 16+target_distance then
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
return
else
if spell.english == 'Utsusemi: Ni' then
if buffactive['Copy Image (3)'] then
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: [3 Images]')
return
else
equip(sets.Precast.FastCast)
end
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
elseif spell.type == "PetCommand" then
equip(sets.Pet[spell.english])
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
function midcast(spell,action)
if pet_midaction() then
return
elseif spell.action_type == 'Ranged Attack' then
equip({ammo="Pebble"})
elseif spell.action_type == 'Magic' then
if (spell.english:startswith('Cur') or spell.english == "Wild Carrot" or spell.english == "Healing Breeze") and spell.english ~= "Cursna" then
equip(sets.Midcast.Cure)
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 2.8;cancel stoneskin')
end
equip(sets.Midcast.Stoneskin)
elseif spell.english:startswith('Protect') or spell.english:startswith('Shell') then
if spell.target.name == player.name then
equipSet = set_combine(equipSet,{ring2="Sheltered Ring"})
end
elseif spell.english == "Sneak" then
if spell.target.name == player.name and buffactive['Sneak'] then
send_command('cancel sneak')
end
equip(sets.Midcast.Haste)
elseif spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)']) then
send_command('@wait 1.7;cancel Copy Image*')
end
equip(sets.Midcast.Haste)
elseif spell.english == 'Monomi: Ichi' then
if buffactive['Sneak'] then
send_command('@wait 1.7;cancel sneak')
end
equip(sets.Midcast.Haste)
elseif Healer_Type_Wyvern:contains(player.sub_job) and player.hpp < 51 and pet.isvalid then
equip(sets.Healing_Breath_Trigger)
elseif Hybrid_Type_Wyvern:contains(player.sub_job) and player.hpp < 34 and pet.isvalid then
equip(sets.Healing_Breath_Trigger)
else
equip(sets.Midcast.Haste)
end
end
end
function aftercast(spell,action)
if pet_midaction() then
return
elseif not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
elseif spell.english == "Angon" then -- Angon Timer/Countdown --
timer_angon()
send_command('wait 80;input /echo '..spell.name..': [WEARING OFF IN 10 SEC.];wait 10;timers delete "Angon";input /echo '..spell.name..': [OFF]')
elseif spell.english == "Ancient Circle" then -- Ancient Circle Countdown --
send_command('wait 260;input /echo '..spell.name..': [WEARING OFF IN 10 SEC.];wait 10;input /echo '..spell.name..': [OFF]')
end
elseif not spell.type == "PetCommand" then
status_change(player.status)
end
end
function status_change(new,old)
check_equip_lock()
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[player.equipment.main] then
equipSet = equipSet[player.equipment.main]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if buffactive["Aftermath: Lv.3"] and equipSet["AM3"] then
if Rancor == 'ON' then -- Default Rancor Toggle Is Rancorous Mantle --
equipSet = set_combine(equipSet["AM3"],sets.TP.Rancor)
else -- Use Rancor Toggle For Atheling Mantle --
equipSet = equipSet["AM3"]
end
end
if buffactive.Ionis and equipSet["Ionis"] then
equipSet = equipSet["Ionis"]
end
if buffactive["Samurai Roll"] and equipSet["STP"] and Samurai_Roll == 'ON' then
equipSet = equipSet["STP"]
end
equip(equipSet)
else
equipSet = sets.Idle
if equipSet[IdleArray[IdleIndex]] then
equipSet = equipSet[IdleArray[IdleIndex]]
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
if world.area:endswith('Adoulin') then
equipSet = set_combine(equipSet,{body="Councilor's Garb"})
end
equip(equipSet)
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "aftermath: lv.3" then -- AM3 Timer/Countdown --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down;wait 150;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 15;input /echo Aftermath: Lv.3 [WEARING OFF IN 15 SEC.];wait 5;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(123,'AM3: [OFF]')
end
elseif buff == 'weakness' then -- Weakness Timer --
if gain then
send_command('timers create "Weakness" 300 up')
else
send_command('timers delete "Weakness"')
end
end
if buff == "sleep" and gain and player.hp > 200 and player.status == "Engaged" then -- Equip Berserker's Torque When You Are Asleep & Have 200+ HP --
equip({neck="Berserker's Torque"})
else
if not midaction() and not pet_midaction() then
status_change(player.status)
end
end
end
function pet_midcast(spell,action)
if spell.english:startswith('Healing') then
equip(sets.Healing_Breath)
elseif spell.target.type == 'MONSTER' then
equip(sets.Elemental_Breath)
end
end
function pet_aftercast(spell,action)
status_change(player.status)
end
function pet_change(pet,gain)
status_change(player.status)
end
-- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
function self_command(command)
if command == 'C1' then -- Accuracy Level Toggle --
AccIndex = (AccIndex % #AccArray) + 1
add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
status_change(player.status)
elseif command == 'C9' then -- Attack Toggle --
AttIndex = (AttIndex % #AttArray) + 1
add_to_chat(158,'Attack Level: '..AttArray[AttIndex])
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 == 'C2' then -- Hybrid Toggle --
if Armor == 'Hybrid' then
Armor = 'None'
add_to_chat(123,'Hybrid Set: [Unlocked]')
else
Armor = 'Hybrid'
add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
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 == 'C15' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C16' then -- Rancor Toggle --
if Rancor == 'ON' then
Rancor = 'OFF'
add_to_chat(123,'Rancor: [OFF]')
else
Rancor = 'ON'
add_to_chat(158,'Rancor: [ON]')
end
status_change(player.status)
elseif command == 'C10' then -- High Jump Enmity Toggle --
if Brais == 'ON' then
Brais = 'OFF'
add_to_chat(123,'High Jump Enmity: [OFF]')
else
Brais = 'ON'
add_to_chat(158,'High Jump Enmity: [ON]')
end
status_change(player.status)
elseif command == 'C17' then -- SAM Roll Toggle --
if Samurai_Roll == 'ON' then
Samurai_Roll = 'OFF'
add_to_chat(123,'SAM Roll: [OFF]')
else
Samurai_Roll = 'ON'
add_to_chat(158,'SAM Roll: [ON]')
end
status_change(player.status)
elseif command == 'C3' then -- Twilight Toggle --
if Twilight == 'Twilight' then
Twilight = 'None'
add_to_chat(123,'Twilight Set: [Unlocked]')
else
Twilight = 'Twilight'
add_to_chat(158,'Twilight 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 == 'TP' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function check_equip_lock() -- Lock Equipment Here --
if player.equipment.left_ring == "Warp Ring" or player.equipment.left_ring == "Capacity Ring" or player.equipment.right_ring == "Warp Ring" or player.equipment.right_ring == "Capacity Ring" then
disable('ring1','ring2')
elseif player.equipment.back == "Mecisto. Mantle" or player.equipment.back == "Aptitude Mantle +1" or player.equipment.back == "Aptitude Mantle" then
disable('back')
else
enable('ring1','ring2','back')
end
end
function timer_angon()
local duration = 90
send_command('timers create "Angon" '..tostring(duration)..' down')
end
function actualCost(originalCost)
if buffactive["Penury"] then
return originalCost*.5
elseif buffactive["Light Arts"] or buffactive["Addendum: White"] then
return originalCost*.9
elseif buffactive["Dark Arts"] or buffactive["Addendum: Black"] then
return originalCost*1.1
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 refine_waltz(spell,action)
if spell.type ~= 'Waltz' then
return
end
if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local missingHP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
if missingHP ~= nil then
if player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
add_to_chat(123,'Full HP!')
cancel_spell()
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
return
end
end
local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50, ['Curing Waltz IV'] = 65, ['Curing Waltz V'] = 80}
local tpCost = waltzTPCost[newWaltz]
local downgrade
if player.tp < tpCost and not buffactive.trance then
if player.tp < 20 then
add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
cancel_spell()
return
elseif player.tp < 35 then
newWaltz = 'Curing Waltz'
elseif player.tp < 50 then
newWaltz = 'Curing Waltz II'
elseif player.tp < 65 then
newWaltz = 'Curing Waltz III'
elseif player.tp < 80 then
newWaltz = 'Curing Waltz IV'
end
downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
if downgrade then
add_to_chat(158, downgrade)
end
cancel_spell()
return
end
if missingHP > 0 then
add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
function find_player_in_alliance(name)
for i,v in ipairs(alliance) do
for k,p in ipairs(v) do
if p.name == name then
return p
end
end
end
end
Change the aftercast function to Code function aftercast(spell,action)
if pet_midaction() or spell.type == "PetCommand" then
return
elseif not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
elseif spell.english == "Angon" then -- Angon Timer/Countdown --
timer_angon()
send_command('wait 80;input /echo '..spell.name..': [WEARING OFF IN 10 SEC.];wait 10;timers delete "Angon";input /echo '..spell.name..': [OFF]')
elseif spell.english == "Ancient Circle" then -- Ancient Circle Countdown --
send_command('wait 260;input /echo '..spell.name..': [WEARING OFF IN 10 SEC.];wait 10;input /echo '..spell.name..': [OFF]')
end
end
status_change(player.status)
end
Sometimes when switching jobs from say thf/dnc to pld/war it'll have my dual wield engaged set as default but if I //lua r gearswap after job change it'll be correct in going to normal engaged mode. Anyway to circumvent this?
That's..interesting. Are you saying your variables aren't getting reset when you change jobs? Can you post your files for PLD?
I notice you're also the person with a problem with NIN feet, can you post your files for that as well.
Phoenix.Gerrott
Serveur: Phoenix
Game: FFXI
Posts: 158
By Phoenix.Gerrott 2016-07-30 16:31:22
With brief testing seems to have fixed everything but steady wing for some reason. Not a big deal though, just a prefight JA anyways. Thank you very much.
Cerberus.Quintow
Serveur: Cerberus
Game: FFXI
Posts: 150
By Cerberus.Quintow 2016-07-30 16:43:17
Thanks Flippant for all you do.
My Pld.lua 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', 'Mod')
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()
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(2, 11)
elseif player.sub_job == 'NIN' then
set_macro_page(3, 11)
elseif player.sub_job == 'RDM' then
set_macro_page(4, 11)
else
set_macro_page(1, 11)
end
end
My Pld_Gear.lua Code --------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Invincible'] = {legs="Caballarius Breeches"}
sets.precast.JA['Holy Circle'] = {feet="Reverence Leggings +1"}
sets.precast.JA['Shield Bash'] = {hands="Cab. Gauntlets"}
sets.precast.JA['Sentinel'] = {feet="Caballarius Leggings"}
sets.precast.JA['Rampart'] = {head="Caballarius Coronet"}
sets.precast.JA['Fealty'] = {body="Caballarius Surcoat"}
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="Leviathan Ring",ring2="Aquasoul Ring",
back="Weard Mantle",legs="Reverence Breeches +1",feet="Whirlpool Greaves"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {ammo="Sonia's Plectrum",
head="Reverence Coronet +1",
body="Gorney Haubert +1",hands="Reverence Gauntlets +1",ring2="Asklepian Ring",
back="Iximulew Cape",waist="Caudata Belt",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="Chevalier's Armet",ear2="Loquac. Earring",hands="Leyline Gloves",ring1="Weather. Ring"}
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="Valorous Mask",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Gorney Haubert +1",hands="Odyssean Gauntlets",ring1="Rajas Ring",ring2="Cho'j Band",
back="Atheling Mantle",waist="Fotia Belt",legs="Cizin Breeches",feet="Whirlpool Greaves"}
sets.precast.WS.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Gorney Haubert +1",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Patricius Ring",
back="Atheling Mantle",waist="Fotia Belt",legs="Cizin Breeches",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="Leviathan Ring",ring2="Aquasoul Ring"})
sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS.Acc, {ring1="Leviathan Ring"})
sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {hands="Buremte Gloves",waist="Zoran's Belt"})
sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS.Acc, {waist="Zoran's Belt"})
sets.precast.WS['Sanguine Blade'] = {ammo="Ginsen",
head="Reverence Coronet +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Shiva Ring",ring2="K'ayres Ring",
back="Toro Cape",waist="Caudata Belt",legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.precast.WS['Atonement'] = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Fotia Gorget",ear1="Creed Earring",ear2="Steelflash Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Rajas Ring",ring2="Vexer Ring",
back="Fierabras's Mantle",waist="Fotia Belt",legs="Reverence Breeches +1",feet="Caballarius Leggings"}
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {
head="Chevalier's Armet",
body="Emet Harness",hands="Leyline Gloves",
waist="Phasmida Belt",feet="Ejekamal Boots"}
sets.midcast.Enmity = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Invidia Torque",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Vexer Ring",
back="Fierabras's Mantle",waist="Goading Belt",legs="Reverence Breeches +1",feet="Caballarius Leggings"}
sets.midcast.Flash = set_combine(sets.midcast.Enmity, {legs=""})
sets.midcast.Stun = sets.midcast.Flash
sets.midcast.Cure = {ammo="Iron Gobbet",
head="Adaman Barbuta",neck="Invidia Torque",ear1="Hospitaler Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Buremte Gloves",ring1="Kunaji Ring",ring2="Asklepian Ring",
back="Fierabras's Mantle",waist="Chuq'aba Belt",legs="Reverence Breeches +1",feet="Caballarius Leggings"}
sets.midcast['Enhancing Magic'] = {neck="Colossus's Torque",waist="Olympus Sash",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 = {neck="Creed Collar",
ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt"}
-- Idle sets
sets.idle = {ammo="Homiliary",
head="Ogier's Helm",neck="Creed Collar",ear1="Merman's Earring",ear2="Merman's Earring",
body="Cab. Surcoat",hands="Odyssean Gauntlets",ring1="Sheltered Ring",ring2="Dark Ring",
back="Weard Mantle",waist="Nierenschutz",legs="Blood Cuisses",feet="Founder's Greaves"}
sets.idle.Town = {ammo="Homiliary",
head="Ogier's Helm",neck="Creed Collar",ear1="Merman's Earring",ear2="Merman's Earring",
body="Cab. Surcoat",hands="Odyssean Gauntlets",ring1="Sheltered Ring",ring2="Dark Ring",
back="Weard Mantle",waist="Nierenschutz",legs="Blood Cuisses",feet="Founder's Greaves"}
sets.idle.Weak = {ammo="Homiliary",
head="Ogier's Helm",neck="Creed Collar",ear1="Merman's Earring",ear2="Merman's Earring",
body="Cab. Surcoat",hands="Odyssean Gauntlets",ring1="Sheltered Ring",ring2="Dark Ring",
back="Weard Mantle",waist="Nierenschutz",legs="Blood Cuisses",feet="Founder's Greaves"}
sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
sets.Kiting = {legs="Blood 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="Anahera Sword",sub="Killedar Shield"} -- Ochain
sets.MagicalShield = {main="Anahera Sword",sub="Beatific Shield +1"} -- Aegis
-- Basic defense sets.
sets.defense.PDT = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Buckler Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Shadow Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.defense.HP = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Defending Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Creed Baudrier",legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.defense.Reraise = {ammo="Iron Gobbet",
head="Twilight Helm",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Twilight Mail",hands="Reverence Gauntlets +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Weard Mantle",waist="Nierenschutz",legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.defense.Charm = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Lavalier +1",ear1="Creed Earring",ear2="Buckler Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Shadow Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Reverence Leggings +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="Defending Ring",ring2="Shadow Ring",
back="Engulfer Cape",waist="Creed Baudrier",legs="Osmium Cuisses",feet="Reverence Leggings +1"}
--------------------------------------
-- Engaged sets
--------------------------------------
sets.engaged = {ammo="Homiliary",
head="Valorous Mask",neck="Asperity Necklace",ear1="Ethereal Earring",ear2="Thureous Earring",
body="Emet Harness",hands="Founder's Gauntlets",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Rudianos's Mantle",waist="Cetl Belt",legs="Valor. Hose",feet="Founder's Greaves"}
sets.engaged.Acc = {ammo="Homiliary",
head="Valorous Mask",neck="Asperity Necklace",ear1="Ethereal Earring",ear2="Thureous Earring",
body="Emet Harness",hands="Founder's Gauntlets",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Rudianos's Mantle",waist="Cetl Belt",legs="Valor. Hose",feet="Founder's Greaves"}
sets.engaged.DW = {ammo="Homiliary",
head="Valorous Mask",neck="Asperity Necklace",ear1="Ethereal Earring",ear2="Thureous Earring",
body="Emet Harness",hands="Founder's Gauntlets",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Rudianos's Mantle",waist="Cetl Belt",legs="Valor. Hose",feet="Founder's Greaves"}
sets.engaged.DW.Acc = {ammo="Homiliary",
head="Valorous Mask",neck="Asperity Necklace",ear1="Ethereal Earring",ear2="Thureous Earring",
body="Emet Harness",hands="Founder's Gauntlets",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Rudianos's Mantle",waist="Cetl Belt",legs="Valor. Hose",feet="Founder's Greaves"}
sets.engaged.PDT = set_combine(sets.engaged, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Defending Ring"})
sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Defending 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="Defending Ring"})
sets.engaged.DW.Acc.PDT = set_combine(sets.engaged.DW.Acc, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Defending 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="Saida Ring"}
sets.buff.Cover = {head="Reverence Coronet +1", body="Caballarius Surcoat"}
My Nin.lua 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.Migawari = buffactive.migawari or false
state.Buff.Doom = buffactive.doom or false
state.Buff.Yonin = buffactive.Yonin or false
state.Buff.Innin = buffactive.Innin or false
state.Buff.Futae = buffactive.Futae or false
determine_haste_group()
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', 'Evasion', 'PDT')
state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
state.CastingMode:options('Normal', 'Resistant')
state.PhysicalDefenseMode:options('PDT', 'Evasion')
gear.MovementFeet = {name="Danzo Sune-ate"}
gear.DayFeet = "Danzo Sune-ate"
gear.NightFeet = "Ninja Kyahan"
select_movement_feet()
select_default_macro_book()
end
-- Define sets and vars used by this job file.
function init_gear_sets()
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the general 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)
if state.Buff.Doom then
equip(sets.buff.Doom)
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted and spell.english == "Migawari: Ichi" then
state.Buff.Migawari = true
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 we gain or lose any haste buffs, adjust which gear set we target.
if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then
determine_haste_group()
handle_equipping_gear(player.status)
elseif state.Buff[buff] ~= nil then
handle_equipping_gear(player.status)
end
end
function job_status_change(new_status, old_status)
if new_status == 'Idle' then
select_movement_feet()
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Get custom spell maps
function job_get_spell_map(spell, default_spell_map)
if spell.skill == "Ninjutsu" then
if not default_spell_map then
if spell.target.type == 'SELF' then
return 'NinjutsuBuff'
else
return 'NinjutsuDebuff'
end
end
end
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if state.Buff.Migawari then
idleSet = set_combine(idleSet, sets.buff.Migawari)
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.Migawari then
meleeSet = set_combine(meleeSet, sets.buff.Migawari)
end
if state.Buff.Doom then
meleeSet = set_combine(meleeSet, sets.buff.Doom)
end
return meleeSet
end
-- Called by the default 'update' self-command.
function job_update(cmdParams, eventArgs)
select_movement_feet()
determine_haste_group()
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
-- We have three groups of DW in gear: Hachiya body/legs, Iga head + Patentia Sash, and DW earrings
-- Standard gear set reaches near capped delay with just Haste (77%-78%, depending on HQs)
-- For high haste, we want to be able to drop one of the 10% groups.
-- Basic gear hits capped delay (roughly) with:
-- 1 March + Haste
-- 2 March
-- Haste + Haste Samba
-- 1 March + Haste Samba
-- Embrava
-- High haste buffs:
-- 2x Marches + Haste Samba == 19% DW in gear
-- 1x March + Haste + Haste Samba == 22% DW in gear
-- Embrava + Haste or 1x March == 7% DW in gear
-- For max haste (capped magic haste + 25% gear haste), we can drop all DW gear.
-- Max haste buffs:
-- Embrava + Haste+March or 2x March
-- 2x Marches + Haste
-- So we want four tiers:
-- Normal DW
-- 20% DW -- High Haste
-- 7% DW (earrings) - Embrava Haste (specialized situation with embrava and haste, but no marches)
-- 0 DW - Max Haste
classes.CustomMeleeGroups:clear()
if buffactive.embrava and (buffactive.march == 2 or (buffactive.march and buffactive.haste)) then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.march == 2 and buffactive.haste then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
classes.CustomMeleeGroups:append('EmbravaHaste')
elseif buffactive.march == 1 and buffactive.haste and buffactive['haste samba'] then
classes.CustomMeleeGroups:append('HighHaste')
elseif buffactive.march == 2 then
classes.CustomMeleeGroups:append('HighHaste')
end
end
function select_movement_feet()
if world.time >= 17*60 or world.time < 7*60 then
gear.MovementFeet.name = gear.NightFeet
else
gear.MovementFeet.name = gear.DayFeet
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, 10)
elseif player.sub_job == 'WAR' then
set_macro_page(1, 10)
else
set_macro_page(3, 10)
end
end
My Nin_Gear.lua Code --------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Mijin Gakure'] = {legs="Mochizuki Hakama"}
sets.precast.JA['Futae'] = {legs="Iga Tekko +2"}
sets.precast.JA['Sange'] = {legs="Mochizuki Chainmail"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {ammo="Sonia's Plectrum",
head="Felistris Mask",
body="Hachiya Chainmail +1",hands="Buremte Gloves",ring1="Spiral Ring",
back="Iximulew Cape",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
-- Uk'uxkaj Cap, Daihanshi Habaki
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
-- Set for acc on steps, since Yonin drops acc a fair bit
sets.precast.Step = {
head="Whirlpool Mask",neck="Ej Necklace",
body="Otronif Harness +1",hands="Buremte Gloves",ring1="Patricius Ring",
back="Yokaze Mantle",waist="Chaac Belt",legs="Manibozho Brais",feet="Otronif Boots +1"}
sets.precast.Flourish1 = {waist="Chaac Belt"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring"}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads",body="Mochizuki Chainmail"})
-- Snapshot for ranged
sets.precast.RA = {hands="Manibozho Gloves",legs="Nahtirah Trousers",feet="Wurrukatte Boots"}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="",
head="Uk'uxkaj Cap",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Shned. Tabard +1",hands="Iga Tekko +2",ring1="Stormsoul Ring",ring2="Epona's Ring",
back="Rancorous Mantle",waist="Fotia Belt",legs="Hiza. Hizayoroi",feet="Hiza. Sune-Ate"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Jukukik Feather",hands="Buremte Gloves",
back="Yokaze Mantle"})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Blade: Jin'] = set_combine(sets.precast.WS,
{neck="Rancor Collar",ear1="Brutal Earring",ear2="Moonshade Earring",feet="Daihanshi Habaki"})
sets.precast.WS['Blade: Hi'] = set_combine(sets.precast.WS,
{head="Felistris Mask",hands="Hachiya Tekko",ring1="Stormsoul Ring",legs="Nahtirah Trousers"})
sets.precast.WS['Blade: Shun'] = set_combine(sets.precast.WS, {feet="Daihanshi Habaki"})
sets.precast.WS['Aeolian Edge'] = {
head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Moonshade Earring",
body="Wayfarer Robe",hands="Wayfarer Cuffs",ring1="Acumen Ring",ring2="Demon's Ring",
back="Toro Cape",waist="Thunder Belt",legs="Shneddick Tights +1",feet="Daihanshi Habaki"}
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {
head="Felistris Mask",ear2="Loquacious Earring",
body="Hachiya Chainmail +1",hands="Mochizuki Tekko",ring1="Prolix Ring",
legs="Hachiya Hakama",feet="Qaaxo Leggings"}
sets.midcast.Utsusemi = set_combine(sets.midcast.SelfNinjutsu, {back="Andartia's Mantle",feet="Iga Kyahan +2"})
sets.midcast.ElementalNinjutsu = {
head="Hachiya Hatsuburi",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Hachiya Chainmail +1",hands="Iga Tekko +2",ring1="Icesoul Ring",ring2="Acumen Ring",
back="Toro Cape",waist=gear.ElementalObi,legs="Nahtirah Trousers",feet="Hachiya Kyahan"}
sets.midcast.ElementalNinjutsu.Resistant = set_combine(sets.midcast.Ninjutsu, {ear1="Lifestorm Earring",ear2="Psystorm Earring",
back="Yokaze Mantle"})
sets.midcast.NinjutsuDebuff = {
head="Hachiya Hatsuburi",neck="Stoicheion Medal",ear1="Lifestorm Earring",ear2="Psystorm Earring",
hands="Mochizuki Tekko",ring2="Sangoma Ring",
back="Yokaze Mantle",feet="Hachiya Kyahan"}
sets.midcast.NinjutsuBuff = {head="Hachiya Hatsuburi",neck="Ej Necklace",back="Yokaze Mantle"}
sets.midcast.RA = {
head="Felistris Mask",neck="Ej Necklace",
body="Hachiya Chainmail +1",hands="Hachiya Tekko",ring1="Beeline Ring",
back="Yokaze Mantle",legs="Nahtirah Trousers",feet="Qaaxo Leggings"}
-- Hachiya Hakama/Thurandaut Tights +1
--------------------------------------
-- Idle/resting/defense/etc sets
--------------------------------------
-- Resting sets
sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
ring1="Sheltered Ring",ring2="Paguroidea Ring"}
-- Idle sets
sets.idle = {
head="Arh. Jinpachi +1",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Arhat's Gi +1",hands="Herculean Gloves",ring1="Sheltered Ring",ring2="Dark Ring",
back="Iximulew Cape",waist="Resolute Belt",legs="Kaabnax Trousers",feet=gear.MovementFeet}
sets.idle.Town = {main="Raimitsukane",sub="Kaitsuburi",ammo="",
head="Arh. Jinpachi +1",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Arhat's Gi +1",hands="Herculean Gloves",ring1="Sheltered Ring",ring2="Dark Ring",
back="Iximulew Cape",waist="Resolute Belt",legs="Kaabnax Trousers",feet=gear.MovementFeet}
sets.idle.Weak = {
head="Arh. Jinpachi +1",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Arhat's Gi +1",hands="Herculean Gloves",ring1="Sheltered Ring",ring2="Dark Ring",
back="Iximulew Cape",waist="Resolute Belt",legs="Kaabnax Trousers",feet=gear.MovementFeet}
-- Defense sets
sets.defense.Evasion = {
head="Felistris Mask",neck="Ej Necklace",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Beeline Ring",
back="Yokaze Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
sets.defense.PDT = {ammo="Iron Gobbet",
head="Whirlpool Mask",neck="Twilight Torque",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
sets.defense.MDT = {ammo="Demonry Stone",
head="Whirlpool Mask",neck="Twilight Torque",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Engulfer Cape",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
sets.Kiting = {feet=gear.MovementFeet}
--------------------------------------
-- 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="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
-- Custom melee group: High Haste (~20% DW)
sets.engaged.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
-- Custom melee group: Embrava Haste (7% DW)
sets.engaged.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
-- Custom melee group: Max Haste (0% DW)
sets.engaged.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
--------------------------------------
-- Custom buff sets
--------------------------------------
sets.buff.Migawari = {body="Iga Ningi +2"}
sets.buff.Doom = {ring2="Saida Ring"}
sets.buff.Yonin = {}
sets.buff.Innin = {}
Don't laugh at my gear. Just came back recently. :P
Phoenix.Gerrott
Serveur: Phoenix
Game: FFXI
Posts: 158
By Phoenix.Gerrott 2016-07-30 17:23:00
Sorry to bother again, very similar situation with Ninja swap.. just swapped to Bokura's newest Ninja swap and aftercast is not working correctly, tried to mimic dragoon's fix (-pet part) with no success... also not reading haste buffs at all..
Code -- *** Credit goes to Flippant for helping me with Gearswap *** --
-- ** I Use Some of Motenten's Functions ** --
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For TP/WS/Hybrid. First Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
IdleIndex = 1
IdleArray = {'Movement','Regen'} -- Default Idle Set Is Movement --
TypeIndex = 1
Armor = 'None'
Obi = 'ON' -- Set Default Obi ON or OFF Here --
Attack = 'OFF' -- Set Default Attack WS Set ON or OFF Here --
Migawari = 'OFF' -- Set Default Migawari Body ON or OFF Here --
Rancor = 'OFF' -- Set Default Rancor ON or OFF Here --
target_distance = 10 -- Set Default Distance Here --
-- Gavialis Helm --
elements = {}
elements.equip = {head="Gavialis Helm"}
elements["Blade: Shun"] = S{"Light","Lightning","Fire"}
sc_map = {SC1="BladeHi", SC2="UtsusemiSan", SC3="UtsusemiNi"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
sets.Idle = {}
-- Idle/Town Sets --
sets.Idle.Regen = {
ammo="Staunch Tathlum",
head="Rao Kabuto",
neck="Bathy Choker +1",
ear1="Infused Earring",
ear2="Etiolation Earring",
body="Hizamaru Haramaki +1",
hands="Rao Kote",
ring1="Shneddick Ring",
ring2="Paguroidea Ring",
back="Shadow Mantle",
waist="Lycopodium Sash",
legs="Rao Haidate",
feet="Hachiya Kyahan +1"}
sets.Idle.Movement = set_combine(sets.Idle.Regen,{})
-- Normal TP Sets --
sets.TP = {
ammo="Happo Shuriken +1",
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
neck="Erudition Necklace",
ear2="Eabani Earring",
ear1="Suppanomimi",
body="Adhemar Jacket",
hands="Floral Gauntlets",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Patentia Sash",
legs="Samnuha Tights",
feet="Hizamaru Sune-Ate +1"}
sets.TP.MidACC = set_combine(sets.TP,{
neck="Combatant's Torque",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
--waist="Eschan Stone",
})
sets.TP.HighACC = set_combine(sets.TP.MidACC,{
hands="Herculean Gloves",
body="Herculean Vest",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},
waist="Eschan Stone",
ring1="Ramuh Ring +1",
ring2="Begrudging Ring",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- March x2 --
-- March + Haste + Haste Samba --
-- Geo Haste --
-- Mid Haste: 19% - 22% In Gear --
sets.TP.MidHaste = {
ammo="Happo Shuriken +1",
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
neck="Erudition Necklace",
ear1="Suppanomimi",
ear2="Eabani Earring",
body="Adhemar Jacket",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.TP.MidACC.MidHaste = set_combine(sets.TP.MidHaste,{
neck="Combatant's Torque",
--waist="Eschan Stone",
})
sets.TP.HighACC.MidHaste = set_combine(sets.TP.MidACC.MidHaste,{
hands="Herculean Gloves",
body="Herculean Vest",
waist="Eschan Stone",
ring1="Ramuh Ring +1",
ring2="Begrudging Ring",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- Embrava + (Haste or March) --
-- Embrava Haste: 7% DW In Gear --
sets.TP.EmbravaHaste = {
ammo="Happo Shuriken +1",
--head="Adhemar Bonnet +1",
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
neck="Erudition Necklace",
ear1="Cessance Earring",
ear2="Brutal Earring",
body="Herculean Vest",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.TP.MidACC.EmbravaHaste = set_combine(sets.TP.EmbravaHaste,{
neck="Combatant's Torque",
--waist="Eschan Stone"
})
sets.TP.HighACC.EmbravaHaste = set_combine(sets.TP.MidACC.EmbravaHaste,{
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
ring1="Ramuh Ring+1",
ring2="Begrudging Ring",
waist="Eschan Stone",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- March x2 + Haste --
-- Embrava + (March x2 or March + Haste) --
-- Geo Haste + (March or Haste or Embrava) --
-- Max Haste: Can Drop All DW Gear --
sets.TP.MaxHaste = {
ammo="Happo Shuriken +1",
head="Adhemar Bonnet +1",
neck="Erudition Necklace",
ear1="Cessance Earring",
ear2="Brutal Earring",
body="Herculean Vest",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.TP.MidACC.MaxHaste = set_combine(sets.TP.MaxHaste,{
neck="Combatant's Torque",
--waist="Eschan Stone",
})
sets.TP.HighACC.MaxHaste = set_combine(sets.TP.MidACC.MaxHaste,{
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
ring1="Ramuh Ring +1",
ring2="Begrudging Ring",
waist="Eschan Stone",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- TP Rancor Neck --
sets.TP.Rancor = {neck="Rancor Collar"}
-- TP Migawari Set --
sets.TP.Migawari = {body="Hattori Ningi +1"}
-- PDT/MDT Sets --
sets.PDT = {
ammo="Staunch Tathlum",
head="Adhemar Bonnet",
neck="Twilight Torque",
ear1="Infused Earring",
ear2="Genmei Earring",
body="Emet Harness +1",
hands="Umuthi Gloves",
ring1="Shneddick Ring",
ring2="Defending Ring",
back="Shadow Mantle",
waist="Flume Belt",
legs="Otronif Brais +1",
feet="Otronif Boots +1"}
sets.MDT = set_combine(sets.PDT,{
hands="Floral Gauntlets",
ear1="Sanare Earring",
ear2="Etiolation Earring",
ring1="Shadow Ring",
back="Engulfer Cape +1"})
-- Hybrid/Evasion Sets --
sets.TP.Hybrid = set_combine(sets.PDT,{
ammo="Happo Shuriken +1",
--head="Ynglinga Sallet",
legs="Ryuo Hakama",
hands="Herculean Gloves",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},
ear1="Dignitary's Earring",
back="Agema Cape",
ring1="Patricius Ring"})
sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
sets.Evasion = set_combine(sets.PDT,{})
-- WS Base Set --
sets.WS = {
ammo="Ginsen",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Brutal Earring",
body="Adhemar Jacket",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Rajas Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},
waist="Fotia Belt",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
-- Blade: Hi Sets --
sets.WS["Blade: Hi"] = {
ammo="Yetshila",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Ishvara Earring",
body="Abnoba Kaftan",
hands="Kobo Kote",
--hands="Ryuo Tekko",
ring1="Epona's Ring",
--ring2="Garuda Ring +1",
ring2="Begrudging Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},
waist="Fotia Belt",
legs="Hizamaru Hizayoroi +1",
--legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.WS["Blade: Hi"].MidACC = set_combine(sets.WS["Blade: Hi"],{
hands="Ryuo Tekko",})
sets.WS["Blade: Hi"].HighACC = set_combine(sets.WS["Blade: Hi"].MidACC,{
head="Ynglinga Sallet",
--body="Herculean Vest",
neck="Combatant's Torque",
ring1="Ramuh Ring +1",
waist="Olseni Belt",
legs="Hizamaru Hizayoroi +1",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
ear2="Zennaroi Earring",})
-- Blade: Hi(Attack) Set --
sets.WS["Blade: Hi"].ATT = set_combine(sets.WS["Blade: Hi"],{})
-- Blade: Shun Sets --
sets.WS["Blade: Shun"] = {
ammo="Jukukik Feather",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Brutal Earring",
body="Adhemar Jacket",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Ramuh Ring +1",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Fotia Belt",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.WS["Blade: Shun"].MidACC = set_combine(sets.WS["Blade: Shun"],{})
sets.WS["Blade: Shun"].HighACC = set_combine(sets.WS["Blade: Shun"].MidACC,{
head="Ynglinga Sallet",
neck="Combatant's Torque",
body="Herculean Vest",
ring2="Ramuh Ring +1",
waist="Olseni Belt",
legs="Hizamaru Hizayoroi +1",
left_ear="Zennaroi Earring",})
-- Blade: Shun(Attack) Set --
sets.WS["Blade: Shun"].ATT = set_combine(sets.WS["Blade: Shun"],{})
sets.WS["Blade: Yu"] = {
ammo="Pemphredo Tathlum",
head="Mochizuki Hatsuburi +1",
neck="Sanctity Necklace",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Shiva Ring +1",
ring2="Shiva Ring +1",
back={ name="Andartia's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}},
waist="Eschan Stone",
legs="Herculean Trousers",
feet={ name="Herculean Boots", augments={'Mag. Acc.+1','"Fast Cast"+5','MND+10','"Mag.Atk.Bns."+14',}},}
sets.WS.Exenterator = {}
sets.WS.Evisceration = {}
sets.WS["Sanguine Blade"] = {}
-- Waltz Set --
sets.Waltz = {}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
ammo="Impatiens",
head="Herculean Helm",
neck="Orunmila's Torque",
ear1="Loquac. Earring",
ear2="Etiolation Earring",
body="Dread Jupon",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Veneficium Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10',}},
legs="Herculean Trousers",
feet={ name="Herculean Boots", augments={'Mag. Acc.+1','"Fast Cast"+5','MND+10','"Mag.Atk.Bns."+14',}},}
-- Utsusemi Precast Set --
sets.Precast.Utsusemi = set_combine(sets.Precast.FastCast,{neck="Magoraga Beads",body="Passion Jacket"})
sets.Midcast = {}
-- -- Magic Haste/Utsusemi Set --
sets.Midcast.Haste = {
head="Herculean Helm",
neck="Orunmila's Torque",
ear1="Loquacious Earring",
ear2="Etiolation Earring",
body="Dread Jupon",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Defending Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10',}},
waist="Flume Belt",
legs="Herculean Trousers",
feet="Hattori Kyahan +1"}
-- Migawari Magic Set --
sets.Midcast.Migawari = {
head={ name="Ryuo Somen", augments={'Ninjutsu skill +15','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
neck="Incanter's Torque",
ear1="Loquacious Earring",
ear2="Stealth Earring",
body="Dread Jupon",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Defending Ring",
back="Astute Cape",
waist="Cimmerian Sash",
legs="Herculean Trousers",
feet="Mochizuki Kyahan +1"}
-- Ninjutsu Set --
sets.Midcast.Ninjutsu = {
ammo="Pemphredo Tathlum",
head={ name="Ryuo Somen", augments={'Ninjutsu skill +15','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
neck="Incanter's Torque",
ear1="Dignitary's Earring",
ear2="Stealth Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Sangoma Ring",
back={ name="Andartia's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}},
waist="Eschan Stone",
legs="Herculean Trousers",
feet="Mochizuki Kyahan +1"}
-- Elemental Ninjutsu Set --
sets.Midcast.Elemental_Ninjutsu = {
ammo="Pemphredo Tathlum",
head="Mochizuki Hatsuburi +1",
neck="Sanctity Necklace",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Shiva Ring +1",
ring2="Shiva Ring +1",
--ring1="Mujin Band",
--ring2="Locus Ring",
back={ name="Andartia's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}},
waist="Eschan Stone",
--waist="Hachirin-no-Obi",
legs="Herculean Trousers",
feet={ name="Herculean Boots", augments={'Mag. Acc.+1','"Fast Cast"+5','MND+10','"Mag.Atk.Bns."+14',}},}
end
function pretarget(spell,action)
if spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
end
end
function precast(spell,action)
if spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if Attack == 'ON' then
equipSet = equipSet["ATT"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if elements[spell.name] and elements[spell.name]:contains(world.day_element) then
equipSet = set_combine(equipSet,elements.equip)
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
if TypeIndex == 1 and spell.english == "Blade: Hi" then
if world.time <= (7*60) or world.time >= (17*60) then -- Equip Lugra Earring +1 & Lugra Earring From Dusk To Dawn --
equipSet = set_combine(equipSet,{ear1="Lugra Earring +1",ear2="Lugra Earring"})
elseif player.tp > 2990 then
equipSet = set_combine(equipSet,{ear1="Cessance Earring"}) -- 3000 TP: Equip Auster's Pearl --
end
end
if TypeIndex == 1 and spell.english == "Blade: Shun" and player.tp > 2990 then
if world.time <= (7*60) or world.time >= (17*60) then -- 3000 TP: Equip Lugra Earring +1 From Dusk To Dawn --
equipSet = set_combine(equipSet,{ear1="Lugra Earring +1"})
else
equipSet = set_combine(equipSet,{ear1="Cessance Earring"}) -- 3000 TP: Equip Jupiter's Pearl --
end
end
equip(equipSet)
end
elseif spell.action_type == 'Magic' 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 spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ni' then
if buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
send_command('cancel Copy Image*')
end
equip(sets.Precast.Utsusemi)
else
equip(sets.Precast.Utsusemi)
end
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
end
function midcast(spell,action)
equipSet = {}
if spell.action_type == 'Magic' then
equipSet = sets.Midcast
if spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) 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
elseif spell.english:startswith('Tonko') then
equipSet = equipSet.Haste
elseif spell.english == 'Migawari: Ichi' then
equipSet = equipSet.Migawari
elseif spell.english:startswith('Katon') or spell.english:startswith('Suiton') or spell.english:startswith('Doton') or spell.english:startswith('Hyoton') or spell.english:startswith('Huton') or spell.english:startswith('Raiton') then
equipSet = equipSet.Elemental_Ninjutsu
if (world.day_element == spell.element or world.weather_element == spell.element) and Obi == 'ON' then
equipSet = set_combine(equipSet,{waist="Hachirin-no-Obi"})
end
elseif equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
end
function aftercast(spell,action)
if not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
end
status_change(player.status)
end
end
function status_change(new,old)
check_equip_lock()
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif Armor == 'EVA' then
equip(sets.Evasion)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if (buffactive.Haste and buffactive.March == 2) or (buffactive.Embrava and (buffactive.March == 2 or (buffactive.March and buffactive.Haste))) or (buffactive[580] and (buffactive.March or buffactive.Haste or buffactive.Embrava)) and equipSet["MaxHaste"] then
equipSet = equipSet["MaxHaste"]
end
if (buffactive.March == 1 and buffactive.Haste and buffactive["Haste Samba"]) or buffactive.March == 2 or buffactive[580] and equipSet["MidHaste"] then
equipSet = equipSet["MidHaste"]
end
if buffactive.Embrava and (buffactive.March or buffactive.Haste) and equipSet["EmbravaHaste"] then
equipSet = equipSet["EmbravaHaste"]
end
if Rancor == 'ON' then -- Use Rancor Toggle For Rancor Collar --
equipSet = set_combine(equipSet,sets.TP.Rancor)
end
equip(equipSet)
else
equipSet = sets.Idle
if equipSet[IdleArray[IdleIndex]] then
equipSet = equipSet[IdleArray[IdleIndex]]
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
if world.time <= (7*60) or world.time >= (17*60) then -- Equip Hachi. Kyahan +1 From Dusk To Dawn --
equipSet = set_combine(equipSet,{feet="Hachi. Kyahan +1"})
end
if world.area:endswith('Adoulin') then
equipSet = set_combine(equipSet,{body="Councilor's Garb"})
end
equip(equipSet)
end
if buffactive.Migawari and Migawari == 'ON' then -- Use Migawari Toggle To Lock Hattori Ningi +1 When You Have Migawari On --
equip(sets.TP.Migawari)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "aftermath: lv.3" then -- AM3 Timer/Countdown --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down;wait 150;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 15;input /echo Aftermath: Lv.3 [WEARING OFF IN 15 SEC.];wait 5;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(123,'AM3: [OFF]')
end
elseif 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 -- Accuracy Toggle --
AccIndex = (AccIndex % #AccArray) + 1
status_change(player.status)
add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
elseif command == 'C5' then -- Auto Update Gear Toggle --
status_change(player.status)
add_to_chat(158,'Auto Update Gear')
elseif command == 'C2' then -- Hybrid Toggle --
if Armor == 'Hybrid' then
Armor = 'None'
add_to_chat(123,'Hybrid Set: [Unlocked]')
else
Armor = 'Hybrid'
add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
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 == 'C15' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C10' then -- Migawari Set Toggle --
if Migawari == 'ON' then
Migawari = 'OFF'
add_to_chat(123,'Migawari Set: [Unlocked]')
else
Migawari = 'ON'
add_to_chat(158,'Migawari Set: [Locked]')
end
status_change(player.status)
elseif command == 'C3' then -- Evasion Toggle --
if Armor == 'EVA' then
Armor = 'None'
add_to_chat(123,'Evasion Set: [Unlocked]')
else
Armor = 'EVA'
add_to_chat(158,'Evasion Set: [Locked]')
end
status_change(player.status)
elseif command == 'C16' then -- Rancor Toggle --
if Rancor == 'ON' then
Rancor = 'OFF'
add_to_chat(123,'Rancor: [OFF]')
else
Rancor = 'ON'
add_to_chat(158,'Rancor: [ON]')
end
status_change(player.status)
elseif command == 'C9' then -- Attack Toggle --
if Attack == 'ON' then
Attack = 'OFF'
add_to_chat(123,'Attack: [OFF]')
else
Attack = 'ON'
add_to_chat(158,'Attack: [ON]')
end
status_change(player.status)
elseif command == 'C11' 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 == '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
status_change(player.status)
add_to_chat(158,'Idle Set: ' .. IdleArray[IdleIndex])
elseif command == 'TP' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function check_equip_lock() -- Lock Equipment Here --
if player.equipment.range ~= 'empty' then
disable('range','ammo')
elseif player.equipment.left_ring == "Warp Ring" or player.equipment.left_ring == "Capacity Ring" or player.equipment.right_ring == "Warp Ring" or player.equipment.right_ring == "Capacity Ring" then
disable('ring1','ring2')
elseif player.equipment.back == "Mecisto. Mantle" or player.equipment.back == "Aptitude Mantle +1" or player.equipment.back == "Aptitude Mantle" then
disable('back')
else
enable('range','ammo','ring1','ring2','back')
end
end
function refine_waltz(spell,action)
if spell.type ~= 'Waltz' then
return
end
if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local missingHP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
if missingHP ~= nil then
if player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
add_to_chat(123,'Full HP!')
cancel_spell()
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
return
end
end
local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50}
local tpCost = waltzTPCost[newWaltz]
local downgrade
if player.tp < tpCost and not buffactive.trance then
if player.tp < 20 then
add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
cancel_spell()
return
elseif player.tp < 35 then
newWaltz = 'Curing Waltz'
elseif player.tp < 50 then
newWaltz = 'Curing Waltz II'
end
downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
if downgrade then
add_to_chat(158, downgrade)
end
cancel_spell()
return
end
if missingHP > 0 then
add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
function find_player_in_alliance(name)
for i,v in ipairs(alliance) do
for k,p in ipairs(v) do
if p.name == name then
return p
end
end
end
end
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-07-30 17:39:57
@Quintow
So, your equipment should always be inside a function called init_gear_sets(). This is because, otherwise, at the time that all of those tables are added to memory, gear.MovementFeet doesn't even exist yet (because the function it's inside hasn't been called). Having everything in functions lets us control when everything is created so that we can be sure it's being set up in the right order. Code function init_gear_sets()
--all your equipment stuff here!
end
Like this, for your NIN's sidecar file: Code function init_gear_sets()
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Mijin Gakure'] = {legs="Mochizuki Hakama"}
sets.precast.JA['Futae'] = {legs="Iga Tekko +2"}
sets.precast.JA['Sange'] = {legs="Mochizuki Chainmail"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {ammo="Sonia's Plectrum",
head="Felistris Mask",
body="Hachiya Chainmail +1",hands="Buremte Gloves",ring1="Spiral Ring",
back="Iximulew Cape",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
-- Uk'uxkaj Cap, Daihanshi Habaki
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
-- Set for acc on steps, since Yonin drops acc a fair bit
sets.precast.Step = {
head="Whirlpool Mask",neck="Ej Necklace",
body="Otronif Harness +1",hands="Buremte Gloves",ring1="Patricius Ring",
back="Yokaze Mantle",waist="Chaac Belt",legs="Manibozho Brais",feet="Otronif Boots +1"}
sets.precast.Flourish1 = {waist="Chaac Belt"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring"}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads",body="Mochizuki Chainmail"})
-- Snapshot for ranged
sets.precast.RA = {hands="Manibozho Gloves",legs="Nahtirah Trousers",feet="Wurrukatte Boots"}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="",
head="Uk'uxkaj Cap",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Shned. Tabard +1",hands="Iga Tekko +2",ring1="Stormsoul Ring",ring2="Epona's Ring",
back="Rancorous Mantle",waist="Fotia Belt",legs="Hiza. Hizayoroi",feet="Hiza. Sune-Ate"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Jukukik Feather",hands="Buremte Gloves",
back="Yokaze Mantle"})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Blade: Jin'] = set_combine(sets.precast.WS,
{neck="Rancor Collar",ear1="Brutal Earring",ear2="Moonshade Earring",feet="Daihanshi Habaki"})
sets.precast.WS['Blade: Hi'] = set_combine(sets.precast.WS,
{head="Felistris Mask",hands="Hachiya Tekko",ring1="Stormsoul Ring",legs="Nahtirah Trousers"})
sets.precast.WS['Blade: Shun'] = set_combine(sets.precast.WS, {feet="Daihanshi Habaki"})
sets.precast.WS['Aeolian Edge'] = {
head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Moonshade Earring",
body="Wayfarer Robe",hands="Wayfarer Cuffs",ring1="Acumen Ring",ring2="Demon's Ring",
back="Toro Cape",waist="Thunder Belt",legs="Shneddick Tights +1",feet="Daihanshi Habaki"}
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {
head="Felistris Mask",ear2="Loquacious Earring",
body="Hachiya Chainmail +1",hands="Mochizuki Tekko",ring1="Prolix Ring",
legs="Hachiya Hakama",feet="Qaaxo Leggings"}
sets.midcast.Utsusemi = set_combine(sets.midcast.SelfNinjutsu, {back="Andartia's Mantle",feet="Iga Kyahan +2"})
sets.midcast.ElementalNinjutsu = {
head="Hachiya Hatsuburi",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Hachiya Chainmail +1",hands="Iga Tekko +2",ring1="Icesoul Ring",ring2="Acumen Ring",
back="Toro Cape",waist=gear.ElementalObi,legs="Nahtirah Trousers",feet="Hachiya Kyahan"}
sets.midcast.ElementalNinjutsu.Resistant = set_combine(sets.midcast.Ninjutsu, {ear1="Lifestorm Earring",ear2="Psystorm Earring",
back="Yokaze Mantle"})
sets.midcast.NinjutsuDebuff = {
head="Hachiya Hatsuburi",neck="Stoicheion Medal",ear1="Lifestorm Earring",ear2="Psystorm Earring",
hands="Mochizuki Tekko",ring2="Sangoma Ring",
back="Yokaze Mantle",feet="Hachiya Kyahan"}
sets.midcast.NinjutsuBuff = {head="Hachiya Hatsuburi",neck="Ej Necklace",back="Yokaze Mantle"}
sets.midcast.RA = {
head="Felistris Mask",neck="Ej Necklace",
body="Hachiya Chainmail +1",hands="Hachiya Tekko",ring1="Beeline Ring",
back="Yokaze Mantle",legs="Nahtirah Trousers",feet="Qaaxo Leggings"}
-- Hachiya Hakama/Thurandaut Tights +1
--------------------------------------
-- Idle/resting/defense/etc sets
--------------------------------------
-- Resting sets
sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
ring1="Sheltered Ring",ring2="Paguroidea Ring"}
-- Idle sets
sets.idle = {
head="Arh. Jinpachi +1",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Arhat's Gi +1",hands="Herculean Gloves",ring1="Sheltered Ring",ring2="Dark Ring",
back="Iximulew Cape",waist="Resolute Belt",legs="Kaabnax Trousers",feet=gear.MovementFeet}
sets.idle.Town = {main="Raimitsukane",sub="Kaitsuburi",ammo="",
head="Arh. Jinpachi +1",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Arhat's Gi +1",hands="Herculean Gloves",ring1="Sheltered Ring",ring2="Dark Ring",
back="Iximulew Cape",waist="Resolute Belt",legs="Kaabnax Trousers",feet=gear.MovementFeet}
sets.idle.Weak = {
head="Arh. Jinpachi +1",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Arhat's Gi +1",hands="Herculean Gloves",ring1="Sheltered Ring",ring2="Dark Ring",
back="Iximulew Cape",waist="Resolute Belt",legs="Kaabnax Trousers",feet=gear.MovementFeet}
-- Defense sets
sets.defense.Evasion = {
head="Felistris Mask",neck="Ej Necklace",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Beeline Ring",
back="Yokaze Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
sets.defense.PDT = {ammo="Iron Gobbet",
head="Whirlpool Mask",neck="Twilight Torque",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
sets.defense.MDT = {ammo="Demonry Stone",
head="Whirlpool Mask",neck="Twilight Torque",
body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Engulfer Cape",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
sets.Kiting = {feet=gear.MovementFeet}
--------------------------------------
-- 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="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
-- Custom melee group: High Haste (~20% DW)
sets.engaged.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT.HighHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
-- Custom melee group: Embrava Haste (7% DW)
sets.engaged.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT.EmbravaHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
-- Custom melee group: Max Haste (0% DW)
sets.engaged.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Evasion.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.Evasion.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.PDT.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
sets.engaged.Acc.PDT.MaxHaste = {ammo="Happo Shuriken",
head="Herculean Helm",neck="Clotharius Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Hattori Ningi",hands="Floral Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
back="Andartia's Mantle",waist="Cetl Belt",legs="Ta'lab Trousers",feet="Hiza. Sune-Ate"}
--------------------------------------
-- Custom buff sets
--------------------------------------
sets.buff.Migawari = {body="Iga Ningi +2"}
sets.buff.Doom = {ring2="Saida Ring"}
sets.buff.Yonin = {}
sets.buff.Innin = {}
end
That should fix NIN.
For PLD, the issue is this part: Code 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
GS files are loaded only when you change your main job, not sub job. So if you switch to PLD from JOB/DNC or JOB/NIN, and don't have Ochain/Aegis on, it will set you in DW mode. I'd assume the problem is when you change your sub job after that.
However, it looks like Mote is triggering '//gs c update' when you change sub job, which in turn should end up calling that function again and updating properly...so it shouldn't be doing this.
You could try adding this (anywhere inside the file is fine, but outside of any other function; for example, at the very end). Code function job_sub_job_change(new,old)
job_update()
end
but otherwise the only solutions I have are to '//gs c update' or '//gs r' when it occurs.
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-07-30 17:43:57
Sorry to bother again, very similar situation with Ninja swap.. just swapped to Bokura's newest Ninja swap and aftercast is not working correctly, tried to mimic dragoon's fix (-pet part) with no success... also not reading haste buffs at all..
Code -- *** Credit goes to Flippant for helping me with Gearswap *** --
-- ** I Use Some of Motenten's Functions ** --
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For TP/WS/Hybrid. First Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
IdleIndex = 1
IdleArray = {'Movement','Regen'} -- Default Idle Set Is Movement --
TypeIndex = 1
Armor = 'None'
Obi = 'ON' -- Set Default Obi ON or OFF Here --
Attack = 'OFF' -- Set Default Attack WS Set ON or OFF Here --
Migawari = 'OFF' -- Set Default Migawari Body ON or OFF Here --
Rancor = 'OFF' -- Set Default Rancor ON or OFF Here --
target_distance = 10 -- Set Default Distance Here --
-- Gavialis Helm --
elements = {}
elements.equip = {head="Gavialis Helm"}
elements["Blade: Shun"] = S{"Light","Lightning","Fire"}
sc_map = {SC1="BladeHi", SC2="UtsusemiSan", SC3="UtsusemiNi"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
sets.Idle = {}
-- Idle/Town Sets --
sets.Idle.Regen = {
ammo="Staunch Tathlum",
head="Rao Kabuto",
neck="Bathy Choker +1",
ear1="Infused Earring",
ear2="Etiolation Earring",
body="Hizamaru Haramaki +1",
hands="Rao Kote",
ring1="Shneddick Ring",
ring2="Paguroidea Ring",
back="Shadow Mantle",
waist="Lycopodium Sash",
legs="Rao Haidate",
feet="Hachiya Kyahan +1"}
sets.Idle.Movement = set_combine(sets.Idle.Regen,{})
-- Normal TP Sets --
sets.TP = {
ammo="Happo Shuriken +1",
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
neck="Erudition Necklace",
ear2="Eabani Earring",
ear1="Suppanomimi",
body="Adhemar Jacket",
hands="Floral Gauntlets",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Patentia Sash",
legs="Samnuha Tights",
feet="Hizamaru Sune-Ate +1"}
sets.TP.MidACC = set_combine(sets.TP,{
neck="Combatant's Torque",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
--waist="Eschan Stone",
})
sets.TP.HighACC = set_combine(sets.TP.MidACC,{
hands="Herculean Gloves",
body="Herculean Vest",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},
waist="Eschan Stone",
ring1="Ramuh Ring +1",
ring2="Begrudging Ring",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- March x2 --
-- March + Haste + Haste Samba --
-- Geo Haste --
-- Mid Haste: 19% - 22% In Gear --
sets.TP.MidHaste = {
ammo="Happo Shuriken +1",
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
neck="Erudition Necklace",
ear1="Suppanomimi",
ear2="Eabani Earring",
body="Adhemar Jacket",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.TP.MidACC.MidHaste = set_combine(sets.TP.MidHaste,{
neck="Combatant's Torque",
--waist="Eschan Stone",
})
sets.TP.HighACC.MidHaste = set_combine(sets.TP.MidACC.MidHaste,{
hands="Herculean Gloves",
body="Herculean Vest",
waist="Eschan Stone",
ring1="Ramuh Ring +1",
ring2="Begrudging Ring",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- Embrava + (Haste or March) --
-- Embrava Haste: 7% DW In Gear --
sets.TP.EmbravaHaste = {
ammo="Happo Shuriken +1",
--head="Adhemar Bonnet +1",
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
neck="Erudition Necklace",
ear1="Cessance Earring",
ear2="Brutal Earring",
body="Herculean Vest",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.TP.MidACC.EmbravaHaste = set_combine(sets.TP.EmbravaHaste,{
neck="Combatant's Torque",
--waist="Eschan Stone"
})
sets.TP.HighACC.EmbravaHaste = set_combine(sets.TP.MidACC.EmbravaHaste,{
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
ring1="Ramuh Ring+1",
ring2="Begrudging Ring",
waist="Eschan Stone",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- March x2 + Haste --
-- Embrava + (March x2 or March + Haste) --
-- Geo Haste + (March or Haste or Embrava) --
-- Max Haste: Can Drop All DW Gear --
sets.TP.MaxHaste = {
ammo="Happo Shuriken +1",
head="Adhemar Bonnet +1",
neck="Erudition Necklace",
ear1="Cessance Earring",
ear2="Brutal Earring",
body="Herculean Vest",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Petrov Ring",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.TP.MidACC.MaxHaste = set_combine(sets.TP.MaxHaste,{
neck="Combatant's Torque",
--waist="Eschan Stone",
})
sets.TP.HighACC.MaxHaste = set_combine(sets.TP.MidACC.MaxHaste,{
head={ name="Ryuo Somen", augments={'STR+10','DEX+10','Accuracy+15',}},
ring1="Ramuh Ring +1",
ring2="Begrudging Ring",
waist="Eschan Stone",
legs="Hattori Hakama +1",
left_ear="Dignitary's Earring",
right_ear="Zennaroi Earring",})
-- TP Rancor Neck --
sets.TP.Rancor = {neck="Rancor Collar"}
-- TP Migawari Set --
sets.TP.Migawari = {body="Hattori Ningi +1"}
-- PDT/MDT Sets --
sets.PDT = {
ammo="Staunch Tathlum",
head="Adhemar Bonnet",
neck="Twilight Torque",
ear1="Infused Earring",
ear2="Genmei Earring",
body="Emet Harness +1",
hands="Umuthi Gloves",
ring1="Shneddick Ring",
ring2="Defending Ring",
back="Shadow Mantle",
waist="Flume Belt",
legs="Otronif Brais +1",
feet="Otronif Boots +1"}
sets.MDT = set_combine(sets.PDT,{
hands="Floral Gauntlets",
ear1="Sanare Earring",
ear2="Etiolation Earring",
ring1="Shadow Ring",
back="Engulfer Cape +1"})
-- Hybrid/Evasion Sets --
sets.TP.Hybrid = set_combine(sets.PDT,{
ammo="Happo Shuriken +1",
--head="Ynglinga Sallet",
legs="Ryuo Hakama",
hands="Herculean Gloves",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},
ear1="Dignitary's Earring",
back="Agema Cape",
ring1="Patricius Ring"})
sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
sets.Evasion = set_combine(sets.PDT,{})
-- WS Base Set --
sets.WS = {
ammo="Ginsen",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Brutal Earring",
body="Adhemar Jacket",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Rajas Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},
waist="Fotia Belt",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
-- Blade: Hi Sets --
sets.WS["Blade: Hi"] = {
ammo="Yetshila",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Ishvara Earring",
body="Abnoba Kaftan",
hands="Kobo Kote",
--hands="Ryuo Tekko",
ring1="Epona's Ring",
--ring2="Garuda Ring +1",
ring2="Begrudging Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},
waist="Fotia Belt",
legs="Hizamaru Hizayoroi +1",
--legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.WS["Blade: Hi"].MidACC = set_combine(sets.WS["Blade: Hi"],{
hands="Ryuo Tekko",})
sets.WS["Blade: Hi"].HighACC = set_combine(sets.WS["Blade: Hi"].MidACC,{
head="Ynglinga Sallet",
--body="Herculean Vest",
neck="Combatant's Torque",
ring1="Ramuh Ring +1",
waist="Olseni Belt",
legs="Hizamaru Hizayoroi +1",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
ear2="Zennaroi Earring",})
-- Blade: Hi(Attack) Set --
sets.WS["Blade: Hi"].ATT = set_combine(sets.WS["Blade: Hi"],{})
-- Blade: Shun Sets --
sets.WS["Blade: Shun"] = {
ammo="Jukukik Feather",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Brutal Earring",
body="Adhemar Jacket",
hands="Herculean Gloves",
ring1="Epona's Ring",
ring2="Ramuh Ring +1",
back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Fotia Belt",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Attack+29','"Triple Atk."+4','AGI+7','Accuracy+14',}},}
sets.WS["Blade: Shun"].MidACC = set_combine(sets.WS["Blade: Shun"],{})
sets.WS["Blade: Shun"].HighACC = set_combine(sets.WS["Blade: Shun"].MidACC,{
head="Ynglinga Sallet",
neck="Combatant's Torque",
body="Herculean Vest",
ring2="Ramuh Ring +1",
waist="Olseni Belt",
legs="Hizamaru Hizayoroi +1",
left_ear="Zennaroi Earring",})
-- Blade: Shun(Attack) Set --
sets.WS["Blade: Shun"].ATT = set_combine(sets.WS["Blade: Shun"],{})
sets.WS["Blade: Yu"] = {
ammo="Pemphredo Tathlum",
head="Mochizuki Hatsuburi +1",
neck="Sanctity Necklace",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Shiva Ring +1",
ring2="Shiva Ring +1",
back={ name="Andartia's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}},
waist="Eschan Stone",
legs="Herculean Trousers",
feet={ name="Herculean Boots", augments={'Mag. Acc.+1','"Fast Cast"+5','MND+10','"Mag.Atk.Bns."+14',}},}
sets.WS.Exenterator = {}
sets.WS.Evisceration = {}
sets.WS["Sanguine Blade"] = {}
-- Waltz Set --
sets.Waltz = {}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
ammo="Impatiens",
head="Herculean Helm",
neck="Orunmila's Torque",
ear1="Loquac. Earring",
ear2="Etiolation Earring",
body="Dread Jupon",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Veneficium Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10',}},
legs="Herculean Trousers",
feet={ name="Herculean Boots", augments={'Mag. Acc.+1','"Fast Cast"+5','MND+10','"Mag.Atk.Bns."+14',}},}
-- Utsusemi Precast Set --
sets.Precast.Utsusemi = set_combine(sets.Precast.FastCast,{neck="Magoraga Beads",body="Passion Jacket"})
sets.Midcast = {}
-- -- Magic Haste/Utsusemi Set --
sets.Midcast.Haste = {
head="Herculean Helm",
neck="Orunmila's Torque",
ear1="Loquacious Earring",
ear2="Etiolation Earring",
body="Dread Jupon",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Defending Ring",
back={ name="Andartia's Mantle", augments={'AGI+20','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10',}},
waist="Flume Belt",
legs="Herculean Trousers",
feet="Hattori Kyahan +1"}
-- Migawari Magic Set --
sets.Midcast.Migawari = {
head={ name="Ryuo Somen", augments={'Ninjutsu skill +15','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
neck="Incanter's Torque",
ear1="Loquacious Earring",
ear2="Stealth Earring",
body="Dread Jupon",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Defending Ring",
back="Astute Cape",
waist="Cimmerian Sash",
legs="Herculean Trousers",
feet="Mochizuki Kyahan +1"}
-- Ninjutsu Set --
sets.Midcast.Ninjutsu = {
ammo="Pemphredo Tathlum",
head={ name="Ryuo Somen", augments={'Ninjutsu skill +15','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
neck="Incanter's Torque",
ear1="Dignitary's Earring",
ear2="Stealth Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Sangoma Ring",
back={ name="Andartia's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}},
waist="Eschan Stone",
legs="Herculean Trousers",
feet="Mochizuki Kyahan +1"}
-- Elemental Ninjutsu Set --
sets.Midcast.Elemental_Ninjutsu = {
ammo="Pemphredo Tathlum",
head="Mochizuki Hatsuburi +1",
neck="Sanctity Necklace",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Samnuha Coat",
hands="Leyline Gloves",
ring1="Shiva Ring +1",
ring2="Shiva Ring +1",
--ring1="Mujin Band",
--ring2="Locus Ring",
back={ name="Andartia's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}},
waist="Eschan Stone",
--waist="Hachirin-no-Obi",
legs="Herculean Trousers",
feet={ name="Herculean Boots", augments={'Mag. Acc.+1','"Fast Cast"+5','MND+10','"Mag.Atk.Bns."+14',}},}
end
function pretarget(spell,action)
if spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
end
end
function precast(spell,action)
if spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if Attack == 'ON' then
equipSet = equipSet["ATT"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if elements[spell.name] and elements[spell.name]:contains(world.day_element) then
equipSet = set_combine(equipSet,elements.equip)
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
if TypeIndex == 1 and spell.english == "Blade: Hi" then
if world.time <= (7*60) or world.time >= (17*60) then -- Equip Lugra Earring +1 & Lugra Earring From Dusk To Dawn --
equipSet = set_combine(equipSet,{ear1="Lugra Earring +1",ear2="Lugra Earring"})
elseif player.tp > 2990 then
equipSet = set_combine(equipSet,{ear1="Cessance Earring"}) -- 3000 TP: Equip Auster's Pearl --
end
end
if TypeIndex == 1 and spell.english == "Blade: Shun" and player.tp > 2990 then
if world.time <= (7*60) or world.time >= (17*60) then -- 3000 TP: Equip Lugra Earring +1 From Dusk To Dawn --
equipSet = set_combine(equipSet,{ear1="Lugra Earring +1"})
else
equipSet = set_combine(equipSet,{ear1="Cessance Earring"}) -- 3000 TP: Equip Jupiter's Pearl --
end
end
equip(equipSet)
end
elseif spell.action_type == 'Magic' 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 spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ni' then
if buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
send_command('cancel Copy Image*')
end
equip(sets.Precast.Utsusemi)
else
equip(sets.Precast.Utsusemi)
end
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
end
function midcast(spell,action)
equipSet = {}
if spell.action_type == 'Magic' then
equipSet = sets.Midcast
if spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)']) 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
elseif spell.english:startswith('Tonko') then
equipSet = equipSet.Haste
elseif spell.english == 'Migawari: Ichi' then
equipSet = equipSet.Migawari
elseif spell.english:startswith('Katon') or spell.english:startswith('Suiton') or spell.english:startswith('Doton') or spell.english:startswith('Hyoton') or spell.english:startswith('Huton') or spell.english:startswith('Raiton') then
equipSet = equipSet.Elemental_Ninjutsu
if (world.day_element == spell.element or world.weather_element == spell.element) and Obi == 'ON' then
equipSet = set_combine(equipSet,{waist="Hachirin-no-Obi"})
end
elseif equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
end
function aftercast(spell,action)
if not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
end
status_change(player.status)
end
end
function status_change(new,old)
check_equip_lock()
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif Armor == 'EVA' then
equip(sets.Evasion)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if (buffactive.Haste and buffactive.March == 2) or (buffactive.Embrava and (buffactive.March == 2 or (buffactive.March and buffactive.Haste))) or (buffactive[580] and (buffactive.March or buffactive.Haste or buffactive.Embrava)) and equipSet["MaxHaste"] then
equipSet = equipSet["MaxHaste"]
end
if (buffactive.March == 1 and buffactive.Haste and buffactive["Haste Samba"]) or buffactive.March == 2 or buffactive[580] and equipSet["MidHaste"] then
equipSet = equipSet["MidHaste"]
end
if buffactive.Embrava and (buffactive.March or buffactive.Haste) and equipSet["EmbravaHaste"] then
equipSet = equipSet["EmbravaHaste"]
end
if Rancor == 'ON' then -- Use Rancor Toggle For Rancor Collar --
equipSet = set_combine(equipSet,sets.TP.Rancor)
end
equip(equipSet)
else
equipSet = sets.Idle
if equipSet[IdleArray[IdleIndex]] then
equipSet = equipSet[IdleArray[IdleIndex]]
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
if world.time <= (7*60) or world.time >= (17*60) then -- Equip Hachi. Kyahan +1 From Dusk To Dawn --
equipSet = set_combine(equipSet,{feet="Hachi. Kyahan +1"})
end
if world.area:endswith('Adoulin') then
equipSet = set_combine(equipSet,{body="Councilor's Garb"})
end
equip(equipSet)
end
if buffactive.Migawari and Migawari == 'ON' then -- Use Migawari Toggle To Lock Hattori Ningi +1 When You Have Migawari On --
equip(sets.TP.Migawari)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "aftermath: lv.3" then -- AM3 Timer/Countdown --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down;wait 150;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 15;input /echo Aftermath: Lv.3 [WEARING OFF IN 15 SEC.];wait 5;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(123,'AM3: [OFF]')
end
elseif 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 -- Accuracy Toggle --
AccIndex = (AccIndex % #AccArray) + 1
status_change(player.status)
add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
elseif command == 'C5' then -- Auto Update Gear Toggle --
status_change(player.status)
add_to_chat(158,'Auto Update Gear')
elseif command == 'C2' then -- Hybrid Toggle --
if Armor == 'Hybrid' then
Armor = 'None'
add_to_chat(123,'Hybrid Set: [Unlocked]')
else
Armor = 'Hybrid'
add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
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 == 'C15' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C10' then -- Migawari Set Toggle --
if Migawari == 'ON' then
Migawari = 'OFF'
add_to_chat(123,'Migawari Set: [Unlocked]')
else
Migawari = 'ON'
add_to_chat(158,'Migawari Set: [Locked]')
end
status_change(player.status)
elseif command == 'C3' then -- Evasion Toggle --
if Armor == 'EVA' then
Armor = 'None'
add_to_chat(123,'Evasion Set: [Unlocked]')
else
Armor = 'EVA'
add_to_chat(158,'Evasion Set: [Locked]')
end
status_change(player.status)
elseif command == 'C16' then -- Rancor Toggle --
if Rancor == 'ON' then
Rancor = 'OFF'
add_to_chat(123,'Rancor: [OFF]')
else
Rancor = 'ON'
add_to_chat(158,'Rancor: [ON]')
end
status_change(player.status)
elseif command == 'C9' then -- Attack Toggle --
if Attack == 'ON' then
Attack = 'OFF'
add_to_chat(123,'Attack: [OFF]')
else
Attack = 'ON'
add_to_chat(158,'Attack: [ON]')
end
status_change(player.status)
elseif command == 'C11' 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 == '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
status_change(player.status)
add_to_chat(158,'Idle Set: ' .. IdleArray[IdleIndex])
elseif command == 'TP' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function check_equip_lock() -- Lock Equipment Here --
if player.equipment.range ~= 'empty' then
disable('range','ammo')
elseif player.equipment.left_ring == "Warp Ring" or player.equipment.left_ring == "Capacity Ring" or player.equipment.right_ring == "Warp Ring" or player.equipment.right_ring == "Capacity Ring" then
disable('ring1','ring2')
elseif player.equipment.back == "Mecisto. Mantle" or player.equipment.back == "Aptitude Mantle +1" or player.equipment.back == "Aptitude Mantle" then
disable('back')
else
enable('range','ammo','ring1','ring2','back')
end
end
function refine_waltz(spell,action)
if spell.type ~= 'Waltz' then
return
end
if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local missingHP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
if missingHP ~= nil then
if player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
add_to_chat(123,'Full HP!')
cancel_spell()
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
return
end
end
local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50}
local tpCost = waltzTPCost[newWaltz]
local downgrade
if player.tp < tpCost and not buffactive.trance then
if player.tp < 20 then
add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
cancel_spell()
return
elseif player.tp < 35 then
newWaltz = 'Curing Waltz'
elseif player.tp < 50 then
newWaltz = 'Curing Waltz II'
end
downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
if downgrade then
add_to_chat(158, downgrade)
end
cancel_spell()
return
end
if missingHP > 0 then
add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
function find_player_in_alliance(name)
for i,v in ipairs(alliance) do
for k,p in ipairs(v) do
if p.name == name then
return p
end
end
end
end
Try this for aftercast Code function aftercast(spell,action)
if not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
end
end
status_change(player.status)
end
Also, I'm not sure what you mean by not reading haste buffs. Are you saying you have sources of haste on, but it won't equip certain sets as you expect it to? If so, I need to know what your accuracy mode is set to, what haste buffs you have on, what set you expect it to be equipping, and what gear you are actually equipping.
Phoenix.Gerrott
Serveur: Phoenix
Game: FFXI
Posts: 158
By Phoenix.Gerrott 2016-07-30 18:06:16
Hmm tried that fix and no good. Still frozen in set for whatever action was used last. Currently spamming Tenzens and have Haste/Marchx2 but the issue seems bigger, acc toggles are not currently doing anything either. Should be equipping Maxhaste but is only equipping normal tp set.
Phoenix.Gerrott
Serveur: Phoenix
Game: FFXI
Posts: 158
By Phoenix.Gerrott 2016-07-30 18:19:34
edit- Acc toggle works fine until the appropriate buffs for maxhaste are applied (haste/marchx2), Normal TP and Midhaste seem to be working correctly. Geo Haste is triggering Maxhaste on its own even though rule is set up for geo haste + haste spell, and Marchx2/haste is causing the Acc array to not function along with aftercast to not work.
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-07-30 18:33:41
It is a problem with order of operations. Replace 532-540: Code if ((buffactive.Haste and buffactive.March == 2) or (buffactive.Embrava and (buffactive.March == 2 or (buffactive.March and buffactive.Haste))) or (buffactive[580] and (buffactive.March or buffactive.Haste or buffactive.Embrava))) and equipSet["MaxHaste"] then
equipSet = equipSet["MaxHaste"]
end
if ((buffactive.March == 1 and buffactive.Haste and buffactive["Haste Samba"]) or buffactive.March == 2 or buffactive[580]) and equipSet["MidHaste"] then
equipSet = equipSet["MidHaste"]
end
if (buffactive.Embrava and (buffactive.March or buffactive.Haste)) and equipSet["EmbravaHaste"] then
equipSet = equipSet["EmbravaHaste"]
end
Phoenix.Gerrott
Serveur: Phoenix
Game: FFXI
Posts: 158
By Phoenix.Gerrott 2016-07-30 18:46:46
Wonderful, thanks again! :D
Serveur: Bismarck
Game: FFXI
Posts: 1346
By Bismarck.Kuroganashi 2016-08-05 14:58:05
New Ambuscade items give Error on coding :
//addons/GearSwap/equip_processing lua:268: attempt to index field "?" (a nil value)
Code
name = res.items[items[to_bag_api(res.bags[cur_item.bag_id].english)][cur_item.slot].id][language]
(Resources)
Items.lua
There is no such thing as Jhakri Set on it or +1 for that matter.
Would be able to update it if I knew the Japanese of it.
Well, up to the other guys to do that part :D
Sorry~
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-08-05 22:34:48
Jhakri was already added to resources over two days ago, so I'm guessing your launcher is having problems updating. You can find and download the latest version of resource files manually from Windower's Github.
By Selindrile 2016-08-07 20:57:46
Anyone know if there's a windower.register_event that triggers when party leader changes, or when you receive party leader?
Or something I can use that does the same thing?
I didn't see anything on the wiki but I might've missed it.
Odin.Lygre
Serveur: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-08-07 23:41:05
Not that I'm aware of.
There is a way to do things when you give party/ally lead though
[+]
By Selindrile 2016-08-08 07:35:58
I appreciate the answer, I shall continue looking.
Carbuncle.Akivatoo
Serveur: Carbuncle
Game: FFXI
Posts: 263
By Carbuncle.Akivatoo 2016-08-08 08:17:18
hello everyone,
that took me few time to manage casting mode pld.
but i still encouter problem on it.
"sets.self_healing.DT" didn't work and idk why.
can anyone have tips to fix it ?
Code
options.CastingModes = {'Normal', 'DT'}
--i think problem is here:
function job_post_midcast(spell, action, spellMap, eventArgs)
if spellMap == 'Cure' and spell.target.type == 'SELF' and sets.self_healing then
equip(sets.self_healing)
end
end
sets.midcast.Cure =
{
ammo="Staunch Tathlum",
head={ name="Souv. Schaller +1", augments={'HP+105','VIT+12','Phys. dmg. taken -4',}},
body={ name="Jumalik Mail", augments={'HP+50','Attack+15','Enmity+9','"Refresh"+2',}},
hands="Macabre Gaunt. +1",
legs={ name="Founder's Hose", augments={'MND+7','Mag. Acc.+10','Attack+10',}},
feet={ name="Odyssean Greaves", augments={'Potency of "Cure" effect received+6%','MND+2','Mag. Acc.+8','"Mag.Atk.Bns."+3',}},
neck="Incanter's Torque",
waist="Hachirin-no-obi",
left_ear="Nourish. Earring +1",
right_ear="Mendi. Earring",
left_ring="Vocane Ring",
right_ring="Stikini Ring",
back="Solemnity Cape",
}
sets.midcast.Cure.DT =
{
ammo="Staunch Tathlum",
head={ name="Souv. Schaller +1", augments={'HP+105','VIT+12','Phys. dmg. taken -4',}},
body={ name="Jumalik Mail", augments={'HP+50','Attack+15','Enmity+9','"Refresh"+2',}},
hands="Macabre Gaunt. +1",
legs={ name="Souv. Diechlings +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
feet={ name="Souveran Schuhs +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
neck="Loricate Torque +1",
waist="Flume Belt +1",
left_ear="Nourish. Earring +1",
right_ear="Mendi. Earring",
left_ring="Vocane Ring",
right_ring="Defending Ring",
back="Solemnity Cape",
}
sets.self_healing = set_combine(sets.midcast.Cure, {waist="Gishdubar Sash", right_ear="Oneiros Earring", neck="Phalaina Locket"})
sets.self_healing.DT =
{
ammo="Staunch Tathlum",
head={ name="Souv. Schaller +1", augments={'HP+105','VIT+12','Phys. dmg. taken -4',}},
body={ name="Jumalik Mail", augments={'HP+50','Attack+15','Enmity+9','"Refresh"+2',}},
hands="Macabre Gaunt. +1",
legs={ name="Souv. Diechlings +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
feet={ name="Souveran Schuhs +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
neck="Phalaina Locket",
waist="Gishdubar Sash",
left_ear="Nourish. Earring +1",
right_ear="Oneiros Earring",
left_ring="Vocane Ring",
right_ring="Defending Ring",
back="Solemnity Cape",
}
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.
|
|