------------------------------------------------------------------------------------------------------------------- -- 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') 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 ------------------------------------------------------------------------------------------------------------------- -- 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('DWNormal', 'DWMidAcc', 'DWAcc', 'DANormal', 'DAMidAcc', 'DAAcc','Solo') state.HybridMode:options() state.RangedMode:options('Normal', 'Acc') state.WeaponskillMode:options('Normal', 'Acc', 'Mod') state.PhysicalDefenseMode:options('Evasion', 'PDT') state.IdleMode:options('Normal', 'Regen', 'PDT') -- Additional local binds send_command('bind ^` input /ja "Flee" ') send_command('bind ^= gs c cycle treasuremode') send_command('bind !- gs c cycle targetmode') 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) -------------------------------------- DThead={ name="Herculean Helm", augments={'Pet: Attack+30 Pet: Rng.Atk.+30','Pet: "Dbl. Atk."+3','Damage taken-4%','Accuracy+18 Attack+18',}} DThands={ name="Herculean Gloves", augments={'"Store TP"+1','Accuracy+25','Damage taken-2%','Mag. Acc.+16 "Mag.Atk.Bns."+16',}} DTlegs={ name="Herculean Trousers", augments={'Accuracy+27','Damage taken-2%','STR+7','Attack+14',}} DTfeet={ name="Herculean Boots", augments={'Accuracy+6','Damage taken-4%','STR+5','Attack+1',}} DWBoots ={ name="Taeon Boots", augments={'Accuracy+18 Attack+18','"Triple Atk."+2','STR+2 DEX+2',}} Critfeet= { name="Herculean Boots", augments={'Accuracy+25','Crit.hit rate+5','Attack+11',}} TPfeet={ name="Herculean Boots", augments={'"Store TP"+6','Accuracy+14','Attack+1',}} Accfeet ={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','Crit. hit damage +1%','DEX+8','Accuracy+15','Attack+14',}} MABhead={ name="Herculean Helm", augments={'Mag. Acc.+17 "Mag.Atk.Bns."+17','"Store TP"+2','MND+2','Mag. Acc.+15','"Mag.Atk.Bns."+15',}} MABhands={ name="Herculean Gloves", augments={'"Cure" spellcasting time -6%','"Mag.Atk.Bns."+23','Mag. Acc.+18 "Mag.Atk.Bns."+18',}} MABlegs={ name="Herculean Trousers", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','AGI+8',}} MABfeet = {name="Herculean Boots", augments={'Magic Damage +11','Pet: Mag. Acc.+14','Phalanx +4','Accuracy+11 Attack+11','Mag. Acc.+16 "Mag.Atk.Bns."+16',}} Crithands={ name="Herculean Gloves", augments={'Rng.Acc.+22','Crit.hit rate+4','AGI+5','Accuracy+8','Attack+10',}} WShands={ name="Herculean Gloves", augments={'Accuracy+3 Attack+3','Crit.hit rate+1','Weapon skill damage +6%','Mag. Acc.+7 "Mag.Atk.Bns."+7',}} RNGhands= { name="Herculean Gloves", augments={'Rng.Acc.+22 Rng.Atk.+22','Phys. dmg. taken -2%','DEX+4','Rng.Acc.+13',}} RNGlegs= { name="Herculean Trousers", augments={'Rng.Acc.+24 Rng.Atk.+24','Weapon skill damage +1%','DEX+4','Rng.Acc.+14','Rng.Atk.+15',}} RNGfeet= { name="Herculean Boots", augments={'Rng.Acc.+24 Rng.Atk.+24','"Subtle Blow"+4','STR+9','Rng.Atk.+13',}} THfeet={ name="Herculean Boots", augments={'Enmity-4','Accuracy+19','"Treasure Hunter"+2','Accuracy+1 Attack+1',}} FChead={ name="Herculean Helm", augments={'Mag. Acc.+24','"Fast Cast"+6','"Mag.Atk.Bns."+1',}} FCBody = { name="Taeon tabard", augments={'Accuracy+18 Attack+18','"Fast Cast"+2','Phalanx +3',}} sets.TreasureHunter = {hands="Plunderer's Armlets +1", waist="Chaac Belt", feet=THfeet} sets.ExtraRegen = {neck="Bathy Choker +1",ring1="Sheltered Ring",ring2="Paguroidea ring"} sets.Kiting = {feet="Jute Boots +1"} sets.buff['Sneak Attack'] = {ammo="Yetshila", head="Lilitu Headpiece",neck="Caro Necklace",ear1="Assuage Earring",ear2="Cessance Earring", body="Pillager's Vest +1",hands="Skulker's Armlets +1",ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Chiner's Belt +1"} sets.buff['Trick Attack'] = {ammo="Yetshila", head="Pursuer's Beret",neck="Combatant's Torque",ear1="Assuage Earring",ear2="Cessance Earring", body="Pillager's Vest +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Rajas Ring", waist="Chiner's Belt +1"} -- Actions we want to use to tag TH. sets.precast.Step = sets.TreasureHunter sets.precast.Flourish1 = sets.TreasureHunter sets.precast.JA.Provoke = sets.TreasureHunter -------------------------------------- -- 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="Pillager's Poulaines +1"} sets.precast.JA['Hide'] = {body="Pillager's Vest +1"} sets.precast.JA['Conspirator'] = {body="Raider's Vest +2"} sets.precast.JA['Steal'] = {ammo="Barathrum",feet="Pillager's Poulaines +1"} sets.precast.JA['Despoil'] = {ammo="Barathrum"} sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +1"} sets.precast.JA['Feint'] = {legs="Plunderer's Culottes"} sets.precast.JA['Mug'] = {ammo="Expeditious Pinion",head="Pursuer's Beret",neck="Magoraga bead necklace",ear2="Suppanomimi", body="Adhemar Jacket",hands="Pursuer's cuffs",ring1="Apate Ring",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Chaac Belt",legs="Pursuer's Pants",feet="Pursuer's Gaiters"} sets.precast.JA['Lunge'] = {ammo="Seething Bomblet +1",head=MABhead,neck="Baetyl Pendant",ear1="Hecate's Earring",ear2="Friomisi Earring", body="Samnuha Coat",hands=MABhands,ring1="Acumen ring",ring2="Arvina Ringlet +1", back="Toro Cape",waist="Eschan Stone",legs=MABlegs,feet=MABfeet} sets.precast.JA['Swipe'] = {sets.precast.JA['Lunge']} sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack'] sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack'] sets.precast.Item = {HolyWater} sets.precast.Item['Holy Water'] = {ring1="Purity Ring"} -- Waltz set (chr and vit) sets.precast.Waltz = { body="Emet harness +1",hands="Plunderer's Armlets +1",waist="Chaac belt",legs="Feast Hose",feet=DWBoots} -- Don't need any special gear for Healing Waltz. sets.precast.Waltz['Healing Waltz'] = {feet="Rawhide boots"} -- Fast cast sets for spells sets.precast.FC = {ammo="Sapience Orb", head=FChead,neck="Baetyl Pendant",ear2="Loquacious Earring", body=FCBody,hands="Leyline Gloves",ring1="Lebeche Ring",legs="Rawhide Trousers"} sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"}) sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"}) -- Ranged snapshot gear --sets.precast.RA = { -- body="Pursuer's Doublet",legs="Pursuer's Pants",feet="Adhemar gamashes"} -- Weaponskill sets -- Default set for any weaponskill that isn't any more specifically defined sets.precast.WS = {ammo="Falcon Eye", head="Lilitu headpiece",neck="Fotia Gorget",ear1="Assuage Earring",ear2="Moonshade Earring", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Fotia Belt",legs="Samnuha Tights",feet=Critfeet} sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Falcon Eye"}) -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found. sets.precast.WS['Exenterator'] = {ammo="Falcon Eye", head="Lilitu headpiece",neck="Fotia Gorget",ear1="Assuage Earring",ear2="Moonshade Earring", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Grounded mantle +1",waist="Fotia Belt",legs="Samnuha Tights",feet=Critfeet} sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Falcon Eye"}) sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {}) sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {ammo="Falcon Eye", back="Grounded mantle +1"}) sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Yetshila", head="Taeon Chapeau", body="Foppish Tunica",hands=WShands,ring1="Begrudging Ring",ring2="Ramuh Ring +1", back="Toutatis's Cape",legs="Lustratio Subligar +1"}) sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {ammo="Falcon Eye",back="Toutatis's Cape"}) sets.precast.WS['Mercy Stroke'] = {ammo="Seething Bomblet +1", head="Lilitu headpiece",neck="Caro Necklace",ear1="Ishvara Earring",ear2="Moonshade Earring", body="Adhemar Jacket",hands=WShands,ring1="Apate Ring",ring2="Rajas Ring", back="Buquwik Cape",waist="Metalsinger Belt",legs="Samnuha Tights",feet="Lustratio Leggings +1"} sets.precast.WS['Mercy Stroke'].Mod = set_combine(sets.precast.WS['Mercy Stroke'], {ammo="Yetshila", body="Pillager's Vest +1"}) sets.precast.WS['Mercy Stroke'].SA = set_combine(sets.precast.WS['Mercy Stroke'].Mod, {back="Toutatis's Cape"}) sets.precast.WS['Mercy Stroke'].TA = set_combine(sets.precast.WS['Mercy Stroke'].Mod, {}) sets.precast.WS['Mercy Stroke'].SATA = set_combine(sets.precast.WS['Mercy Stroke'].Mod, {back="Toutatis's Cape"}) sets.precast.WS['Rudra\'s Storm'] = {ammo="Falcon Eye", head="Lilitu headpiece",neck="Caro Necklace",ear1="Ishvara Earring",ear2="Moonshade Earring", body="Adhemar Jacket",hands=WShands,ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Grunfeld rope",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"} sets.precast.WS['Rudra\'s Storm'].Mod = set_combine(sets.precast.WS['Rudra\'s Storm'], {ammo="Yetshila", body="Pillager's Vest +1",back="Toutatis's Cape"}) sets.precast.WS['Rudra\'s Storm'].SA = set_combine(sets.precast.WS['Rudra\'s Storm'].Mod, {}) sets.precast.WS['Rudra\'s Storm'].TA = set_combine(sets.precast.WS['Rudra\'s Storm'].Mod, {}) sets.precast.WS['Rudra\'s Storm'].SATA = set_combine(sets.precast.WS['Rudra\'s Storm'].Mod, {}) sets.precast.WS['Shark Bite'] = {ammo="Falcon Eye", head="Lilitu headpiece",neck="Caro Necklace",ear1="Ishvara Earring",ear2="Moonshade Earring", body="Adhemar Jacket",hands=WShands,ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Grunfeld Rope",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"} sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {ammo="Yetshila", body="Pillager's Vest +1",back="Toutatis's Cape"}) sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {}) sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {}) sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {}) sets.precast.WS['Mandalic Stab'] = {ammo="Falcon Eye", head="Lilitu headpiece",neck="Caro Necklace",ear1="Ishvara Earring",ear2="Moonshade Earring", body="Adhemar Jacket",hands=WShands,ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Grunfeld Rope",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"} sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {ammo="Yetshila", body="Pillager's Vest +1",back="Toutatis's Cape"}) 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'] = {ammo="Seething Bomblet +1", head=MABhead,neck="Baetyl Pendant",ear1="Ishvara Earring",ear2="Friomisi Earring", body="Samnuha Coat",hands=MABhands,ring1="Acumen ring",ring2="Arvina ringlet +1", back="Toro Cape",waist="Eschan Stone",legs=MABlegs,feet=MABfeet} --sets.precast.WS['Last Stand'] = { -- head="Pursuer's Beret",neck="Fotia Gorget",ear1="Clearview Earring",ear2="Moonshade Earring", -- body="Foppish Tunica",hands=RNGhands,ring1="Garuda Ring +1",ring2="Garuda Ring +1", -- back="Libeccio Mantle",waist="Yemaya Belt",legs=RNGlegs,feet=RNGfeet} sets.precast.WS['Vorpal Blade'] = {sets.precast.WS['Evisceration']} -------------------------------------- -- Midcast sets -------------------------------------- sets.midcast.FastRecast = {ammo="Sapience Orb", head=FChead,neck="Baetyl Pendant",ear1="Sanare earring",ear2="Loquacious Earring", body=FCBody,hands="Leyline Gloves",ring1="Gelatinous Ring +1",ring2="Defending Ring", waist="Flume Belt",legs="Rawhide Trousers"} -- Specific spells sets.midcast.Utsusemi = sets.midcast.FastRecast sets.midcast['Enhancing Magic'] = {neck="Incanter's Torque",ear1="Andoaa Earring",waist="Olympus Sash"} -- Ranged gear --sets.midcast.RA = { -- head="Pursuer's beret",neck="Combatant's Torque",ear1="Neritic Earring",ear2="Volley Earring", -- body="Pursuer's Doublet",hands=RNGhands,ring1="Garuda Ring +1",ring2="Garuda Ring +1", -- back="Libeccio Mantle",waist="Yemaya Belt",legs=RNGlegs,feet=RNGfeet} --sets.midcast.RA.Acc = { -- head="Pursuer's beret",neck="Combatant's Torque",ear1="Clearview Earring",ear2="Volley Earring", -- body="Foppish Tunica",hands=RNGhands,ring1="Garuda Ring +1",ring2="Garuda Ring +1", -- back="Libeccio Mantle",waist="Yemaya Belt",legs="Pursuer's Pants",feet=RNGfeet} -------------------------------------- -- Idle/resting/defense sets -------------------------------------- -- Resting sets sets.resting = {neck="Bathy Choker +1", ring1="Sheltered Ring",ring2="Paguroidea Ring"} -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes) sets.idle = { head="Rawhide Mask",neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Infused Earring", body="Mekosuchinae Harness",hands=DThands,ring1="Sheltered Ring",ring2="Karieyh Ring", back="Mubvumbamiri mantle",waist="Flume Belt",legs="Qaaxo Tights",feet="Jute Boots +1"} sets.idle.Regen = { head=DThead,neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Infused Earring", body="Mekosuchinae Harness",hands=DThands,ring1="Sheltered Ring",ring2="Paguroidea Ring", waist="Flume Belt",legs="Samnuha Tights",feet="Jute Boots +1"} sets.idle.PDT = {ammo="Inlamvuyeso", head=DThead,neck="Loricate Torque +1",ear1="Sanare Earring",ear2="Eabani Earring", body="Emet harness +1",hands=DThands,ring1="Gelatinous Ring +1",ring2="Defending Ring", back="Xucau mantle",waist="Flume Belt",legs="Qaaxo Tights",feet="Jute Boots +1"} sets.idle.Town = {main="Mandau",sub="Twashtar", head=DThead,neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Ethereal Earring", body="Pillager's Vest +1",hands=DThands,ring1="Sheltered Ring",ring2="Karieyh Ring", back="Toutatis's Cape",waist="Chiner's Belt +1",legs="Samnuha Tights",feet="Jute Boots +1"} sets.idle.Weak = { head=DThead,neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Odnowa earring +1", body="Pillager's Vest +1",hands=DThands,ring1="Sheltered Ring",ring2="Paguroidea Ring", back="Xucau mantle",waist="Flume Belt",legs=DTlegs,feet=DTfeet} -- Defense sets sets.defense.Evasion = { head=DThead,neck="Bathy Choker +1",ear1="Eabani Earring",ear2="Assuage Earring", body="Emet Harness +1",hands=DThands,ring1="Gelatinous Ring +1",ring2="Defending Ring", waist="Chiner's Belt +1",legs=DTlegs,feet=DTfeet} sets.defense.PDT = {ammo="Inlamvuyeso", head=DThead,neck="Loricate Torque +1",ear1="Assuage Earring",ear2="Odnowa Earring +1", body="Emet harness +1",hands=DThands,ring1="Gelatinous Ring +1",ring2="Defending Ring", back="Xucau mantle",waist="Engraved Belt",legs=DTlegs,feet=DTfeet} sets.defense.MDT = {ammo="Vanir Battery", head=DThead,neck="Warder's Charm +1",ear1="Sanare Earring",ear2="Eabani Earring", body="Lapidary Tunic",hands="Leyline Gloves",ring1="Purity Ring",ring2="Defending Ring", back="Mubvumbamiri Mantle",waist="Engraved Belt",legs="Feast Hose",feet="Jute Boots +1"} -------------------------------------- -- Melee sets -------------------------------------- -- Normal melee group sets.engaged.DWNormal = {ammo="Ginsen", head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Petrov Ring", back="Toutatis's Cape",waist="Chiner's Belt +1",legs="Samnuha Tights",feet=DWBoots} sets.engaged.DWMidAcc = {ammo="Ginsen", head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Rajas Ring", back="Toutatis's Cape",waist="Kentarch Belt +1",legs="Samnuha Tights",feet=DWBoots} sets.engaged.DWAcc = {ammo="Falcon Eye", head="Dampening Tam",neck="Combatant's Torque",ear1="Cessance Earring",ear2="Assuage Earring", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Kentarch Belt +1",legs="Samnuha Tights",feet=Accfeet} sets.engaged.DANormal = {ammo="Ginsen", head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Cessance Earring",ear2="Assuage Earring", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring", back="Toutatis's Cape",waist="Chiner's Belt +1",legs="Samnuha Tights",feet=TPfeet} sets.engaged.DAMidAcc = {ammo="Ginsen", head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Cessance Earring",ear2="Assuage Earring", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Rajas Ring", back="Toutatis's Cape",waist="Kentarch Belt +1",legs="Samnuha Tights",feet=Accfeet} sets.engaged.DAAcc = {ammo="Falcon Eye", head="Dampening Tam",neck="Combatant's Torque",ear1="Cessance Earring",ear2="Assuage Earring", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back="Toutatis's Cape",waist="Kentarch Belt +1",legs="Samnuha Tights",feet=Accfeet} sets.engaged.Solo = {ammo="Ginsen", head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Rajas Ring", back="Toutatis's Cape",waist="Chiner's Belt +1",legs="Samnuha Tights",feet=DWBoots} -- Mod set for trivial mobs sets.engaged.Trash = {ammo="Ginsen", head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Adhemar Jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Rajas Ring", back="Toutatis's Cape",waist="Chiner's Belt +1",legs="Samnuha Tights",feet=DWBoots} -- Mod set for trivial mobs 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) elseif 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 -- 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(2, 2) elseif player.sub_job == 'WAR' then set_macro_page(4, 2) elseif player.sub_job == 'NIN' then set_macro_page(3, 2) else set_macro_page(1, 2) end end organizer_items = { Shihei="Shihei", Holy="Holy Water", Remedy="Remedy"}