I haven't touched my PLD in years and I'm in the process of updating all the gear sets, so ignore the random gear as it's not done yet.
The issue I'm having is that I'm not sure how I used to cycle the many modes, especially the Offensive ones.
Defensive modes are handled here:
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')
Did I just dork my offensive cycles or am I just stupid?
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff.Sentinel = buffactive.sentinel or false
state.Buff.Cover = buffactive.cover or false
state.Buff.Doom = buffactive.Doom or false
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('Normal', 'Acc')
state.HybridMode:options('Normal', 'PDT', 'Reraise')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.PhysicalDefenseMode:options('PDT', 'HP', 'Reraise', 'Charm')
state.MagicalDefenseMode:options('MDT', 'HP', 'Reraise', 'Charm')
state.ExtraDefenseMode = M{['description']='Extra Defense Mode', 'None', 'MP', 'Knockback', 'MP_Knockback'}
state.EquipShield = M(false, 'Equip Shield w/Defense')
update_defense_mode()
send_command('bind ^f11 gs c cycle MagicalDefenseMode')
send_command('bind !f11 gs c cycle ExtraDefenseMode')
send_command('bind @f10 gs c toggle EquipShield')
send_command('bind @f11 gs c toggle EquipShield')
select_default_macro_book()
end
function user_unload()
send_command('unbind ^f11')
send_command('unbind !f11')
send_command('unbind @f10')
send_command('unbind @f11')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Invincible'] = {legs="Caballarius Breeches +1"}
sets.precast.JA['Holy Circle'] = {feet="Reverence Leggings +1"}
sets.precast.JA['Shield Bash'] = {hands="Caballarius Gauntlets +1"}
sets.precast.JA['Sentinel'] = {feet="Caballarius Leggings +1"}
sets.precast.JA['Rampart'] = {head="Caballarius Coronet +1"}
sets.precast.JA['Fealty'] = {body="Caballarius Surcoat +1"}
sets.precast.JA['Divine Emblem'] = {feet="Creed Sabatons +2"}
sets.precast.JA['Cover'] = {head="Reverence Coronet +1"}
-- add mnd for Chivalry
sets.precast.JA['Chivalry'] = {
sub={ name="Priwen", augments={'HP+50','Mag. Evasion+50','Damage Taken -3%',}},
ammo="Quartz Tathlum +1",
head="Rev. Coronet +1",
body="Emet Harness",
hands="Caballarius Gauntlets +1",
legs={ name="Cab. Breeches +1", augments={'Enhances "Invincible" effect',}},
feet={ name="Odyssean Greaves", augments={'Mag. Acc.+17','INT+2','Accuracy+20 Attack+20','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
neck="Gnole Torque",
waist="Rumination Sash",
left_ear="Lifestorm Earring",
right_ear="Static Earring",
left_ring="Globidonta Ring",
right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
back="Tantalic Cape",
}
-- Waltz set (chr and vit)
sets.precast.Waltz = {}
-- 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="Sapience Orb",
head={ name="Carmine Mask", augments={'Accuracy+15','Mag. Acc.+10','"Fast Cast"+3',}},
body={ name="Odyss. Chestplate", augments={'Accuracy+24 Attack+24','Enmity+1',}},
hands={ name="Leyline Gloves", augments={'Accuracy+12','Mag. Acc.+14','"Mag.Atk.Bns."+15','"Fast Cast"+2',}},
legs="Chev. Cuisses +1",
feet={ name="Odyssean Greaves", augments={'Mag. Acc.+17','INT+2','Accuracy+20 Attack+20','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
neck="Voltsurge Torque",
waist="Rumination Sash",
left_ear="Etiolation Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Lebeche Ring",
back="Izdubar Mantle",
}
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 = {}
sets.precast.WS.Acc = {}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] ={}
sets.precast.WS['Chant du Cygne'] = {}
sets.precast.WS['Sanguine Blade'] = {}
sets.precast.WS['Savage Blade'] = {}
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {
head="Reverence Coronet +1",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",
waist="Zoran's Belt",legs="Enif Cosciales",feet="Reverence Leggings +1"}
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 +1"}
sets.midcast.Flash = set_combine(sets.midcast.Enmity, {legs="Enif Cosciales"})
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 +1"}
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 = {
sub={ name="Priwen", augments={'HP+50','Mag. Evasion+50','Damage Taken -3%',}},
ammo="Iron Gobbet",
head="Rev. Coronet +1",
body={ name="Cab. Surcoat +1", augments={'Enhances "Fealty" effect',}},
hands="Macabre Gaunt.",
legs="Chev. Cuisses +1",
feet={ name="Cab. Leggings +1", augments={'Enhances "Guardian" effect',}},
neck="Coatl Gorget +1",
waist="Flume Belt +1",
left_ear="Infused Earring",
right_ear="Thureous Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Xucau Mantle",
}
sets.idle.Town = {
sub={ name="Priwen", augments={'HP+50','Mag. Evasion+50','Damage Taken -3%',}},
ammo="Sapience Orb",
head="Rev. Coronet +1",
body={ name="Odyss. Chestplate", augments={'Accuracy+24 Attack+24','Enmity+1',}},
hands={ name="Odyssean Gauntlets", augments={'Accuracy+7','Pet: INT+3','Quadruple Attack +2','Mag. Acc.+18 "Mag.Atk.Bns."+18',}},
legs="Chev. Cuisses +1",
feet={ name="Odyssean Greaves", augments={'Mag. Acc.+17','INT+2','Accuracy+20 Attack+20','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
neck="Unmoving Collar +1",
waist="Flume Belt +1",
left_ear="Crep. Earring",
right_ear="Thureous Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Philidor Mantle",
}
sets.idle.Weak = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Sheltered Ring",ring2="Meridian Ring",
back="Fierabras's Mantle",waist="Flume Belt +1",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
sets.Kiting = {legs="Crimson Cuisses"}
sets.latent_refresh = {waist="Fucho-no-obi"}
--------------------------------------
-- Defense sets
--------------------------------------
-- Extra defense sets. Apply these on top of melee or defense sets.
sets.Knockback = {back="Philidor Mantle"}
sets.MP = {neck="Creed Collar",waist="Flume Belt +1"}
sets.MP_Knockback = {neck="Creed Collar",waist="Flume Belt +1",back="Philidor 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 = {sub="Priwen"} -- Ochain
sets.MagicalShield = {sub="Priwen"} -- 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="Ginsen",
head="Otomi Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Gorney Haubert +1",hands="Cizin Mufflers",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Atheling Mantle",waist="Cetl Belt",legs="Cizin Breeches",feet="Whirlpool Greaves"}
sets.engaged.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Gorney Haubert +1",hands="Buremte Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Weard Mantle",waist="Zoran's Belt",legs="Cizin Breeches",feet="Whirlpool Greaves"}
sets.engaged.DW = {}
sets.engaged.DW.Acc = {}
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 +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function job_midcast(spell, action, spellMap, eventArgs)
-- If DefenseMode is active, apply that gear over midcast
-- choices. Precast is allowed through for fast cast on
-- spells, but we want to return to def gear before there's
-- time for anything to hit us.
-- Exclude Job Abilities from this restriction, as we probably want
-- the enhanced effect of whatever item of gear applies to them,
-- and only one item should be swapped out.
if state.DefenseMode.value ~= 'None' and spell.type ~= 'JobAbility' then
handle_equipping_gear(player.status)
eventArgs.handled = true
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_state_change(field, new_value, old_value)
classes.CustomDefenseGroups:clear()
classes.CustomDefenseGroups:append(state.ExtraDefenseMode.current)
if state.EquipShield.value == true then
classes.CustomDefenseGroups:append(state.DefenseMode.current .. 'Shield')
end
classes.CustomMeleeGroups:clear()
classes.CustomMeleeGroups:append(state.ExtraDefenseMode.current)
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
update_defense_mode()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
if state.Buff.Doom then
idleSet = set_combine(idleSet, sets.buff.Doom)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.Buff.Doom then
meleeSet = set_combine(meleeSet, sets.buff.Doom)
end
return meleeSet
end
function customize_defense_set(defenseSet)
if state.ExtraDefenseMode.value ~= 'None' then
defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
end
if state.EquipShield.value == true then
defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
end
if state.Buff.Doom then
defenseSet = set_combine(defenseSet, sets.buff.Doom)
end
return defenseSet
end
function display_current_job_state(eventArgs)
local msg = 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ', WS: ' .. state.WeaponskillMode.value
if state.DefenseMode.value ~= 'None' then
msg = msg .. ', Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
end
if state.ExtraDefenseMode.value ~= 'None' then
msg = msg .. ', Extra: ' .. state.ExtraDefenseMode.value
end
if state.EquipShield.value == true then
msg = msg .. ', Force Equip Shield'
end
if state.Kiting.value == true then
msg = msg .. ', Kiting'
end
if state.PCTargetMode.value ~= 'default' then
msg = msg .. ', Target PC: '..state.PCTargetMode.value
end
if state.SelectNPCTargets.value == true then
msg = msg .. ', Target NPCs'
end
add_to_chat(122, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function update_defense_mode()
if player.equipment.main == 'Kheshig Blade' and not classes.CustomDefenseGroups:contains('Kheshig Blade') then
classes.CustomDefenseGroups:append('Kheshig Blade')
end
if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
if player.equipment.sub and not player.equipment.sub:contains('Shield') and
player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
state.CombatForm:set('DW')
else
state.CombatForm:reset()
end
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(5, 2)
elseif player.sub_job == 'BLU' then
set_macro_page(4, 2)
elseif player.sub_job == 'RDM' then
set_macro_page(3, 2)
else
set_macro_page(2, 2)
end
end
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff.Sentinel = buffactive.sentinel or false
state.Buff.Cover = buffactive.cover or false
state.Buff.Doom = buffactive.Doom or false
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('Normal', 'Acc')
state.HybridMode:options('Normal', 'PDT', 'Reraise')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.PhysicalDefenseMode:options('PDT', 'HP', 'Reraise', 'Charm')
state.MagicalDefenseMode:options('MDT', 'HP', 'Reraise', 'Charm')
state.ExtraDefenseMode = M{['description']='Extra Defense Mode', 'None', 'MP', 'Knockback', 'MP_Knockback'}
state.EquipShield = M(false, 'Equip Shield w/Defense')
update_defense_mode()
send_command('bind ^f11 gs c cycle MagicalDefenseMode')
send_command('bind !f11 gs c cycle ExtraDefenseMode')
send_command('bind @f10 gs c toggle EquipShield')
send_command('bind @f11 gs c toggle EquipShield')
select_default_macro_book()
end
function user_unload()
send_command('unbind ^f11')
send_command('unbind !f11')
send_command('unbind @f10')
send_command('unbind @f11')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Invincible'] = {legs="Caballarius Breeches +1"}
sets.precast.JA['Holy Circle'] = {feet="Reverence Leggings +1"}
sets.precast.JA['Shield Bash'] = {hands="Caballarius Gauntlets +1"}
sets.precast.JA['Sentinel'] = {feet="Caballarius Leggings +1"}
sets.precast.JA['Rampart'] = {head="Caballarius Coronet +1"}
sets.precast.JA['Fealty'] = {body="Caballarius Surcoat +1"}
sets.precast.JA['Divine Emblem'] = {feet="Creed Sabatons +2"}
sets.precast.JA['Cover'] = {head="Reverence Coronet +1"}
-- add mnd for Chivalry
sets.precast.JA['Chivalry'] = {
sub={ name="Priwen", augments={'HP+50','Mag. Evasion+50','Damage Taken -3%',}},
ammo="Quartz Tathlum +1",
head="Rev. Coronet +1",
body="Emet Harness",
hands="Caballarius Gauntlets +1",
legs={ name="Cab. Breeches +1", augments={'Enhances "Invincible" effect',}},
feet={ name="Odyssean Greaves", augments={'Mag. Acc.+17','INT+2','Accuracy+20 Attack+20','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
neck="Gnole Torque",
waist="Rumination Sash",
left_ear="Lifestorm Earring",
right_ear="Static Earring",
left_ring="Globidonta Ring",
right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
back="Tantalic Cape",
}
-- Waltz set (chr and vit)
sets.precast.Waltz = {}
-- 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="Sapience Orb",
head={ name="Carmine Mask", augments={'Accuracy+15','Mag. Acc.+10','"Fast Cast"+3',}},
body={ name="Odyss. Chestplate", augments={'Accuracy+24 Attack+24','Enmity+1',}},
hands={ name="Leyline Gloves", augments={'Accuracy+12','Mag. Acc.+14','"Mag.Atk.Bns."+15','"Fast Cast"+2',}},
legs="Chev. Cuisses +1",
feet={ name="Odyssean Greaves", augments={'Mag. Acc.+17','INT+2','Accuracy+20 Attack+20','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
neck="Voltsurge Torque",
waist="Rumination Sash",
left_ear="Etiolation Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Lebeche Ring",
back="Izdubar Mantle",
}
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 = {}
sets.precast.WS.Acc = {}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] ={}
sets.precast.WS['Chant du Cygne'] = {}
sets.precast.WS['Sanguine Blade'] = {}
sets.precast.WS['Savage Blade'] = {}
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {
head="Reverence Coronet +1",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",
waist="Zoran's Belt",legs="Enif Cosciales",feet="Reverence Leggings +1"}
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 +1"}
sets.midcast.Flash = set_combine(sets.midcast.Enmity, {legs="Enif Cosciales"})
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 +1"}
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 = {
sub={ name="Priwen", augments={'HP+50','Mag. Evasion+50','Damage Taken -3%',}},
ammo="Iron Gobbet",
head="Rev. Coronet +1",
body={ name="Cab. Surcoat +1", augments={'Enhances "Fealty" effect',}},
hands="Macabre Gaunt.",
legs="Chev. Cuisses +1",
feet={ name="Cab. Leggings +1", augments={'Enhances "Guardian" effect',}},
neck="Coatl Gorget +1",
waist="Flume Belt +1",
left_ear="Infused Earring",
right_ear="Thureous Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Xucau Mantle",
}
sets.idle.Town = {
sub={ name="Priwen", augments={'HP+50','Mag. Evasion+50','Damage Taken -3%',}},
ammo="Sapience Orb",
head="Rev. Coronet +1",
body={ name="Odyss. Chestplate", augments={'Accuracy+24 Attack+24','Enmity+1',}},
hands={ name="Odyssean Gauntlets", augments={'Accuracy+7','Pet: INT+3','Quadruple Attack +2','Mag. Acc.+18 "Mag.Atk.Bns."+18',}},
legs="Chev. Cuisses +1",
feet={ name="Odyssean Greaves", augments={'Mag. Acc.+17','INT+2','Accuracy+20 Attack+20','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
neck="Unmoving Collar +1",
waist="Flume Belt +1",
left_ear="Crep. Earring",
right_ear="Thureous Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Philidor Mantle",
}
sets.idle.Weak = {ammo="Iron Gobbet",
head="Reverence Coronet +1",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Sheltered Ring",ring2="Meridian Ring",
back="Fierabras's Mantle",waist="Flume Belt +1",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
sets.Kiting = {legs="Crimson Cuisses"}
sets.latent_refresh = {waist="Fucho-no-obi"}
--------------------------------------
-- Defense sets
--------------------------------------
-- Extra defense sets. Apply these on top of melee or defense sets.
sets.Knockback = {back="Philidor Mantle"}
sets.MP = {neck="Creed Collar",waist="Flume Belt +1"}
sets.MP_Knockback = {neck="Creed Collar",waist="Flume Belt +1",back="Philidor 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 = {sub="Priwen"} -- Ochain
sets.MagicalShield = {sub="Priwen"} -- 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="Ginsen",
head="Otomi Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Gorney Haubert +1",hands="Cizin Mufflers",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Atheling Mantle",waist="Cetl Belt",legs="Cizin Breeches",feet="Whirlpool Greaves"}
sets.engaged.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Gorney Haubert +1",hands="Buremte Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Weard Mantle",waist="Zoran's Belt",legs="Cizin Breeches",feet="Whirlpool Greaves"}
sets.engaged.DW = {}
sets.engaged.DW.Acc = {}
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 +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function job_midcast(spell, action, spellMap, eventArgs)
-- If DefenseMode is active, apply that gear over midcast
-- choices. Precast is allowed through for fast cast on
-- spells, but we want to return to def gear before there's
-- time for anything to hit us.
-- Exclude Job Abilities from this restriction, as we probably want
-- the enhanced effect of whatever item of gear applies to them,
-- and only one item should be swapped out.
if state.DefenseMode.value ~= 'None' and spell.type ~= 'JobAbility' then
handle_equipping_gear(player.status)
eventArgs.handled = true
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_state_change(field, new_value, old_value)
classes.CustomDefenseGroups:clear()
classes.CustomDefenseGroups:append(state.ExtraDefenseMode.current)
if state.EquipShield.value == true then
classes.CustomDefenseGroups:append(state.DefenseMode.current .. 'Shield')
end
classes.CustomMeleeGroups:clear()
classes.CustomMeleeGroups:append(state.ExtraDefenseMode.current)
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
update_defense_mode()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
if state.Buff.Doom then
idleSet = set_combine(idleSet, sets.buff.Doom)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.Buff.Doom then
meleeSet = set_combine(meleeSet, sets.buff.Doom)
end
return meleeSet
end
function customize_defense_set(defenseSet)
if state.ExtraDefenseMode.value ~= 'None' then
defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
end
if state.EquipShield.value == true then
defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
end
if state.Buff.Doom then
defenseSet = set_combine(defenseSet, sets.buff.Doom)
end
return defenseSet
end
function display_current_job_state(eventArgs)
local msg = 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ', WS: ' .. state.WeaponskillMode.value
if state.DefenseMode.value ~= 'None' then
msg = msg .. ', Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
end
if state.ExtraDefenseMode.value ~= 'None' then
msg = msg .. ', Extra: ' .. state.ExtraDefenseMode.value
end
if state.EquipShield.value == true then
msg = msg .. ', Force Equip Shield'
end
if state.Kiting.value == true then
msg = msg .. ', Kiting'
end
if state.PCTargetMode.value ~= 'default' then
msg = msg .. ', Target PC: '..state.PCTargetMode.value
end
if state.SelectNPCTargets.value == true then
msg = msg .. ', Target NPCs'
end
add_to_chat(122, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function update_defense_mode()
if player.equipment.main == 'Kheshig Blade' and not classes.CustomDefenseGroups:contains('Kheshig Blade') then
classes.CustomDefenseGroups:append('Kheshig Blade')
end
if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
if player.equipment.sub and not player.equipment.sub:contains('Shield') and
player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
state.CombatForm:set('DW')
else
state.CombatForm:reset()
end
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(5, 2)
elseif player.sub_job == 'BLU' then
set_macro_page(4, 2)
elseif player.sub_job == 'RDM' then
set_macro_page(3, 2)
else
set_macro_page(2, 2)
end
end