Code:
I keep including this with my changes since it doesn't take much space but helps to make sure I'm not messin stuff up in the changes I'm makin. :x
-------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
mote_include_version = 2
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff.Saboteur = buffactive.saboteur or false
event_list = L{}
event_list:append(windower.register_event('time change', time_change))
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
state.CombatMode:options('Backline','Frontline')
state.OffenseMode:options('Normal', 'Acc', 'TH')
state.DefenseMode:options('Normal', 'DT')
state.WeaponskillMode:options('Normal', 'Acc', 'TH')
state.CastingMode:options('Normal', 'Acc', 'TH')
state.IdleModes:options('Normal')
state.RestingModes:options('Normal')
state.PhysicalDefenseModes:options('PDT', 'RefreshPDT')
state.MagicalDefenseModes:options('MDT')
state.CombatForm:options('Normal','DW')
state.PhysicalDefenseModes:set('PDT')
if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
state.CombatForm:set('DW')
end
if S{'WAR', 'THF', 'PLD', 'DRK', 'BST', 'RNG', 'SAM', 'NIN', 'BLU', 'DNC', 'RUN'}:contains(player.sub_job) then
state.CombatMode:set('Frontline')
end
EnhancingSpells = S{'Haste', 'Haste', 'Invisible', 'Sneak', 'Regen', 'Regen II', 'Refresh', 'Refresh II', 'Sandstorm', 'Rainstorm', 'Windstorm', 'Firestorm', 'Hailstorm', 'Klimaform'}
MNDPotencySpells = S{'Paralyze', 'Paralyze II', 'Slow', 'Slow II', 'Addle', 'Distract', 'Distract II', 'Frazzle', 'Frazzle II'}
INTAccuracySpells = S{'Sleep', 'Sleep II', 'Sleepga', 'Sleepga II', 'Break', 'Breakga', 'Bind', 'Dispel', 'Gravity', 'Gravity II'}
IceSpells = S{'Blizzard', 'Blizzard II', 'Blizzard III', 'Blizzard IV', 'Blizzard V', 'Blizzaga', 'Blizzaga II', 'Blizzaga III', 'Blizzaja', 'Blizzara', 'Blizzara II', 'Cryohelix'}
send_command('unbind !f11; wait 0.1; bind !f11 gs c cycle CombatMode')
HMAtk = {name="Hagondes Cuffs +1",augments={'Phys. dmg. taken -3%','Magic dmg. taken -3%','"Mag.Atk.Bns."+21',}}
HMAcc = {name="Hagondes Cuffs +1",augments={'Phys. dmg. taken -3%','Mag. Acc.+26',}}
if player.sub_job == 'BLM' then
set_macro_page(2, 5)
elseif player.sub_job == 'NIN' then
set_macro_page(4, 5)
elseif player.sub_job == 'DNC' then
set_macro_page(5, 5)
elseif player.sub_job == 'DRK' then
set_macro_page(7, 5)
elseif player.sub_job == 'PLD' then
set_macro_page(8, 5)
else
set_macro_page(1, 5)
end
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
event_list:map(unregister_event)
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Chainspell'] = {body="Vitivation Tabard"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {main="Excalibur",sub="Buramenk'ah",ammo="Impatiens",
head="Atro. Chapeau +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Asklepian Ring",
back="Kumbira Cape",waist="Fucho-no-obi",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
-- Fast cast sets for spells
-- 80% Fast Cast (including trait) for all spells, plus 5% quick cast
-- No other FC sets necessary.
sets.precast.FC = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Shadow Ring",
back="Ogapepo Cape +1",waist="Witful Belt",legs="Artsieq Hose",feet="Battlecast Gaiters"}
sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty,body="Twilight Cloak"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="Cheruski Needle",
head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Karmesin Vest",hands="Umuthi Gloves",ring1="Aqua Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Wanion Belt",legs="Augury Cuisses",feet="Battlecast Gaiters"}
sets.precast.WS.Acc = {ammo="Jukukik Feather",
head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Letalis Mantle",waist="Wanion Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
sets.precast.WS.DaytimeAcc = set_combine(sets.precast.WS.Acc, {ammo="Tengu-no-Hane"})
sets.precast.WS.TH= {ammo="Cheruski Needle",
head="Sukeroku Hachi.",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Letalis Mantle",waist="Chaac Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] = {ammo="Oreiad's Tathlum",
head="Viti. Chapeau +1",neck="Soil Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Soil Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
sets.precast.WS['Requiescat'].Acc = {ammo="Jukukik Feather",
head="Sukeroku Hachi.",neck="Soil Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Letalis Mantle",waist="Soil Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
sets.precast.WS['Requiescat'].DaytimeAcc = set_combine(sets.precast.WS['Requiescat'].Acc, {ammo="Tengu-no-Hane"})
sets.precast.WS['Knights of Round'] = {ammo="Cheruski Needle",
head="Atro. Chapeau +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
sets.precast.WS['Knights of Round'].Acc = {ammo="Jukukik Feather",
head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Letalis Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
sets.precast.WS['Knights of Round'].DaytimeAcc = set_combine(sets.precast.WS['Knights of Round'].Acc, {ammo="Tengu-no-Hane"})
sets.precast.WS['Death Blossom'] = {ammo="Cheruski Needle",
head="Viti. Chapeau +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
sets.precast.WS['Death Blossom'].Acc = {ammo="Jukukik Feather",
head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
back="Letalis Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
sets.precast.WS['Death Blossom'].DaytimeAcc = set_combine(sets.precast.WS['Death Blossom'].Acc, {ammo="Tengu-no-Hane"})
sets.precast.WS['Chant du Cygne'] = {ammo="Yetshila",
head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Karmesin Vest",hands="Umuthi Gloves",ring1="Thundersoul Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Wanion Belt",legs="Augury Cuisses",feet="Vanir Boots"}
sets.precast.WS['Chant du Cygne'].Acc = {ammo="Jukukik Feather",
head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Karmesin Vest",hands="Umuthi Gloves",ring1="Thundersoul Ring",ring2="Rajas Ring",
back="Letalis Mantle",waist="Wanion Belt",legs="Augury Cuisses",feet="Battlecast Gaiters"}
sets.precast.WS['Chant du Cygne'].DaytimeAcc = set_combine(sets.precast.WS['Chant du Cygne'].Acc, {ammo="Tengu-no-Hane"})
-- Midcast Sets
sets.midcast.FastRecast = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
body="Vitivation Tabard",hands="Umuthi Gloves",ring1="Prolix Ring",ring2="Shadow Ring",
back="Shadow Mantle",waist="Pya'ekue Belt",legs="Artsieq Hose",feet="Battlecast Gaiters"}
sets.midcast.FrontlineCure = {main="Excalibur",sub="Buramenk'ah",ammo="Oreiad's Tathlum",
head="Gende. Caubeen +1",neck="Phalaina Locket",ear1="Estq. Earring",ear2="Ethereal Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Asklepian Ring",
back="Pahtli Cape",waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Estq. Houseaux +2"}
sets.midcast.BacklineCure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Oreiad's Tathlum",
head="Gende. Caubeen +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Novia Earring",
body="Heka's Kalasiris",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Pahtli Cape",waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Estq. Houseaux +2"}
sets.midcast['Enhancing Magic'] = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
head="Umuthi Hat",neck="Colossus's Torque",ear1="Estq. Earring",ear2="Andoaa Earring",
body="Vitivation Tabard",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
back="Estoqueur's Cape",waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Estq. Houseaux +2"}
sets.midcast.Enhancing = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
head="Estoqueur's Chappel +2",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
body="Estoqueur's Sayon +2",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
back="Estoqueur's Cape",waist="Pya'ekue Belt",legs="Estoqueur's Fuseau +2",feet="Estoqueur's Houseaux +2"}
sets.midcast.Refresh = set_combine(sets.midcast.Enhancing, {legs="Estoqueur's Fuseau +2"})
sets.midcast.Stoneskin = {neck="Stone Gorget",ear2="Earthcry Earring",waist="Siegel Sash",legs="Shedir Seraweels"}
sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {waist="Emphatikos Rope",legs="Shedir Seraweels"})
sets.midcast['Enfeebling Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
head="Viti. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Atrophy Tabard +1",hands=HMAcc,ring1="Sangoma Ring",ring2="Perception Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Artsieq Hose",feet="Vitivation Boots +1"}
sets.midcast['Dia III'] = {head="Viti. Chapeau +1"}
sets.midcast['Diaga'] = set_combine(sets.midcast.EnfeeblingMagic, {waist="Chaac Belt"})
sets.midcast.MNDPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
head="Viti. Chapeau +1",neck="Phalaina Locket",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Estoqueur's Sayon +2",hands=HMAcc,ring1="Aqua Ring",ring2="Sirona's Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Artsieq Hose",feet="Uk'uxkaj Boots"}
sets.midcast.MNDPotency.Acc = set_combine(sets.midcast.MNDAccuracy, {body="Estoqueur's Sayon +2",feet="Uk'uxkaj Boots"})
sets.midcast.MNDAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
head="Viti. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Artsieq Jubbah",hands=HMAcc,ring1="Sangoma Ring",ring2="Perception Ring",
back="Ogapepo Cape +1",waist="Demonry Sash",legs="Artsieq Hose",feet="Vitivation Boots +1"}
sets.midcast.INTPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
head="Atro. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Estoqueur's Sayon +2",hands=HMAcc,ring1="Spiral Ring",ring2="Diamond Ring",
back="Refraction Cape",waist="Wanion Belt",legs="Artsieq Hose",feet="Uk'uxkaj Boots"}
sets.midcast.INTPotency.Acc = set_combine(sets.midcast.INTAccuracy, {body="Estoqueur's Sayon +2",feet="Uk'uxkaj Boots"})
sets.midcast.INTAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
body="Artsieq Jubbah",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Perception Ring",
back="Ogapepo Cape +1",waist="Witful Belt",legs="Artsieq Hose",feet="Vitivation Boots +1"}
sets.midcast['ElementalEnfeeble'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
head="Atro. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Artsieq Jubbah",hands=HMAcc,ring1="Sangoma Ring",ring2="Perception Ring",
back="Refraction Cape",waist="Wanion Belt",legs="Artsieq Hose",feet="Vitivation Boots +1"}
sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Witchstone",
head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
body="Seidr Cotehardie",hands=HMAtk,ring1="Acumen Ring",ring2="Diamond Ring",
back="Refraction Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
sets.midcast['Elemental Magic'].Acc = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Kalboron Stone",
head="Atro. Chapeau +1",neck="Imbodla Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Artsieq Jubbah",hands=HMAtk,ring1="Sangoma Ring",ring2="Diamond Ring",
back="Refraction Cape",waist="Wanion Belt",legs="Hagondes Pants +1",feet="Vitivation Boots +1"}
sets.midcast['Elemental Magic'].TH = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Witchstone",
head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
body="Seidr Cotehardie",hands=HMAtk,ring1="Acumen Ring",ring2="Diamond Ring",
back="Refraction Cape",waist="Chaac Belt",legs="Hagondes Pants +1",feet="Umbani Boots"}
sets.midcast.Blizzard = set_combine(sets.midcast['Elemental Magic'], {main="Ngqoqwanb"})
sets.midcast.Blizzard.Acc = set_combine(sets.midcast['Elemental Magic'].Acc, {main="Ngqoqwanb"})
sets.midcast.Blizzard.TH = set_combine(sets.midcast['Elemental Magic'].TH, {main="Ngqoqwanb"})
sets.midcast.Impact = set_combine(sets.midcast['ElementalEnfeeble'], {head=empty,body="Twilight Cloak"})
sets.midcast['Dark Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
head="Viti. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Atrophy Tabard +1",hands=HMAcc,ring1="Sangoma Ring",ring2="Diamond Ring",
back="Refraction Cape",waist="Wanion Belt",legs="Artsieq Hose",feet="Vitivation Boots +1"}
sets.midcast.Stun = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Diamond Ring",
back="Ogapepo Cape +1",waist="Witful Belt",legs="Artsieq Hose",feet="Battlecast Gaiters"}
--sets.midcast.Stun = set_combine(sets.midcast.DarkMagic, {})
--sets.midcast.Drain = set_combine(sets.midcast.DarkMagic, {ring2="Excelsis Ring"})
--sets.midcast.Aspir = sets.midcast.Drain
-- Sets for special buff conditions on spells.
sets.midcast.EnhancingDuration = {hands="Atrophy Gloves +1",back="Estoqueur's Cape",feet="Estoqueur's Houseaux +2"}
sets.buff.ComposureOther = {head="Estoqueur's Chappel +2",
body="Estoqueur's Sayon +2",hands="Atrophy Gloves +1",
back="Estoqueur's Cape",legs="Estoqueur's Fuseau +2",feet="Estoqueur's Houseaux +2"}
sets.buff.Saboteur = {hands="Estoqueur's Gantherots +2"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
back="Shadow Mantle",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle.Town = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
back="Kumbira Cape",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
sets.idle.Field = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
back="Kumbira Cape",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
back="Kumbira Cape",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
-- Defense sets
sets.defense.PDT = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
head="Lithelimb Cap",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
body="Karmesin Vest",hands="Umuthi Gloves",ring1="Defending Ring",ring2="K'ayres Ring",
back="Shadow Mantle",waist="Fucho-no-obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
sets.defense.RefreshPDT = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
body="Atrophy Tabard +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2="K'ayres Ring",
back="Shadow Mantle",waist="Fucho-no-obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
sets.defense.MDT = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
head="Atrophy Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
body="Atrophy Tabard +1",hands="Vitivation Gloves +1",ring1="Defending Ring",ring2="Shadow Ring",
back="Refraction Cape",waist="Wanion Belt",legs="Atrophy Tights +1",feet="Umbani Boots"}
-- 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 = {main="Excalibur", sub="Genbu's Shield",ammo="Paeapua",
head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Karmesin Vest",hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Shetal Stone",legs="Augury Cuisses",feet="Battlecast Gaiters"}
sets.engaged.Acc = {main="Excalibur", sub="Genbu's Shield",ammo="Jukukik Feather",
head="Lithelimb Cap",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Karmesin Vest",hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
back="Letalis Mantle",waist="Shetal Stone",legs="Augury Cuisses",feet="Battlecast Gaiters"}
sets.engaged.Acc.Daytime = set_combine(sets.engaged.Acc, {ammo="Tengu-no-Hane"})
sets.engaged.TH = {main="Excalibur", sub="Genbu's Shield",ammo="Paeapua",
head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Karmesin Vest",hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Chaac Belt",legs="Augury Cuisses",feet="Battlecast Gaiters"}
sets.engaged.DW = set_combine(sets.engaged, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
sets.engaged.DW.Acc = set_combine(sets.engaged.Acc, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
sets.engaged.DW.Acc.Daytime = set_combine(sets.engaged.Acc.Daytime, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
sets.engaged.DW.TH = set_combine(sets.engaged.TH, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
-- Defensive melee group
sets.engaged.DT = set_combine(sets.engaged, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.engaged.Acc.DT = set_combine(sets.engaged.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.engaged.Acc.DT.Daytime = set_combine(sets.engaged.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.engaged.TH.DT = set_combine(sets.engaged.TH, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.engaged.DW.DT = set_combine(sets.engaged.DW, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.engaged.DW.Acc.DT = set_combine(sets.engaged.DW.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.engaged.DW.Acc.DT.Daytime = set_combine(sets.engaged.DW.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.engaged.DW.TH.DT = set_combine(sets.engaged.DW.TH, {head="Lithelimb Cap",neck="Twilight Torque",
hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
sets.FrontlineWeapons = {main="Excalibur", sub="Genbu's Shield"}
sets.FrontlineWeapons.DW = {main="Excalibur", sub="Buramenk'ah"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
-- Default base equipment layer of fast recast.
equip(sets.midcast.FastRecast)
end
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
equip(sets.buff.Saboteur)
elseif spell.skill == 'Enhancing Magic' then
if buffactive.composure and spell.target.type == 'PLAYER' then
if spell.english == 'Phalanx II' then
equip(sets.buff.EnhancingDuration)
else
equip(sets.buff.ComposureOther)
end
else
equip(sets.midcast.EnhancingDuration)
end
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 then
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') then
if state.CombatMode == 'Frontline' then
return "FrontlineCure"
else
return "BacklineCure"
end
elseif MNDPotencySpells:contains(spell.english) then
return 'MNDPotency'
elseif spell.english == 'Silence' then
return 'MNDAccuracy'
elseif spell.english == 'Blind' then
return 'INTPotency'
elseif INTAccuracySpells:contains(spell.english) then
return 'INTAccuracy'
elseif EnhancingSpells:contains(spell.english) then
return 'Enhancing'
elseif IceSpells:contains(spell.english) then
return 'Blizzard'
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
end
function get_custom_wsmode(spell, action, spellMap, default_wsmode)
if default_wsmode == 'Acc' and classes.Daytime then
return 'DaytimeAcc'
end
end
function job_time_change(new_time, old_time)
classes.CustomMeleeGroups:clear()
if classes.Daytime then
classes.CustomMeleeGroups:append('Daytime')
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- 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)
if weapons then
equip(weapons)
weapons = nil
eventArgs.handled = true
end
end
function job_state_change(stateField, newValue, oldValue)
if stateField == 'CombatMode' then
if newValue == 'Frontline' then
weapons = sets.FrontlineWeapons[state.CombatForm] or sets.FrontlineWeapons
send_command('wait 0.1; gs disable main sub')
else
enable('main', 'sub')
end
end
end
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
end
local meleeString = ''
if state.OffenseMode == 'Normal' then
--meleeString = 'Melee: Weapons locked, '
end
add_to_chat(122,'Combat ['..state.CombatMode..'], '..meleeString..'Casting ['..state.CastingMode..'], '..meleeString..
'Idle ['..state.IdleMode..'], '..defenseString..'Kiting: '..on_off_names[state.Kiting])
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
set_macro_page(1, 5)
-- Default macro set/book
if player.sub_job == 'BLM' then
set_macro_page(2, 5)
elseif player.sub_job == 'NIN' then
set_macro_page(4, 5)
elseif player.sub_job == 'DNC' then
set_macro_page(5, 5)
elseif player.sub_job == 'DRK' then
set_macro_page(7, 5)
elseif player.sub_job == 'PLD' then
set_macro_page(8, 5)
end
end