|
thief lua not activating pdt set possible glitch
By vpmarche 2020-10-23 23:49:44
thief lua not activating pdt set possible glitch Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:
gs c cycle treasuremode (set on ctrl-= by default): Cycles through the available treasure hunter modes.
Treasure hunter modes:
None - Will never equip TH gear
Tag - Will equip TH gear sufficient for initial contact with a mob (either melee, ranged hit, or Aeolian Edge AOE)
SATA - Will equip TH gear sufficient for initial contact with a mob, and when using SATA
Fulltime - Will keep TH gear equipped fulltime
--]]
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('organizer-lib.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
state.Buff['Trick Attack'] = buffactive['trick attack'] or false
state.Buff['Feint'] = buffactive['feint'] or false
include('Mote-TreasureHunter')
-- For th_action_check():
-- JA IDs for actions that always have TH: Provoke, Animated Flourish
info.default_ja_ids = S{35, 204}
-- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
info.default_u_ja_ids = S{201, 202, 203, 205, 207}
end
function job_handle_equipping_gear(playerStatus, eventArgs)
local lockables = T{'Mecisto. Mantle', 'Shobuhouou Kabuto', 'Aptitude Mantle', 'Nexus Cape', 'Aptitude Mantle +1', 'Warp Ring', 'Vocation Ring', 'Reraise Earring', 'Capacity Ring', 'Trizek Ring', 'Echad Ring', 'Facility Ring', 'Dim. Ring (Holla)', 'Dim. Ring (Dem)', 'Dim. Ring (Mea)'}
local watch_slots = T{'ear1','ear2','ring1','ring2','back','head'}
for _,v in pairs(watch_slots) do
if lockables:contains(player.equipment[v]) then
disable(v)
if has_charges(player.equipment[v]) and (not is_enchant_ready(player.equipment[v])) then
enable(v)
end
else
enable(v)
end
end
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', 'Evasion', 'PDT')
state.RangedMode:options('Normal', 'Acc')
state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
state.PhysicalDefenseMode:options('Evasion', 'PDT', 'MDT')
gear.default.weaponskill_neck = "Fotia gorget"
gear.default.weaponskill_waist = "Fotia Belt"
--gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','STR+8'}}
-- Additional local binds
send_command('bind ^` input /ja "Flee" <me>')
send_command('bind ^= gs c cycle treasuremode')
send_command('bind !- gs c cycle targetmode')
--send_command('gs org')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind !-')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Special sets (required by rules)
--------------------------------------
sets.TreasureHunter = {
head={ name="Adhemar Bonnet", augments={'DEX+10','AGI+10','Accuracy+15',}},
body={ name="Adhemar Jacket +1", augments={'STR+12','DEX+12','Attack+20',}},
hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},
legs={ name="Samnuha Tights", augments={'STR+8','DEX+9','"Dbl.Atk."+3','"Triple Atk."+2',}},
feet="Skulk. Poulaines +1",
neck="Lissome Necklace",
waist="Chaac Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.ExtraRegen = {}
sets.buff['Sneak Attack'] = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands="Skulk. Armlets +1",
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
sets.buff['Trick Attack'] = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+15 Attack+15','Weapon skill damage +3%','AGI+8','Attack+9',}},
hands="Pill. Armlets +3",
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Garuda Ring +1",
right_ring="Garuda Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
-- Actions we want to use to tag TH.
sets.precast.Step = set_combine(sets.TreasureHunter, {waist="Chaac Belt",feet="Skulk. Poulaines +1",hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},})
sets.precast.Flourish1 = set_combine(sets.TreasureHunter, {waist="Chaac Belt",feet="Skulk. Poulaines +1",hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},})
sets.precast.JA.Provoke = set_combine(sets.TreasureHunter, {waist="Chaac Belt",feet="Skulk. Poulaines +1",hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},})
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Collaborator'] = {head="Skulker's Bonnet +1"}
sets.precast.JA['Accomplice'] = {head="Skulker's Bonnet +1"}
sets.precast.JA['Flee'] = {feet="Pill. Poulaines +3"}
sets.precast.JA['Hide'] = {body="Pillager's Vest +3"}
sets.precast.JA['Conspirator'] = {body="Skulker's Vest +1"}
sets.precast.JA['Steal'] = {hands="Thief's Kote"},{legs="Pillager's Culottes +3"},{feet="Pillager's Poulaines +3"}
sets.precast.JA['Despoil'] = {legs="Skulker's Culottes +1", feet="Pill. Poulaines +3"}
sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +2"}
sets.precast.JA['Feint'] = {legs="Pillager's Culottes +3"}
sets.precast.JA['Sneak Attack'] = set_combine(sets.buff['Sneak Attack'], {hands="Skulk. Armlets +1"},{back={ name="Toutatis's Cape", augments={'DEX+10','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},},{left_ring="Ramuh Ring +1"},{right_ring="Ramuh Ring +1"})
sets.precast.JA['Trick Attack'] = set_combine(sets.buff['Trick Attack'], {hands="Pill. Armlets +3"},{left_ring="Garuda Ring +1"},{right_ring="Garuda Ring +1"})
-- Waltz set (chr and vit)
sets.precast.Waltz = {head="Kheper Bonnet",
body={ name="Herculean Vest", augments={'Accuracy+25 Attack+25','"Waltz" potency +10%','AGI+7',}},
hands="Pill. Armlets +3",
legs="Dashing Subligar",
feet="Rawhide Boots",
neck="Lissome Necklace",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Asklepian Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {head="Kheper Bonnet",
body={ name="Herculean Vest", augments={'Accuracy+25 Attack+25','"Waltz" potency +10%','AGI+7',}},
hands="Pill. Armlets +3",
legs="Dashing Subligar",
feet="Rawhide Boots",
neck="Lissome Necklace",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Asklepian Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Fast cast sets for spells
sets.precast.FC = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
--head="Heidrek Mask",
body={ name="Samnuha Coat", augments={'Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+5','"Dual Wield"+5',}},
hands={ name="Leyline Gloves", augments={'Accuracy+12','Mag. Acc.+14','"Mag.Atk.Bns."+15','"Fast Cast"+2',}},
legs="Limbo Trousers",
feet="Pill. Poulaines +3",
neck="Nefarious Collar +1",
waist="Isa Belt",
left_ear="Etiolation Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Prolix Ring",
right_ring="Lebeche Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {body= "Pillager's Vest +3", neck="Magoraga Beads"})
-- Ranged snapshot gear
sets.precast.RA = {
range="Exalted C.bow +1",
ammo="Gashing Bolt",
head="Meghanada Visor +2",
body="Meghanada Cuirie +2",
hands="Meghanada gloves +2",
legs="Meg. Chausses +2",
feet="Meg. Jam. +2",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Cacoethic Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
ammo="Gashing Bolt",
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Fotia Necklace",
waist="Fotia Gorget",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Shiva Ring +1",
right_ring="Shiva Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Falcon eye", back="Kayapa cape"})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Garuda Ring +1",
right_ring="Garuda Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},})
sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {})
sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {})
sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},})
sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {})
sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {neck="Fotia Gorget" ,waist="Fotia Belt"})
sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Evisceration'] = { body="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {})
sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {})
sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS["Rudra's Storm"] = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
--feet="Heidrek Boots",
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},}
sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},})
sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {head="Pill. Bonnet +2"})
sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +3",hands="Skulker's Armlets +1"})
sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +3",hands="Pillager's Armlets +3"})
sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},legs="Pillager's Culottes +3", hands="Skulker's Armlets +1"})
sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},})
sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {})
sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {waist="Fotia Belt"})
sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +2"})
sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +2"})
sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},legs="Pillager's Culottes +3"})
sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS,
{head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Fotia Necklace",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},})
sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {})
sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {})
sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {
})
sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {
})
sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {
})
sets.precast.WS['Aeolian Edge'] = {
head={ name="Herculean Helm", augments={'Mag. Acc.+13 "Mag.Atk.Bns."+13','Weapon skill damage +3%','Mag. Acc.+4',}},
body={ name="Samnuha Coat", augments={'Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+5','"Dual Wield"+5',}},
hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','STR+9','Mag. Acc.+5','"Mag.Atk.Bns."+13',}},
feet={ name="Herculean Boots", augments={'Mag. Acc.+12','Weapon skill damage +5%','MND+6','"Mag.Atk.Bns."+4',}},
neck="Nefarious Collar +1",
waist="Skrymir Cord",
--waist="Chaac Belt",
left_ear="Friomisi Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Shiva Ring +1",
right_ring="Shiva Ring +1",
back={ name="Toutatis's Cape", augments={'INT+20','Magic Damage +10','Weapon skill damage +10%',}},
}
sets.precast.WS['Mercy Stroke'] = { ammo="Gashing Bolt",
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Ifrit Ring",
right_ring="Ifrit Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},}
--sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)
sets.precast.WS['Aeolian Edge'].TH = {
head={ name="Herculean Helm", augments={'Mag. Acc.+13 "Mag.Atk.Bns."+13','Weapon skill damage +3%','Mag. Acc.+4',}},
body={ name="Samnuha Coat", augments={'Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+5','"Dual Wield"+5',}},
hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','STR+9','Mag. Acc.+5','"Mag.Atk.Bns."+13',}},
feet={ name="Herculean Boots", augments={'Mag. Acc.+12','Weapon skill damage +5%','MND+6','"Mag.Atk.Bns."+4',}},
neck="Nefarious Collar +1",
waist="Skrymir Cord",
--waist="Chaac Belt",
left_ear="Friomisi Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Shiva Ring +1",
right_ring="Shiva Ring +1",
back={ name="Toutatis's Cape", augments={'INT+20','Magic Damage +10','Weapon skill damage +10%',}},
}
--------------------------------------
-- Midcast sets
--------------------------------------
--[[sets.midcast.FastRecast = {
head="Herculean helm",ear1="Ethereal earring", ear2="Loquacious Earring",
neck="Orunmila's torque", body="Lapidary tunic",hands="Thaumas gloves",
ring1="Defending ring", ring2="Prolix ring",
back="Canny cape",waist="Hurch'lan sash", legs="Enif Cosciales",feet="Taeon boots"}]]
-- Specific spells
sets.midcast.Utsusemi = sets.midcast.FastRecast
--{
-- head="Whirlpool Mask",neck="Ej Necklace",ear2="Loquacious Earring",
-- body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",
-- back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
-- Ranged gear
sets.midcast.RA = {
head="Meghanada Visor +2",
body="Meghanada Cuirie +2",
hands="Meghanada Gloves +2",
legs="Meg. Chausses +2",
feet="Meg. Jam. +2",
neck="Sancity Necklace",
waist="Chaac Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Cacoethic Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+4','Crit.hit rate+10',}},
}
-- head="Whirlpool Mask",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
-- body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Hajduk Ring",
-- back="Libeccio Mantle",waist="Aquiline Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
sets.midcast.RA.Acc = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
legs="Meg. Chausses +2",
feet="Meg. Jam. +2",
neck="Sanctity Necklace",
waist="Chaac Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Cacoethic Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+4','Crit.hit rate+10',}},
}
-- head="Pillager's Bonnet +1",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
-- body="Iuitl Vest",hands="Buremte Gloves",ring1="Beeline Ring",ring2="Hajduk Ring",
-- back="Libeccio Mantle",waist="Aquiline Belt",legs="Thurandaut Tights +1",feet="Pillager's Poulaines +1"}
--------------------------------------
-- Idle/resting/defense sets
--------------------------------------
-- Resting sets
sets.resting = {
ring1="Sheltered Ring"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
-- right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.idle.Town = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
-- right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.idle.Weak = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Pill. Armlets +3",
--hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Twilight Torque",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring={ name="Dark Ring", augments={'Phys. dmg. taken -4%','Magic dmg. taken -3%',}},
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Defense sets
sets.defense.Evasion = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Eabani Earring",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.defense.PDT = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--left_ear="Eabani Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Defending Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
--------------------------------------
-- Melee sets
--------------------------------------
-- Normal melee group
sets.engaged = {
head="Pill. Bonnet +3",
--head="Heidrek Mask",
body="Pillager's Vest +3",
-- body={ name="Adhemar Jacket +1", augments={'STR+12','DEX+12','Attack+20',}},
--Body="Heidrek Harness",
hands="Pill. Armlets +3",
--hands="Heidrek Gloves",
legs="Pill. Culottes +3",
--legs="Heidrek Brais",
--feet="Heidrek Boots",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
--right_ear="Cessance Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.engaged.Acc = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Mod set for trivial mobs (Skadi+1)
sets.engaged.Mod = {
head="Pill. Bonnet +3",
--head="Heidrek Mask",
body="Pillager's Vest +3",
--Body="Heidrek Harness",
hands="Pill. Armlets +3",
--hands="Heidrek Gloves",
legs="Pill. Culottes +3",
--legs="Heidrek Brais",
--feet="Heidrek Boots",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Mod set for trivial mobs (Thaumas)
--sets.engaged.Mod2 = {ammo="Thew Bomblet",
-- head="Felistris Mask",neck="Asperity Necklace",ear1="Sherida Earring",ear2="Telos Earring",
-- body="Thaumas Coat",hands="Pillager's Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
-- back="Atheling Mantle",waist="Reiki Yotai",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
sets.engaged.Evasion = {
head="Pill. Bonnet +3",
--head="Heidrek Mask",
body="Pillager's Vest +3",
--Body="Heidrek Harness",
hands="Pill. Armlets +3",
--hands="Heidrek Gloves",
legs="Pill. Culottes +3",
--legs="Heidrek Brais",
--feet="Heidrek Boots",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
--sets.engaged.Acc.Evasion = {ammo="Jukukik feather",
-- head="Whirlpool Mask",neck="Ej Necklace",ear1="Sherida Earring",ear2="Telos Earring",
-- body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
-- back="Canny Cape",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
sets.engaged.PDT = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
--hands="Pill. Armlets +3",
legs="Pill. Culottes +2",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.engaged.Acc.PDT = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
--hands="Pill. Armlets +3",
legs="Pill. Culottes +2",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
organizer_items = {
weapon1 = "Aeneas",
weapon2 = "Sandung",
weapon3 = "Exalted C.bow +1",
warpring = "Warp Ring",
sub = "Joiner's Shield",
neck = "Carver's Torque",
body = "Carpenter's Smock",
hands = "Carpenter's Gloves",
ring1 = "Orvail Ring",
ring2 = "Craftmaster's Ring",
}
}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the general precast() is done.
function job_post_precast(spell, action, spellMap, eventArgs)
-- if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
-- equip(sets.TreasureHunter)
-- else
if spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
equip(sets.TreasureHunter)
end
end
end
-- Run after the general midcast() set is constructed.
function job_post_midcast(spell, action, spellMap, eventArgs)
if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
equip(sets.TreasureHunter)
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)
-- Weaponskills wipe SATA/Feint. Turn those state vars off before default gearing is attempted.
if spell.type == 'WeaponSkill' and not spell.interrupted then
state.Buff['Sneak Attack'] = false
state.Buff['Trick Attack'] = false
state.Buff['Feint'] = false
end
end
-- Called after the default aftercast handling is complete.
function job_post_aftercast(spell, action, spellMap, eventArgs)
-- If Feint is active, put that gear set on on top of regular gear.
-- This includes overlaying SATA gear.
check_buff('Feint', eventArgs)
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
if not midaction() then
handle_equipping_gear(player.status)
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function get_custom_wsmode(spell, spellMap, defaut_wsmode)
local wsmode
if state.Buff['Sneak Attack'] then
wsmode = 'SA'
end
if state.Buff['Trick Attack'] then
wsmode = (wsmode or '') .. 'TA'
end
return wsmode
end
-- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
function job_handle_equipping_gear(playerStatus, eventArgs)
-- Check that ranged slot is locked, if necessary
check_range_lock()
-- Check for SATA when equipping gear. If either is active, equip
-- that gear specifically, and block equipping default gear.
check_buff('Sneak Attack', eventArgs)
check_buff('Trick Attack', eventArgs)
end
function customize_idle_set(idleSet)
if player.hpp < 80 then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.TreasureMode.value == 'Fulltime' then
meleeSet = set_combine(meleeSet, sets.TreasureHunter)
end
return meleeSet
end
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
th_update(cmdParams, eventArgs)
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
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.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
msg = msg .. ', TH: ' .. state.TreasureMode.value
add_to_chat(122, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- State buff checks that will equip buff gear and mark the event as handled.
function check_buff(buff_name, eventArgs)
if state.Buff[buff_name] then
equip(sets.buff[buff_name] or {})
if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
equip(sets.TreasureHunter)
end
eventArgs.handled = true
end
end
res = require('resources')
extdata = require('extdata')
-- Item must be equipped for it to return any meaningful value.
function is_enchant_ready(--[[name of item]]item)
local item_id, item = res.items:find(function(v) if v.name == item then return true end end)
local inventory = windower.ffxi.get_items()
local usable_bags = T{'inventory','wardrobe','wardrobe2','wardrobe3','wardrobe4'}
local itemdata = {}
for i,v in pairs(inventory) do
if usable_bags:contains(i) then
for key,val in pairs(v) do
if type(val) == 'table' and val.id == item_id then
itemdata = extdata.decode(val)
end
end
end
end
if itemdata and itemdata.charges_remaining then
if itemdata.activation_time - itemdata.next_use_time > item.cast_delay then
return true
end
end
return false
end
function has_charges(--[[name of item]]item)
local item_id, item = res.items:find(function(v) if v.name == item then return true end end)
local inventory = windower.ffxi.get_items()
local bags = T{'inventory','safe','safe2','storage','satchel','locker','sack','case','wardrobe','wardrobe2','wardrobe3','wardrobe4'}
local itemdata = {}
for i,v in pairs(inventory) do
if bags:contains(i) then
for key,val in pairs(v) do
if type(val) == 'table' and val.id == item_id then
itemdata = extdata.decode(val)
end
end
end
end
if itemdata and itemdata.charges_remaining then
if itemdata.charges_remaining > 0 then
return true
end
end
return false
end
-- Check for various actions that we've specified in user code as being used with TH gear.
-- This will only ever be called if TreasureMode is not 'None'.
-- Category and Param are as specified in the action event packet.
function th_action_check(category, param)
if category == 2 or -- any ranged attack
--category == 4 or -- any magic action
(category == 3 and param == 30) or -- Aeolian Edge
(category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
(category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
then return true
end
end
-- Function to lock the ranged slot if we have a ranged weapon equipped.
function check_range_lock()
if player.equipment.range ~= 'empty' then
disable('range', 'ammo')
else
enable('range', 'ammo')
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(6, 1)
elseif player.sub_job == 'WAR' then
set_macro_page(6, 1)
elseif player.sub_job == 'NIN' then
set_macro_page(6, 1)
else
set_macro_page(6, 1)
end
end
Serveur: Asura
Game: FFXI
Posts: 167
By Asura.Zidaner 2020-10-24 00:57:23
You don't have PDT option in offenseMode. I am no expert with lua so maybe this isn't what you need.
By vpmarche 2020-10-24 04:38:01
-- 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', 'Evasion', 'PDT')
state.RangedMode:options('Normal', 'Acc')
state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
state.PhysicalDefenseMode:options('Evasion', 'PDT', 'MDT')
figured it out thx
thief lua not activating pdt set possible glitch Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:
gs c cycle treasuremode (set on ctrl-= by default): Cycles through the available treasure hunter modes.
Treasure hunter modes:
None - Will never equip TH gear
Tag - Will equip TH gear sufficient for initial contact with a mob (either melee, ranged hit, or Aeolian Edge AOE)
SATA - Will equip TH gear sufficient for initial contact with a mob, and when using SATA
Fulltime - Will keep TH gear equipped fulltime
--]]
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('organizer-lib.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
state.Buff['Trick Attack'] = buffactive['trick attack'] or false
state.Buff['Feint'] = buffactive['feint'] or false
include('Mote-TreasureHunter')
-- For th_action_check():
-- JA IDs for actions that always have TH: Provoke, Animated Flourish
info.default_ja_ids = S{35, 204}
-- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
info.default_u_ja_ids = S{201, 202, 203, 205, 207}
end
function job_handle_equipping_gear(playerStatus, eventArgs)
local lockables = T{'Mecisto. Mantle', 'Shobuhouou Kabuto', 'Aptitude Mantle', 'Nexus Cape', 'Aptitude Mantle +1', 'Warp Ring', 'Vocation Ring', 'Reraise Earring', 'Capacity Ring', 'Trizek Ring', 'Echad Ring', 'Facility Ring', 'Dim. Ring (Holla)', 'Dim. Ring (Dem)', 'Dim. Ring (Mea)'}
local watch_slots = T{'ear1','ear2','ring1','ring2','back','head'}
for _,v in pairs(watch_slots) do
if lockables:contains(player.equipment[v]) then
disable(v)
if has_charges(player.equipment[v]) and (not is_enchant_ready(player.equipment[v])) then
enable(v)
end
else
enable(v)
end
end
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', 'Evasion', 'PDT')
state.RangedMode:options('Normal', 'Acc')
state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
state.PhysicalDefenseMode:options('Evasion', 'PDT', 'MDT')
gear.default.weaponskill_neck = "Fotia gorget"
gear.default.weaponskill_waist = "Fotia Belt"
--gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','STR+8'}}
-- Additional local binds
send_command('bind ^` input /ja "Flee" <me>')
send_command('bind ^= gs c cycle treasuremode')
send_command('bind !- gs c cycle targetmode')
--send_command('gs org')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind !-')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Special sets (required by rules)
--------------------------------------
sets.TreasureHunter = {
head={ name="Adhemar Bonnet", augments={'DEX+10','AGI+10','Accuracy+15',}},
body={ name="Adhemar Jacket +1", augments={'STR+12','DEX+12','Attack+20',}},
hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},
legs={ name="Samnuha Tights", augments={'STR+8','DEX+9','"Dbl.Atk."+3','"Triple Atk."+2',}},
feet="Skulk. Poulaines +1",
neck="Lissome Necklace",
waist="Chaac Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.ExtraRegen = {}
sets.buff['Sneak Attack'] = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands="Skulk. Armlets +1",
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
sets.buff['Trick Attack'] = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+15 Attack+15','Weapon skill damage +3%','AGI+8','Attack+9',}},
hands="Pill. Armlets +3",
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Garuda Ring +1",
right_ring="Garuda Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
-- Actions we want to use to tag TH.
sets.precast.Step = set_combine(sets.TreasureHunter, {waist="Chaac Belt",feet="Skulk. Poulaines +1",hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},})
sets.precast.Flourish1 = set_combine(sets.TreasureHunter, {waist="Chaac Belt",feet="Skulk. Poulaines +1",hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},})
sets.precast.JA.Provoke = set_combine(sets.TreasureHunter, {waist="Chaac Belt",feet="Skulk. Poulaines +1",hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},})
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Collaborator'] = {head="Skulker's Bonnet +1"}
sets.precast.JA['Accomplice'] = {head="Skulker's Bonnet +1"}
sets.precast.JA['Flee'] = {feet="Pill. Poulaines +3"}
sets.precast.JA['Hide'] = {body="Pillager's Vest +3"}
sets.precast.JA['Conspirator'] = {body="Skulker's Vest +1"}
sets.precast.JA['Steal'] = {hands="Thief's Kote"},{legs="Pillager's Culottes +3"},{feet="Pillager's Poulaines +3"}
sets.precast.JA['Despoil'] = {legs="Skulker's Culottes +1", feet="Pill. Poulaines +3"}
sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +2"}
sets.precast.JA['Feint'] = {legs="Pillager's Culottes +3"}
sets.precast.JA['Sneak Attack'] = set_combine(sets.buff['Sneak Attack'], {hands="Skulk. Armlets +1"},{back={ name="Toutatis's Cape", augments={'DEX+10','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},},{left_ring="Ramuh Ring +1"},{right_ring="Ramuh Ring +1"})
sets.precast.JA['Trick Attack'] = set_combine(sets.buff['Trick Attack'], {hands="Pill. Armlets +3"},{left_ring="Garuda Ring +1"},{right_ring="Garuda Ring +1"})
-- Waltz set (chr and vit)
sets.precast.Waltz = {head="Kheper Bonnet",
body={ name="Herculean Vest", augments={'Accuracy+25 Attack+25','"Waltz" potency +10%','AGI+7',}},
hands="Pill. Armlets +3",
legs="Dashing Subligar",
feet="Rawhide Boots",
neck="Lissome Necklace",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Asklepian Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {head="Kheper Bonnet",
body={ name="Herculean Vest", augments={'Accuracy+25 Attack+25','"Waltz" potency +10%','AGI+7',}},
hands="Pill. Armlets +3",
legs="Dashing Subligar",
feet="Rawhide Boots",
neck="Lissome Necklace",
waist="Windbuffet Belt +1",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Asklepian Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Fast cast sets for spells
sets.precast.FC = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
--head="Heidrek Mask",
body={ name="Samnuha Coat", augments={'Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+5','"Dual Wield"+5',}},
hands={ name="Leyline Gloves", augments={'Accuracy+12','Mag. Acc.+14','"Mag.Atk.Bns."+15','"Fast Cast"+2',}},
legs="Limbo Trousers",
feet="Pill. Poulaines +3",
neck="Nefarious Collar +1",
waist="Isa Belt",
left_ear="Etiolation Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Prolix Ring",
right_ring="Lebeche Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {body= "Pillager's Vest +3", neck="Magoraga Beads"})
-- Ranged snapshot gear
sets.precast.RA = {
range="Exalted C.bow +1",
ammo="Gashing Bolt",
head="Meghanada Visor +2",
body="Meghanada Cuirie +2",
hands="Meghanada gloves +2",
legs="Meg. Chausses +2",
feet="Meg. Jam. +2",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Cacoethic Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
ammo="Gashing Bolt",
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Fotia Necklace",
waist="Fotia Gorget",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Shiva Ring +1",
right_ring="Shiva Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Falcon eye", back="Kayapa cape"})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Garuda Ring +1",
right_ring="Garuda Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},})
sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {})
sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {})
sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},})
sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {})
sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {neck="Fotia Gorget" ,waist="Fotia Belt"})
sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Evisceration'] = { body="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},
}
sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {})
sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {})
sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS["Rudra's Storm"] = {
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
--feet="Heidrek Boots",
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},}
sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},})
sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {head="Pill. Bonnet +2"})
sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +3",hands="Skulker's Armlets +1"})
sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +3",hands="Pillager's Armlets +3"})
sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},legs="Pillager's Culottes +3", hands="Skulker's Armlets +1"})
sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},})
sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {})
sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {waist="Fotia Belt"})
sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +2"})
sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {
body="Pillager's Vest +3",legs="Pillager's Culottes +2"})
sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},legs="Pillager's Culottes +3"})
sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS,
{head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Fotia Necklace",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Ramuh Ring +1",
right_ring="Ramuh Ring +1",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},})
sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {})
sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {})
sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {
})
sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {
})
sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {
})
sets.precast.WS['Aeolian Edge'] = {
head={ name="Herculean Helm", augments={'Mag. Acc.+13 "Mag.Atk.Bns."+13','Weapon skill damage +3%','Mag. Acc.+4',}},
body={ name="Samnuha Coat", augments={'Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+5','"Dual Wield"+5',}},
hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','STR+9','Mag. Acc.+5','"Mag.Atk.Bns."+13',}},
feet={ name="Herculean Boots", augments={'Mag. Acc.+12','Weapon skill damage +5%','MND+6','"Mag.Atk.Bns."+4',}},
neck="Nefarious Collar +1",
waist="Skrymir Cord",
--waist="Chaac Belt",
left_ear="Friomisi Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Shiva Ring +1",
right_ring="Shiva Ring +1",
back={ name="Toutatis's Cape", augments={'INT+20','Magic Damage +10','Weapon skill damage +10%',}},
}
sets.precast.WS['Mercy Stroke'] = { ammo="Gashing Bolt",
head={ name="Herculean Helm", augments={'Weapon skill damage +5%','DEX+9','Accuracy+13',}},
body={ name="Herculean Vest", augments={'Accuracy+16 Attack+16','Weapon skill damage +4%','DEX+9',}},
hands={ name="Herculean Gloves", augments={'Weapon skill damage +5%',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','Accuracy+14','Attack+10',}},
feet={ name="Herculean Boots", augments={'Weapon skill damage +4%','DEX+2','Accuracy+9','Attack+4',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Brutal Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
left_ring="Ifrit Ring",
right_ring="Ifrit Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+3','Weapon skill damage +10%',}},}
--sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)
sets.precast.WS['Aeolian Edge'].TH = {
head={ name="Herculean Helm", augments={'Mag. Acc.+13 "Mag.Atk.Bns."+13','Weapon skill damage +3%','Mag. Acc.+4',}},
body={ name="Samnuha Coat", augments={'Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+5','"Dual Wield"+5',}},
hands={ name="Plun. Armlets +2", augments={'Enhances "Perfect Dodge" effect',}},
legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','STR+9','Mag. Acc.+5','"Mag.Atk.Bns."+13',}},
feet={ name="Herculean Boots", augments={'Mag. Acc.+12','Weapon skill damage +5%','MND+6','"Mag.Atk.Bns."+4',}},
neck="Nefarious Collar +1",
waist="Skrymir Cord",
--waist="Chaac Belt",
left_ear="Friomisi Earring",
right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +250',}},
left_ring="Shiva Ring +1",
right_ring="Shiva Ring +1",
back={ name="Toutatis's Cape", augments={'INT+20','Magic Damage +10','Weapon skill damage +10%',}},
}
--------------------------------------
-- Midcast sets
--------------------------------------
--[[sets.midcast.FastRecast = {
head="Herculean helm",ear1="Ethereal earring", ear2="Loquacious Earring",
neck="Orunmila's torque", body="Lapidary tunic",hands="Thaumas gloves",
ring1="Defending ring", ring2="Prolix ring",
back="Canny cape",waist="Hurch'lan sash", legs="Enif Cosciales",feet="Taeon boots"}]]
-- Specific spells
sets.midcast.Utsusemi = sets.midcast.FastRecast
--{
-- head="Whirlpool Mask",neck="Ej Necklace",ear2="Loquacious Earring",
-- body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",
-- back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
-- Ranged gear
sets.midcast.RA = {
head="Meghanada Visor +2",
body="Meghanada Cuirie +2",
hands="Meghanada Gloves +2",
legs="Meg. Chausses +2",
feet="Meg. Jam. +2",
neck="Sancity Necklace",
waist="Chaac Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Cacoethic Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+4','Crit.hit rate+10',}},
}
-- head="Whirlpool Mask",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
-- body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Hajduk Ring",
-- back="Libeccio Mantle",waist="Aquiline Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
sets.midcast.RA.Acc = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
legs="Meg. Chausses +2",
feet="Meg. Jam. +2",
neck="Sanctity Necklace",
waist="Chaac Belt",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Cacoethic Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+4','Crit.hit rate+10',}},
}
-- head="Pillager's Bonnet +1",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
-- body="Iuitl Vest",hands="Buremte Gloves",ring1="Beeline Ring",ring2="Hajduk Ring",
-- back="Libeccio Mantle",waist="Aquiline Belt",legs="Thurandaut Tights +1",feet="Pillager's Poulaines +1"}
--------------------------------------
-- Idle/resting/defense sets
--------------------------------------
-- Resting sets
sets.resting = {
ring1="Sheltered Ring"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
-- right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.idle.Town = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
-- right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.idle.Weak = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Pill. Armlets +3",
--hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Twilight Torque",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring={ name="Dark Ring", augments={'Phys. dmg. taken -4%','Magic dmg. taken -3%',}},
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Defense sets
sets.defense.Evasion = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Eabani Earring",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.defense.PDT = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--left_ear="Eabani Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Defending Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
--------------------------------------
-- Melee sets
--------------------------------------
-- Normal melee group
sets.engaged = {
head="Pill. Bonnet +3",
--head="Heidrek Mask",
body="Pillager's Vest +3",
-- body={ name="Adhemar Jacket +1", augments={'STR+12','DEX+12','Attack+20',}},
--Body="Heidrek Harness",
hands="Pill. Armlets +3",
--hands="Heidrek Gloves",
legs="Pill. Culottes +3",
--legs="Heidrek Brais",
--feet="Heidrek Boots",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
--right_ear="Cessance Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.engaged.Acc = {
head="Pill. Bonnet +3",
body="Pillager's Vest +3",
hands="Pill. Armlets +3",
legs="Pill. Culottes +3",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Mod set for trivial mobs (Skadi+1)
sets.engaged.Mod = {
head="Pill. Bonnet +3",
--head="Heidrek Mask",
body="Pillager's Vest +3",
--Body="Heidrek Harness",
hands="Pill. Armlets +3",
--hands="Heidrek Gloves",
legs="Pill. Culottes +3",
--legs="Heidrek Brais",
--feet="Heidrek Boots",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
--waist="Shetal Stone",
waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
-- Mod set for trivial mobs (Thaumas)
--sets.engaged.Mod2 = {ammo="Thew Bomblet",
-- head="Felistris Mask",neck="Asperity Necklace",ear1="Sherida Earring",ear2="Telos Earring",
-- body="Thaumas Coat",hands="Pillager's Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
-- back="Atheling Mantle",waist="Reiki Yotai",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
sets.engaged.Evasion = {
head="Pill. Bonnet +3",
--head="Heidrek Mask",
body="Pillager's Vest +3",
--Body="Heidrek Harness",
hands="Pill. Armlets +3",
--hands="Heidrek Gloves",
legs="Pill. Culottes +3",
--legs="Heidrek Brais",
--feet="Heidrek Boots",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Epona's Ring",
right_ring="Petrov Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
--sets.engaged.Acc.Evasion = {ammo="Jukukik feather",
-- head="Whirlpool Mask",neck="Ej Necklace",ear1="Sherida Earring",ear2="Telos Earring",
-- body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
-- back="Canny Cape",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
sets.engaged.PDT = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
--hands="Pill. Armlets +3",
legs="Pill. Culottes +2",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
}
sets.engaged.Acc.PDT = {
head="Malignance Chapeau",
body="Malignance Tabard",
hands="Malignance Gloves",
--hands="Pill. Armlets +3",
legs="Pill. Culottes +2",
feet="Pill. Poulaines +3",
neck="Lissome Necklace",
waist="Shetal Stone",
--waist="Windbuffet Belt +1",
left_ear="Sherida Earring",
--right_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Defending Ring",
right_ring="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+1','"Store TP"+10','"Regen"+5',}},
organizer_items = {
weapon1 = "Aeneas",
weapon2 = "Sandung",
weapon3 = "Exalted C.bow +1",
warpring = "Warp Ring",
sub = "Joiner's Shield",
neck = "Carver's Torque",
body = "Carpenter's Smock",
hands = "Carpenter's Gloves",
ring1 = "Orvail Ring",
ring2 = "Craftmaster's Ring",
}
}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the general precast() is done.
function job_post_precast(spell, action, spellMap, eventArgs)
-- if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
-- equip(sets.TreasureHunter)
-- else
if spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
equip(sets.TreasureHunter)
end
end
end
-- Run after the general midcast() set is constructed.
function job_post_midcast(spell, action, spellMap, eventArgs)
if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
equip(sets.TreasureHunter)
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)
-- Weaponskills wipe SATA/Feint. Turn those state vars off before default gearing is attempted.
if spell.type == 'WeaponSkill' and not spell.interrupted then
state.Buff['Sneak Attack'] = false
state.Buff['Trick Attack'] = false
state.Buff['Feint'] = false
end
end
-- Called after the default aftercast handling is complete.
function job_post_aftercast(spell, action, spellMap, eventArgs)
-- If Feint is active, put that gear set on on top of regular gear.
-- This includes overlaying SATA gear.
check_buff('Feint', eventArgs)
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
if not midaction() then
handle_equipping_gear(player.status)
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function get_custom_wsmode(spell, spellMap, defaut_wsmode)
local wsmode
if state.Buff['Sneak Attack'] then
wsmode = 'SA'
end
if state.Buff['Trick Attack'] then
wsmode = (wsmode or '') .. 'TA'
end
return wsmode
end
-- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
function job_handle_equipping_gear(playerStatus, eventArgs)
-- Check that ranged slot is locked, if necessary
check_range_lock()
-- Check for SATA when equipping gear. If either is active, equip
-- that gear specifically, and block equipping default gear.
check_buff('Sneak Attack', eventArgs)
check_buff('Trick Attack', eventArgs)
end
function customize_idle_set(idleSet)
if player.hpp < 80 then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.TreasureMode.value == 'Fulltime' then
meleeSet = set_combine(meleeSet, sets.TreasureHunter)
end
return meleeSet
end
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
th_update(cmdParams, eventArgs)
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
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.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
msg = msg .. ', TH: ' .. state.TreasureMode.value
add_to_chat(122, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- State buff checks that will equip buff gear and mark the event as handled.
function check_buff(buff_name, eventArgs)
if state.Buff[buff_name] then
equip(sets.buff[buff_name] or {})
if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
equip(sets.TreasureHunter)
end
eventArgs.handled = true
end
end
res = require('resources')
extdata = require('extdata')
-- Item must be equipped for it to return any meaningful value.
function is_enchant_ready(--[[name of item]]item)
local item_id, item = res.items:find(function(v) if v.name == item then return true end end)
local inventory = windower.ffxi.get_items()
local usable_bags = T{'inventory','wardrobe','wardrobe2','wardrobe3','wardrobe4'}
local itemdata = {}
for i,v in pairs(inventory) do
if usable_bags:contains(i) then
for key,val in pairs(v) do
if type(val) == 'table' and val.id == item_id then
itemdata = extdata.decode(val)
end
end
end
end
if itemdata and itemdata.charges_remaining then
if itemdata.activation_time - itemdata.next_use_time > item.cast_delay then
return true
end
end
return false
end
function has_charges(--[[name of item]]item)
local item_id, item = res.items:find(function(v) if v.name == item then return true end end)
local inventory = windower.ffxi.get_items()
local bags = T{'inventory','safe','safe2','storage','satchel','locker','sack','case','wardrobe','wardrobe2','wardrobe3','wardrobe4'}
local itemdata = {}
for i,v in pairs(inventory) do
if bags:contains(i) then
for key,val in pairs(v) do
if type(val) == 'table' and val.id == item_id then
itemdata = extdata.decode(val)
end
end
end
end
if itemdata and itemdata.charges_remaining then
if itemdata.charges_remaining > 0 then
return true
end
end
return false
end
-- Check for various actions that we've specified in user code as being used with TH gear.
-- This will only ever be called if TreasureMode is not 'None'.
-- Category and Param are as specified in the action event packet.
function th_action_check(category, param)
if category == 2 or -- any ranged attack
--category == 4 or -- any magic action
(category == 3 and param == 30) or -- Aeolian Edge
(category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
(category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
then return true
end
end
-- Function to lock the ranged slot if we have a ranged weapon equipped.
function check_range_lock()
if player.equipment.range ~= 'empty' then
disable('range', 'ammo')
else
enable('range', 'ammo')
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(6, 1)
elseif player.sub_job == 'WAR' then
set_macro_page(6, 1)
elseif player.sub_job == 'NIN' then
set_macro_page(6, 1)
else
set_macro_page(6, 1)
end
end
|
|