HTML 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
-------------------------------------------------------------------------------------------------------------------
-- 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('Rag', 'RagMdef', 'Apoc', 'ApocACC', "DW", "DWACC")
state.HybridMode:options ('Reraise')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.PhysicalDefenseMode:options('PDT')
state.MagicalDefenseMode:options('MDT')
select_default_macro_book()
end
-- Elements for skillchain names
skillchain_elements = {}
skillchain_elements.Light = S{'Light','Fire','Wind','Lightning'}
skillchain_elements.Darkness = S{'Dark','Ice','Earth','Water'}
skillchain_elements.Fusion = S{'Light','Fire'}
skillchain_elements.Fragmentation = S{'Wind','Lightning'}
skillchain_elements.Distortion = S{'Ice','Water'}
skillchain_elements.Gravitation = S{'Dark','Earth'}
skillchain_elements.Transfixion = S{'Light'}
skillchain_elements.Compression = S{'Dark'}
skillchain_elements.Liquification = S{'Fire'}
skillchain_elements.Induration = S{'Ice'}
skillchain_elements.Detonation = S{'Wind'}
skillchain_elements.Scission = S{'Earth'}
skillchain_elements.Impaction = S{'Lightning'}
skillchain_elements.Reverberation = S{'Water'}
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
sets.WSDayBonus = {head="Gavialis Helm"}
-- add here to the ws list those you want moonshade on when less than 3000tp
moonshade_WS = S{"Resolution", "Torcleaver", "Cross Reaper", "Quietus", "Entropy", "Insurgency", "Savage Blade", "Vorpal Blade", "Requiescat", "Sanguine Blade"}
-- Precast sets to enhance JAs
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's finger gauntlets +1"}
sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets +3"}
sets.precast.JA['Nether Void'] = {legs="Heathens Flanchard +1"}
sets.precast.JA['Souleater'] = {head="Ignominy Burgeonet +3"}
sets.precast.JA['Weapon Bash'] = {hands="Ignominy Gauntlets +3"}
sets.precast.JA['Last Resort'] = {back="Ankou's Mantle",feet="Fallen's Sollerets +1"}
sets.precast.JA['Dark Seal'] = {head="Fallen's Burgeonet +1"}
sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
sets.buff.Doom = {waist="Gishdubar sash",ring1="Saida Ring",ring2="Saida Ring"}
Ankou={}
Ankou.WSDSTR= { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}}
Ankou.DA= { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}
Ankou.WSDVIT= { name="Ankou's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','VIT+10','Weapon skill damage +10%',}}
Ankou.ACC= { name="Ankou's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10',}}
-- Precast Sets
sets.precast.FC = {
ammo="",
head="Carmine Mask",
neck="Willpower Torque",
ear1="Loquacious Earring",
ear2="Etiolation Earring",
body="Nuevo Coselete",
hands="",
ring1="Prolix Ring",
ring2="Kishar Ring",
back="",
waist="Sailfi Belt",
legs="Eschite cuisses",
feet="Carmine Greaves",}
-- Specific spells
sets.midcast.Utsusemi = set_combine(sets.precast.FC,{
ammo="",
neck="Willpower Torque",
ring2="Evanescence Ring",})
sets.midcast.Endark = {
head="Carmine mask",
neck="Erra Pendant",
ear1="",
body="Carmine Scale Mail",
hands="Fallen's finger gauntlets +1",
left_ring="Stikini Ring",
right_ring="Evanescence Ring",
waist="",
legs="Eschite cuisses",
feet="Ratri Sollerets",
back="Niht Mantle",}
sets.midcast['Endark II'] = set_combine(sets.midcast.Endark, {})
sets.midcast['Dread Spikes'] = {
ammo="Egoist's Tathlum",
head="Odyssean Helm",
body="Heathen's Cuirass +1",
hands="Emicho guantlets",
legs="Carmine Cuisses +1",
feet="Ratri Sollerets",
neck="Sanctity Necklace",
waist="Oneiros Belt",
left_ear="Etiolation Earring",
right_ear="Cryptic Earring",
left_ring="K'ayres Ring",
right_ring="Meridian Ring",
back="Aenoth. Mantle +1",}
sets.midcast['Elemental Magic'] = {
ammo="Hydrocera",
head="Jumalik Helm",
body="Carmine Scale Mail",
hands="Odyssean Gauntlets",
legs="Eschite Cuisses",
feet="Ig. Sollerets +3",
neck="Sanctity necklace",
waist="Eschan Stone",
left_ear="Hecate's Earring",
right_ear="Friomisi Earring",
left_ring="Locus Ring",
right_ring="Mujin Band",
back="Toro Cape",}
sets.midcast['Enfeebling Magic'] = {
ammo="Quartz Tathlum +1",
head="Befouled Crown",
body="Ignominy Cuirass +3",
hands="Flamma Manopolas +1",
legs="Flamma Dirs +1",
feet="Ig. Sollerets +3",
neck="Henic Torque",
waist="Eschan Stone",
left_ear="Hermetic Earring",
right_ear="Gwati Earring",
left_ring="Stikini Ring",
right_ring="Stikini Ring",
back="Chuparrosa Mantle",}
sets.midcast.DarkMagic = {
ammo="Hydrocera",
head="Ig. Burgonet +3",
body="Carmine Scale Mail",
hands="Fallen's finger gauntlets +1",
legs="Eschite cuisses",
feet="Ratri Sollerets",
neck="Erra Pendant",
waist="Eschan Stone",
left_ear="Hermetic Earring",
right_ear="Gwati Earring",
left_ring="Stikini Ring",
right_ring="Evanescence Ring",
back="Niht Mantle",}
sets.midcast.Stun = set_combine(sets.midcast.DarkMagic, {
body="",
hands="",
waist="",
legs="",
feet="",})
sets.midcast.Absorb = set_combine(sets.midcast.DarkMagic, {
back="Chuparrosa Mantle",})
sets.midcast.Drain = {
ammo="Hydrocera",
head="Fall. Burgeonet +1",
neck="Erra Pendant",
left_ear="Hirudinea Earring",
right_ear="Gwati Earring",
body="Carmine Scale Mail",
hands="Fallen's finger gauntlets +1",
left_ring="Stikini Ring",
right_ring="Evanescence Ring",
back="Niht Mantle",
waist="Eschan Stone",
legs="Eschite cuisses",
feet="Ig. Sollerets +1"}
sets.midcast.Aspir = set_combine(sets.midcast.Drain, {})
-- Weaponskill sets
-- FOR ANY WS NOT DEFINED WILL USE BELOW
sets.precast.WS ={
ammo="Knobkierrie",
head="Argosy Celata +1",
body="Ignominy Cuirass +3",
hands="Argosy Mufflers +1",
legs="Ignominy Flanchard +3",
feet="Argosy Sollerets +1",
neck="Fotia Gorget",
waist="Fotia Belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Niqmaddu Ring",
right_ring="Regal ring",
back=Ankou.DA}
-------------------------------------------------------------- SCYTHE -----------------------------------------------------------------------
-- Stat Modifier: 40% STR / 40% INT fTP: 2.75
--Relic Aftermath: 10% Equipment Haste (+102/1024) AG 10% Ability
sets.precast.WS['Catastrophe'] = {
ammo="Knobkierrie",
head="Ratri Sallet",
body="Ig. Cuirass +3",
hands="Ratri Gadlings",
legs="Ratri Cuisses",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Niqmaddu Ring",
right_ring="Regal ring",
back=Ankou.DA}
sets.precast.WS['Catastrophe'].Acc = set_combine(sets.precast.WS['Catastrophe'], {
head="",
hands="",
right_ear="",
left_ring="",
right_ring="",
back="", })
-- Delivers a two-hit attack. Damage varies with TP.
-- Stat Modifier: 60% STR / 60% MND fTP: 2.0 4.0 7.0
sets.precast.WS['Cross Reaper'] = {
ammo="Knobkierrie",
head="Ratri Sallet",
body="Ig. Cuirass +3",
hands="Ratri Gadlings",
legs="Ratri Cuisses",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Niqmaddu Ring",
right_ring="Regal Ring",
back=Ankou.DA}
sets.precast.WS['Cross Reaper'].Acc = set_combine(sets.precast.WS['Cross Reaper'], {
right_ear="",
left_ring="",})
-- Delivers a triple damage attack that ignores target's defense. Amount ignored varies with TP.
--Stat Modifier: 60% STR / 60% MND Defense ignored: 10% 30% 50% fTP: 3.0
sets.precast.WS['Quietus'] = {
ammo="Knobkierrie",
head="Ratri Sallet",
body="Ig. Cuirass +3",
hands="Ratri Gadlings",
legs="Ratri Cuisses",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Niqmaddu Ring",
right_ring="Regal Ring",
back=Ankou.DA}
sets.precast.WS['Quietus'].Acc = set_combine(sets.precast.WS['Quietus'], {})
-- Delivers a fourfold attack. Converts some of the damage into MP. Damage varies with TP.
-- Stat Modifier: 73~85% INT fTP: 0.75 1.25 2.0
-- This weaponskill has its fTP transferred across all hits, making Elemental
-- Gorgets and Elemental Belts excellent neck and waist gear options.
sets.precast.WS['Entropy'] = {
ammo="Knobkierrie",
head="Ig. Burgonet +3",
body="Ig. Cuirass +3",
hands="Ig. Gauntlets +3",
legs="Ig. Flanchard +3",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Shiva Ring",
right_ring="Shiva ring",
back=Ankou.DA}
sets.precast.WS['Entropy'].Acc = set_combine(sets.precast.WS['Entropy'], {})
--Delivers a fourfold attack. Damage varies with TP.
-- Stat Modifier: 20% STR / 20% INT fTP: 0.5 3.25 6.0
sets.precast.WS['Insurgency'] = {
ammo="Knobkierrie",
head="Ratri Sallet",
body="Ig. Cuirass +3",
hands="Argosy Mufflers +1",
legs="Ig. Flanchard +3",
feet="Argosy Sollerets +1",
neck="Fotia Gorget",
waist="Fotia Belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Niqmaddu Ring",
right_ring="Regal Ring",
back=Ankou.DA}
sets.precast.WS['Insurgency'].Acc = set_combine(sets.precast.WS['Insurgency'], {
right_ear="",
left_ring="",})
-------------------------------------------------------------------- SWORD ---------------------------------------------------------------------------------
-- Stat Modifier: 50% MND / 30% STR fTP: 2.75
-- dSTAT: (pINT-mINT)*2
sets.precast.WS['Sanguine Blade'] = {
ammo="Pemphredo Tathlum",
head="Pixie Hairpin +1",
body="Found. Breastplate",
hands="Leyline gloves",
legs="",
feet="Founder's greaves",
neck="Sanctity necklace",
waist="Eschan Stone",
left_ear="Hecate's Earring",
right_ear="Friomisi Earring",
left_ring="Ifrit Ring +1",
right_ring="Ifrit ring +1",
back=Ankou.WSDSTR}
-- Delivers an aerial attack comprised of two hits. Damage varies with TP.
-- Stat Modifier: 50% MND / 50% STR fTP: 4.0 10.25 13.75
sets.precast.WS['Savage Blade'] = {
ammo="Amar Cluster",
head="",
body="",
hands="",
legs="",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Prosilio Belt +1",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Ifrit Ring +1",
right_ring="Ifrit Ring +1",
back=Ankou.WSDSTR}
-- Delivers a fivefold attack, non-elemental damage. Attack power varies with TP.
-- Stat Modifier: 73~85% MND
sets.precast.WS['Requiescat'] = {
ammo="Knobkierrie",
head="Argosy Celata +1",
body="Ignominy Cuirass +3",
hands="Argosy Mufflers +1",
legs="Ignominy Flanchard +3",
feet="Argosy Sollerets +1",
neck="Fotia Gorget",
waist="Fotia Belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Niqmaddu Ring",
right_ring="Regal Ring",
back=Ankou.DA}
-- Delivers a fourfold attack. Chance of critical hit varies with TP.
-- Stat Modifier: 60% STR fTP: 1.375
-- This weaponskill has its fTP transferred across all hits, making Elemental Gorgets
-- and Elemental Belts excellent neck and waist gear options.
sets.precast.WS['Vorpal Blade'] = {
ammo="Knobkierrie",
head="Argosy Celata +1",
body="Argosy Hauberk",
hands="Argosy Mufflers +1",
legs="Argosy Breeches",
feet="Thereoid greaves",
neck="Fotia Gorget",
waist="Thunder Belt",
left_ear="Cessance earring",
right_ear="Telos earring",
left_ring="Regal Ring",
right_ring="Begrudging Ring",
back=Ankou.DA}
----------------------------------------------------------------- GREAT SWORD ---------------------------------------------------------------------------
-- Description: Deals triple damage. Damage varies with TP.
-- Stat Modifier: 80% VIT fTP: 4.75 7.5 10
sets.precast.WS['Torcleaver'] = {
ammo="Knobkierrie",
head="Sulevia's Mask +1",
body="Ignominy Cuirass +3",
hands="Sulevia's Gauntlets +1",
legs="Ignominy Flanchard +3",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
right_ring="Regal Ring",
left_ring="Niqmaddu Ring",
back=Ankou.WSDVIT}
sets.precast.WS['Torcleaver'].Acc = set_combine(sets.precast.WS['Torcleaver'], {
ammo="Seething bomblet +1",
hands="",
left_ear="Cessance earring",
right_ear="",})
--Relic Aftermath: +5% Critical Hit Rate
-- Stat Modifier: 40% STR / 40% VIT fTP: 3.0
sets.precast.WS['Scourge'] = {
ammo="Knobkierrie",
head="Sulevia's Mask +1",
body="Ignominy Cuirass +3",
hands="Sulevia's Gauntlets +1",
legs="Ignominy Flanchard +3",
feet="Sulev. Leggings +1",
neck="Fotia Gorget",
waist="Fotia belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
right_ring="Regal Ring",
left_ring="Niqmaddu Ring",
back=Ankou.WSDVIT}
sets.precast.WS['Scourge'].Acc = set_combine(sets.precast.WS['Scourge'], {
head="",
hands="",
left_ear="",
right_ear="",
left_ring="",
right_ring="",})
--Description: Delivers a fivefold attack. Damage varies with TP.
--Stat Modifier: 73~85% STR fTP: 0.71875 1.5 2.25
-- This weaponskill has its fTP transferred across all hits, making
-- Elemental Gorgets and Elemental Belts excellent neck and waist gear options.
sets.precast.WS['Resolution'] = {
ammo="Knobkierrie",
head="Argosy Celata +1",
body="Ignominy Cuirass +3",
hands="Argosy Mufflers +1",
legs="Ignominy Flanchard +3",
feet="Argosy Sollerets +1",
neck="Fotia Gorget",
waist="Fotia belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Niqmaddu Ring",
right_ring="Regal Ring",
back=Ankou.DA}
sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS['Resolution'], {
head="",
hands="",
left_ear="",
right_ear="",
left_ring="",
right_ring="",
back=Ankou.DA})
-- Idle sets
sets.idle = {
neck="Sanctity Necklace",
ammo="Staunch Tathlum",
ear1="Etiolation Earring",
ear2="Infused Earring",
head="Valorous Mask",
body="Sulevia's Platemail +2",
hands="Sulevia's gauntlets +1",
ring1="Defending Ring",
ring2="Dark Ring",
back="Repulse Mantle",
waist="Flume Belt +1",
legs={ name="Carmine Cuisses +1", augments={'HP+80','STR+12','INT+12',}},
feet="Sulevia's Leggings +2"}
sets.enmity = {
neck="Sanctity necklace",
ammo="Staunch Tathlum",
ear1="Infused Earring",
ear2="Genmei Earring",
body="Lugra cloak +1",
hands="Sulevia's gauntlets +1",
ring1="Defending Ring",
ring2="Shneddick Ring",
back="Agema cape",
waist="Flume belt",
legs="Sulevia's cuisses +1",
feet="Amm greaves"}
sets.resting = set_combine(sets.idle, {})
-- Defense sets
sets.defense.PDT = {
ammo="Staunch Tathlum",
head="Sulevia's Mask +1",
body="Sulevia's Plate. +2",
hands="Sulev. Gauntlets +1",
legs="Sulevi. Cuisses +1",
feet="Sulevia's Leggings +2",
neck="Loricate Torque",
waist="Flume Belt +1",
right_ear="Cessance Earring",
left_ear="Brutal earring",
left_ring="Defending Ring",
right_ring="Dark Ring",
back="Solemnity Cape",}
sets.defense.Reraise = set_combine(sets.defense.PDT,{head="Twilight Helm",body="Twilight Mail",})
sets.defense.MDT = set_combine(sets.defense.PDT,{
right_ring="Fortified Ring",
neck="Warder's Charm +1",})
-- Engaged sets
-- rag with 20 stp on ws, need 57 stp on tp /sam for 5 hit
-- 20 / 23 stp tp will give 6 hit
-- 1112 acc 56 stp
sets.engaged.Rag = {
ammo="Ginsen",
head="Argosy Celata +1",
hands="Argosy Mufflers +1",
legs={ name="Odyssean Cuisses", augments={'Accuracy+19 Attack+19','"Store TP"+6','AGI+10','Accuracy+15',}},
feet="Flamma Gambieras +1",
neck="Lissome necklace",
body={ name="Valorous Mail", augments={'Accuracy+21 Attack+21','"Store TP"+5','VIT+2','Attack+13',}},
waist="Ioskeha belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Rajas Ring",
right_ring="Petrov Ring",
back=Ankou.ACC}
--1163 acc 52 stp
sets.engaged.RagMdef = set_combine(sets.engaged.Rag, {
ammo="Seething Bomblet +1",
head="Sulevia's Mask +1",
body={ name="Valorous Mail", augments={'Accuracy+21 Attack+21','"Store TP"+5','VIT+2','Attack+13',}},
hands="Sulevia's Gauntlets +1",
legs={ name="Odyssean Cuisses", augments={'Accuracy+19 Attack+19','"Store TP"+6','AGI+10','Accuracy+15',}},
feet="Flamma Gambieras +1",
neck="Warder's Charm +1",
waist="Ioskeha belt",
left_ring="Fortified Ring",
right_ring="Defending Ring",
right_ear="Etiolation Earring",
left_ear="Cessance earring",
back=Ankou.ACC})
-- 4 hit if ws with 21 stp /sam requires 75 stp in tp gear, only 28stp if 5 hit w/ 21 on ws
-- 16 / 77 14/78
--currently have 78 stp
sets.engaged.Apoc = {
ammo="Seething Bomblet +1",
head="Argosy Celata +1",
hands="Argosy Mufflers +1",
legs={ name="Odyssean Cuisses", augments={'Accuracy+19 Attack+19','"Store TP"+6','AGI+10','Accuracy+15',}},
feet="Flamma Gambieras +1",
neck="Lissome necklace",
body={ name="Valorous Mail", augments={'Accuracy+21 Attack+21','"Store TP"+5','VIT+2','Attack+13',}},
waist="Ioskeha belt",
right_ear="Brutal Earring",
left_ear="Cessance earring",
left_ring="Rajas Ring",
right_ring="Petrov Ring",
back=Ankou.ACC}
--1196 acc (using rag) 31 stp
sets.engaged.ApocACC = set_combine(sets.engaged.Apoc, {
ammo="Seething Bomblet +1",
head="Valorous Mask",
body={ name="Valorous Mail", augments={'Accuracy+21 Attack+21','"Store TP"+5','VIT+2','Attack+13',}},
hands="Emicho Gauntlets",
legs={ name="Odyssean Cuisses", augments={'Accuracy+19 Attack+19','"Store TP"+6','AGI+10','Accuracy+15',}},
feet="Flamma Gambieras +1",
neck="Lissome Necklace",
waist="Ioskeha belt",
left_ring="Rajas Ring",
right_ring="Petrov Ring",
back=Ankou.ACC})
sets.engaged.DW = {
ammo="Ginsen",
head="",
hands="Sulev. Guantlets +1",
legs="",
feet="",
neck="Lissome Necklace",
body="Emicho haubert",
waist="Ioskeha belt",
right_ear="Suppanomimi",
left_ear="Eabani earring",
left_ring="Petrov Ring",
right_ring="Rajas Ring",
back=Ankou.ACC}
sets.engaged.DWACC = set_combine(sets.engaged.DW, {
ammo="Seething bomblet",
head="",
hands="Emicho Gauntlets",
neck="Subtlety Spec.",
back=Ankou.ACC})
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 == 'Elemental Magic' then
if spell.element == world.day_element or spell.element == world.weather_element then
equip(sets.midcast['Elemental Magic'], {waist="Hachirin-no-Obi"})
end
end
if S{"Torcleaver","Resolution","Catastrophe","Scourge","Cross Reaper"}:contains(spell.english) and (spell.element==world.day_element or spell.element==world.weather_element) then
equip({head="Gavialis Helm"})
end
if S{"Drain","Drain II","Drain III", "Aspir", "Aspir II", "Aspir III"}:contains(spell.english) and (spell.element==world.day_element or spell.element==world.weather_element) then
equip({waist="Hachirin-no-obi"})
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' then
if world.time >= 17*60 or world.time < 7*60 then -- Dusk to Dawn time.
equip({ear1="Lugra Earring +1", ear2="Lugra Earring"})
end
end
if spell.action_type=="Magic" and buffactive.Silence then
eventArgs.cancel = true
send_command('input /item "Echo Drops" <me>')
end
if spell.type=='WeaponSkill' then
if moonshade_WS:contains(spell.english) and player.tp<2850 then
equip({ear2="Moonshade Earring"})
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- 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 buff:lower()=='terror' or buff:lower()=='petrification' or buff:lower()=='sleep' or buff:lower()=='stun' then
if gain then
equip(sets.defense.PDT)
elseif not gain then
handle_equipping_gear(player.status)
end
end
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
if buff:lower()=='sleep' then
if gain and player.hp > 120 and player.status == "Engaged" then -- Equip Berserker's Torque When You Are Asleep
equip({neck="Berserker's Torque"})
elseif not gain then -- Take Berserker's off
handle_equipping_gear(player.status)
end
end
if buff:lower()=='Reive Mark' then
if gain then
equip({neck="Adoulin's Refuge +1"}) disable('neck')
else
enable('neck')
end
end
end
function filtered_action(spell)
if spell.english == 'Torcleaver' then
if player.equipment.main == 'Apocalypse' then
cancel_spell()
send_command('input /ws "Catastrophe" <t>')
elseif player.equipment.main == 'Anguta' then
cancel_spell()
send_command('input /ws "Entropy" <t>')
elseif player.equipment.main == 'Liberator' then
cancel_spell ()
send_command('input /ws "Insurgency" <t>')
end
end
end
function filtered_action(spell)
if spell.english == 'Resolution' then
if player.equipment.main == 'Apocalypse|Anguta|Liberator|Redemption' then
cancel_spell()
send_command('input /ws "Cross Reaper" <t>')
end
end
end
function filtered_action(spell)
if spell.english == 'Shockwave' then
if player.equipment.main == 'Apocalypse|Anguta|Liberator|Redemption' then
cancel_spell()
send_command('input /ws "Spinning Scythe" <t>')
end
end
end
ninjaTools = {
Utsusemi = S{"Shihei",},--"Shikanofuda"
Hojo = S{"Kaginawa",},--"Chonofuda"
Migawari = S{"Mokujin",},
Kakka = S{"Ryuno",},
Tonko = S{"Shinobi-tabi",},
Kurayami = S{"Sairui-Ran",},
Raiton = S{"Hiraishin",},
Hyoton = S{"Tsurara",},
Monomi = S{"Sanjaku",},
}
function job_precast(spell, action, spellMap, eventArgs)
if spell.type=="Ninjutsu" then check_tools(spell) end
end
function check_tools(spell)
for prefix,tools in pairs(ninjaTools) do
if spell.english:startswith(prefix) then
for tool in tools:it() do
if not player.inventory[tool] then
add_to_chat(100,'WARNING: You are out of '..tool..'.')
elseif player.inventory[tool].count < 10 then
add_to_chat(100,'WARNING: You are low on '..tool..'. '..player.inventory[tool].count..' remaining.')
end
end
end
end
end
function customize_melee_set(meleeSet)
if state.Buff.Sleep and player.hp > 120 and player.status == "Engaged" then -- Equip Berserker's Torque When You Are Asleep
meleeSet = set_combine(meleeSet,{neck="Berserker's Torque"})
end
if state.Buff.Doom then
meleeSet = set_combine(meleeSet, sets.buff.Doom)
end
return meleeSet
end
function customize_idle_set(idleSet)
if state.Buff.Doom then
idleSet = set_combine(idleSet, sets.buff.Doom)
end
if S{"Eastern Adoulin","Western Adoulin"}:contains(world.area) then
idleSet = set_combine(idleSet,{body="Councilor's Garb", head="Jumalik helm"})
end
return idleSet
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(2, 7)
end