icewell

thf.lua

Dec 19th, 2015
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 27.51 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job.  Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6.     Custom commands:
  7.     gs c cycle treasuremode (set on ctrl-= by default): Cycles through the available treasure hunter modes.
  8.    
  9.     Treasure hunter modes:
  10.         None - Will never equip TH gear
  11.         Tag - Will equip TH gear sufficient for initial contact with a mob (either melee, ranged hit, or Aeolian Edge AOE)
  12.         SATA - Will equip TH gear sufficient for initial contact with a mob, and when using SATA
  13.        
  14.         - Will keep TH gear equipped fulltime
  15. --]]
  16.  
  17. -- Initialization function for this job file.
  18. function get_sets()
  19.     mote_include_version = 2
  20.    
  21.     -- Load and initialize the include file.
  22.     include('Mote-Include.lua')
  23. end
  24.  
  25. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  26. function job_setup()
  27.     state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
  28.     state.Buff['Trick Attack'] = buffactive['trick attack'] or false
  29.     state.Buff['Feint'] = buffactive['feint'] or false
  30.    
  31.     include('Mote-TreasureHunter')
  32.  
  33.     -- For th_action_check():
  34.     -- JA IDs for actions that always have TH: Provoke, Animated Flourish
  35.     info.default_ja_ids = S{35, 204}
  36.     -- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
  37.     info.default_u_ja_ids = S{201, 202, 203, 205, 207}
  38. end
  39.  
  40. -------------------------------------------------------------------------------------------------------------------
  41. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  42. -------------------------------------------------------------------------------------------------------------------
  43.  
  44. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  45. function user_setup()
  46.     state.OffenseMode:options('Normal', 'Acc', 'Mod')
  47.     state.HybridMode:options('Normal', 'Evasion', 'PDT')
  48.     state.RangedMode:options('Normal', 'Acc')
  49.     state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
  50.     state.PhysicalDefenseMode:options('Evasion', 'PDT')
  51.  
  52.  
  53.     gear.default.weaponskill_neck = "Fotia gorget"
  54.     gear.default.weaponskill_waist = "Fotia Belt"
  55.     gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','STR+8'}}
  56.  
  57.     -- Additional local binds ^ is for ctrl
  58.     --! is for alt
  59.     --@ is for windows key
  60.    
  61.     send_command('bind ^` input /ja "Flee" <me>')
  62.     send_command('bind ^= gs c cycle treasuremode')
  63.     send_command('bind !- gs c cycle targetmode')
  64.     send_command('bind != input /map')
  65.     send_command('bind ` input /ja "Spectral Jig" <me>')
  66.     send_command('bind [ input /ja "Healing Waltz" <me>')
  67.     send_command('bind !; input /ja "Curing Waltz III" <stpt>')
  68.     send_command('bind ^h input /ja "Haste samba" <me>')
  69.     send_command('bind !s input /ja "Quickstep" <t>')
  70.     send_command('bind ^, input /ja "Box step" <t>')
  71.     send_command('bind ^. input /ja "Stutter step" <t>')
  72.     send_command('bind ^o input /ja "Reverse flourish" <me>')
  73.     send_command('bind !f input /ja "Violent flourish" <t>')
  74.     send_command('bind !/ input /checkparam <me>')
  75.    
  76.    
  77.     --select_default_macro_book()
  78. end
  79.  
  80. -- Called when this job file is unloaded (eg: job change)
  81. function user_unload()
  82.     send_command('unbind ^`')
  83.     send_command('unbind !-')
  84. end
  85.  
  86. -- Define sets and vars used by this job file.
  87. function init_gear_sets()
  88.     --------------------------------------
  89.     -- Special sets (required by rules)
  90.     --------------------------------------
  91.  
  92.     sets.TreasureHunter = {hands="Plunderer's armlets +1",feet="Skulker's poulaines"}
  93.     sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
  94.     sets.Kiting = {feet="Skadi's Jambeaux +1"}
  95.  
  96.     sets.buff['Sneak Attack'] = {ammo="Qirmiz Tathlum",
  97.         head="Pillager's Bonnet +1",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  98.         body="Pillager's Vest +1",hands="Raider's Armlets +2",ring1="Rajas Ring",ring2="Epona's Ring",
  99.         back="Toutatis's cape",waist="Patentia Sash",legs="Pillager's Culottes +1",feet="Thurandaut boots"}
  100.  
  101.     sets.buff['Trick Attack'] = {ammo="Qirmiz Tathlum",
  102.         head="Pillager's Bonnet +1",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  103.         body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Stormsoul Ring",ring2="Epona's Ring",
  104.         back="Canny cape",waist="Patentia Sash",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
  105.  
  106.     -- Actions we want to use to tag TH.
  107.     sets.precast.Step = sets.TreasureHunter
  108.     sets.precast.Flourish1 = sets.TreasureHunter
  109.     sets.precast.JA.Provoke = sets.TreasureHunter
  110.  
  111.  
  112.     --------------------------------------
  113.     -- Precast sets
  114.     --------------------------------------
  115.  
  116.     -- Precast sets to enhance JAs
  117.     sets.precast.JA['Collaborator'] = {head="Raider's bonnet +2"}
  118.     sets.precast.JA['Accomplice'] = {head="Raider's bonnet +2"}
  119.     sets.precast.JA['Flee'] = {feet="Rogue's Poulaines"}
  120.     --sets.aftercast.JA['Flee'] = {feet="Espial socks"}
  121.     sets.precast.JA['Hide'] = {body="Pillager's Vest +1"}
  122.     sets.precast.JA['Conspirator'] = {} -- {body="Raider's Vest +1"}
  123.     sets.precast.JA['Steal'] = {neck="Pentalagus charm",hands="Thief's kote",legs="Assassin's culottes",feet="Rogue's Poulaines"}
  124.     sets.precast.JA['Despoil'] = {legs="Raider's Culottes +2",feet="Skulker's poulaines"}
  125.     sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's armlets +1 +1"}
  126.     sets.precast.JA['Feint'] = {} -- {legs="Assassin's Culottes +2"}
  127.  
  128.     sets.precast.JA['Sneak Attack'] = {back="Toutatis's cape"}
  129.     sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']
  130.  
  131.  
  132.     -- Waltz set (chr and vit)
  133.     sets.precast.Waltz = {ammo="Sonia's Plectrum",
  134.         head="Whirlpool Mask",
  135.         body="Pillager's Vest +1",hands={ name="Herculean Gloves", augments={'Attack+24','"Waltz" potency +9%','STR+13',}},ring1="Asklepian Ring",ring2="Kunaji ring",
  136.         back="Iximulew Cape",waist="Chuq'aba Belt",legs="Pillager's Culottes +1",feet="Rawhide boots"}
  137.  
  138.     -- Don't need any special gear for Healing Waltz.
  139.     sets.precast.Waltz['Healing Waltz'] = {}
  140.  
  141.  
  142.     -- Fast cast sets for spells
  143.     sets.precast.FC = {ammo="Sapience orb",
  144.     head="Haruspex Hat",neck="Orunmila's torque",
  145.     ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring",legs="Enif Cosciales"}
  146.  
  147.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  148.  
  149.  
  150.     -- Ranged snapshot gear
  151.     sets.precast.RA = {head="Aurore beret",neck="Arctier's torque",
  152.     hands="Manibozho gloves",body="Aurore Doublet",
  153.     ring="Dragon ring",ring2="Hajduk ring",alegs="Thurandaut tights",feet="Wurrukatte Boots"}
  154.  
  155.  
  156.     -- Weaponskill sets
  157.  
  158.     -- Default set for any weaponskill that isn't any more specifically defined
  159.     sets.precast.WS = {ammo="",
  160.         head="Adhemar bonnet",neck="Fotia gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
  161.         body="Adhemar Jacket",hands="Adhemar wristbands",ring1="Rajas Ring",ring2="Enlivened Ring",
  162.         back="Vespid mantle",waist="Fotia belt",legs="Samnuha tights",feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+3','AGI+10','Attack+3',}}}
  163.        
  164.     sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Honed Tathlum", back="Letalis Mantle"})
  165.  
  166.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  167.     sets.precast.WS["Sanguine blade"] = set_combine(sets.precast.WS, {head="Pixie hairpin +1",
  168.     neck="Sanctity necklace",ear1="Friomisi Earring",ear2="Moonshade earring",
  169.     body="Samnuha coat",hands="Leyline gloves",ring2="Acumen ring",
  170.     waist="Eschan stone",legs={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+24','Weapon skill damage +3%','MND+5','Mag. Acc.+3',}}})
  171.    
  172.     sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {ring1="Stormsoul Ring",legs="Nahtirah Trousers"})
  173.     sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Honed Tathlum", back="Letalis Mantle"})
  174.     sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {head="Felistris Mask",waist=gear.ElementalBelt})
  175.     sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Qirmiz Tathlum"})
  176.     sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Qirmiz Tathlum"})
  177.     sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Qirmiz Tathlum"})
  178.  
  179.     sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {})
  180.     sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {ammo="Honed Tathlum", back="Letalis Mantle"})
  181.     sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {waist=gear.ElementalBelt})
  182.     sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum"})
  183.     sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum"})
  184.     sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum"})
  185.  
  186.     sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Qirmiz Tathlum",
  187.         head="Uk'uxkaj Cap",neck="Rancor Collar",ear1="Brutal Earring",ear2="",
  188.         back="Chiner's belt +1",legs="Manibozho brais"})
  189.     sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {ammo="Honed Tathlum", back="Letalis Mantle"})
  190.     sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {back="Kayapa Cape",waist=gear.ElementalBelt})
  191.     sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
  192.     sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
  193.     sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
  194.  
  195.     sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",
  196.     neck="Shifting necklace +2",ear1="Brutal Earring",ear2="",ring2="Thundersoul ring"})
  197.     sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {ammo="Honed Tathlum", back="Letalis Mantle"})
  198.     sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {back="Kayapa Cape",waist=gear.ElementalBelt})
  199.     sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Qirmiz Tathlum",
  200.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  201.     sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Qirmiz Tathlum",
  202.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  203.     sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Qirmiz Tathlum",
  204.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  205.  
  206.     sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2=""})
  207.     sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {ammo="Honed Tathlum", back="Letalis Mantle"})
  208.     sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {back="Kayapa Cape",waist=gear.ElementalBelt})
  209.     sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Qirmiz Tathlum",
  210.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  211.     sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Qirmiz Tathlum",
  212.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  213.     sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Qirmiz Tathlum",
  214.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  215.  
  216.     sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2=""})
  217.     sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {ammo="Honed Tathlum", back="Letalis Mantle"})
  218.     sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {back="Kayapa Cape",waist=gear.ElementalBelt})
  219.     sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
  220.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  221.     sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
  222.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  223.     sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
  224.         body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  225.  
  226.     sets.precast.WS['Aeolian Edge'] = {ammo="Honed tathlum",
  227.         head="Herculean helm",neck="Stoicheion medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
  228.         body="Samnuha coat",hands="Leyline gloves",ring1="Acumen Ring",ring2="Demon's Ring",
  229.         back="Toro Cape",waist="Fotia belt",legs="Herculean trousers",feet={ name="Herculean boots", augments={'AGI+15','"Mag. Atk. Bns."+18','Enmity-1',}}}
  230.  
  231.     sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)
  232.  
  233.  
  234.     --------------------------------------
  235.     -- Midcast sets
  236.     --------------------------------------
  237.  
  238.     sets.midcast.FastRecast = {
  239.         head="Whirlpool Mask",ear2="Loquacious Earring",
  240.         body="Pillager's Vest +1",hands="Pillager's Armlets +1",
  241.         back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  242.  
  243.     -- Specific spells
  244.     sets.midcast.Utsusemi = {
  245.         head="Whirlpool Mask",neck="Ej Necklace",ear2="Loquacious Earring",
  246.         body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",
  247.         back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  248.  
  249.     -- Ranged gear
  250.     sets.midcast.RA = {
  251.         head="Whirlpool Mask",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
  252.         body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Hajduk Ring",
  253.         back="Libeccio Mantle",waist="Aquiline Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
  254.  
  255.     sets.midcast.RA.Acc = {
  256.         head="Pillager's Bonnet +1",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
  257.         body="Iuitl Vest",hands="Buremte Gloves",ring1="Beeline Ring",ring2="Hajduk Ring",
  258.         back="Libeccio Mantle",waist="Aquiline Belt",legs="Thurandaut Tights +1",feet="Pillager's Poulaines +1"}
  259.  
  260.  
  261.     --------------------------------------
  262.     -- Idle/resting/defense sets
  263.     --------------------------------------
  264.  
  265.     -- Resting sets
  266.     sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
  267.         ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  268.  
  269.  
  270.     -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  271.  
  272.     sets.idle = {ammo="Ginsen",
  273.         head="Adhemar bonnet",neck="Sanctity Necklace",ear1="Dedition Earring",ear2="Infused Earring",
  274.         body="Adhemar Jacket",hands="Adhemar wristbands",ring1="Paguroidea Ring",ring2="Epona's Ring",
  275.         back="Toutatis's cape",waist="Kentarch belt +1",legs="Samnuha tights",feet="Jute boots +1"}
  276.  
  277.     sets.idle.Town = {main="Izhiikoh", sub="Sabebus",ammo="Ginsen",
  278.         head="Adhemar bonnet",neck="Asperity Necklace",ear1="Dedition Earring",ear2="Brutal Earring",
  279.         body="Adhemar Jacket",hands="Adhemar wristbands",ring1="Rajas Ring",ring2="Epona's Ring",
  280.         back="Toutatis's cape",waist="Kentarch belt +1",legs="Samnuha tights",feet="Jute boots +1"}
  281.  
  282.     sets.idle.Weak = {ammo="Honed tathlum",
  283.         head="Pillager's Bonnet +1",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  284.         body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  285.         back="Canny cape",waist="Flume Belt",legs="Pillager's Culottes +1",feet="Skadi's Jambeaux +1"}
  286.  
  287.  
  288.     -- Defense sets
  289.  
  290.     sets.defense.Evasion = {
  291.         head="Pillager's Bonnet +1",neck="Ej Necklace",
  292.         body="Qaaxo Harness",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Epona's Ring",
  293.         back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  294.  
  295.     sets.defense.PDT = {ammo="Iron Gobbet",
  296.         head="Pillager's Bonnet +1",neck="Loricate torque",
  297.         body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  298.         back="Iximulew Cape",waist="Flume Belt",legs="Pillager's Culottes +1",feet="Iuitl Gaiters +1"}
  299.  
  300.     sets.defense.MDT = {ammo="Demonry Stone",
  301.         head="Adhemar bonnet",neck="Loricate torque",ear1="Etiolation earring",ear2="Brutal earring",
  302.         body="Adhemar jacket",hands="Leyline gloves",ring1="Yacuruna Ring",ring2="Yacuruna Ring",
  303.         back="Mollusca mantle",waist="Flume Belt",legs="Feast hose",feet="Jute boots +1"}
  304.  
  305.  
  306.     --------------------------------------
  307.     -- Melee sets
  308.     --------------------------------------
  309.    
  310.    
  311.     -- Normal melee group
  312.     sets.engaged = {main="Taming sari",sub="Vampirism",ranged="Ginsen",
  313.         head="Adhemar bonnet",neck="Asperity Necklace",ear1="Dedition Earring",ear2="Brutal Earring",
  314.         body="Adhemar Jacket",hands="Adhemar wristbands",ring1="Rajas Ring",ring2="Epona's Ring",
  315.         back="Toutatis's cape",waist="Kentarch belt +1",legs="Samnuha tights",feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+3','AGI+10','Attack+3',}}}
  316.     sets.engaged.Acc = {ammo="Honed tathlum",
  317.         head="Adhemar bonnet",neck="Ej necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  318.         body="Adhemar Jacket",hands="Adhemar wristbands",ring1="Yacuruna Ring",ring2="Cacoethic Ring",
  319.         back="Toutatis's cape",waist="Kentarch belt +1",legs="Samnuha tights",feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+3','AGI+10','Attack+3',}}}
  320.        
  321.     -- Mod set for trivial mobs (Skadi+1)
  322.     sets.engaged.Mod = {main="Taming Sari",sub="Rhadamanthus",ranged="Raider's boomerang",
  323.         head="Adhemar bonnet",neck="Asperity Necklace",ear1="Dedition Earring",ear2="Brutal Earring",
  324.         body="Adhemar Jacket",hands="Adhemar wristbands",ring1="Rajas Ring",ring2="Epona's Ring",
  325.         back="Toutatis's cape",waist="Kentarch belt +1",legs="Samnuha tights",feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+3','AGI+10','Attack+3',}}}
  326.  
  327.     -- Mod set for trivial mobs (Thaumas)
  328.     sets.engaged.Mod2 = {ammo="Honed tathlum",
  329.         head="Felistris Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  330.         body="Thaumas Coat",hands="Pillager's Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
  331.         back="Toutatis's cape",waist="Eschan stone",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
  332.  
  333.     sets.engaged.Evasion = {ammo="Honed tathlum",
  334.         head="Felistris Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  335.         body="Qaaxo Harness",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
  336.         back="Toutatis's cape",waist="Eschan stone",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
  337.     sets.engaged.Acc.Evasion = {ammo="Honed tathlum",
  338.         head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  339.         body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
  340.         back="Canny Cape",waist="Eschan stone",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
  341.  
  342.     sets.engaged.PDT = {ammo="Honed tathlum",
  343.         head="Felistris Mask",neck="Loricate torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  344.         body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Dark Ring",
  345.         back="Iximulew Cape",waist="Flume belt",legs="Iuitl Tights",feet="Qaaxo Leggings"}
  346.     sets.engaged.Acc.PDT = {ammo="Honed tathlum",
  347.         head="Whirlpool Mask",neck="Loricate torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  348.         body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Dark Ring",
  349.         back="Canny Cape",waist="Hurch'lan Sash",legs="Iuitl Tights",feet="Qaaxo Leggings"}
  350.  
  351. end
  352.  
  353.  
  354. -------------------------------------------------------------------------------------------------------------------
  355. -- Job-specific hooks for standard casting events.
  356. -------------------------------------------------------------------------------------------------------------------
  357.  
  358. -- Run after the general precast() is done.
  359. function job_post_precast(spell, action, spellMap, eventArgs)
  360.     if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
  361.         equip(sets.TreasureHunter)
  362.     elseif spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
  363.         if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  364.             equip(sets.TreasureHunter)
  365.         end
  366.     end
  367. end
  368.  
  369. -- Run after the general midcast() set is constructed.
  370. function job_post_midcast(spell, action, spellMap, eventArgs)
  371.     if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
  372.         equip(sets.TreasureHunter)
  373.     end
  374. end
  375.  
  376. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  377. function job_aftercast(spell, action, spellMap, eventArgs)
  378.     -- Weaponskills wipe SATA/Feint.  Turn those state vars off before default gearing is attempted.
  379.     if spell.type == 'WeaponSkill' and not spell.interrupted then
  380.         state.Buff['Sneak Attack'] = false
  381.         state.Buff['Trick Attack'] = false
  382.         state.Buff['Feint'] = false
  383.     end
  384. end
  385.  
  386. -- Called after the default aftercast handling is complete.
  387. function job_post_aftercast(spell, action, spellMap, eventArgs)
  388.     -- If Feint is active, put that gear set on on top of regular gear.
  389.     -- This includes overlaying SATA gear.
  390.     check_buff('Feint', eventArgs)
  391. end
  392.  
  393. -------------------------------------------------------------------------------------------------------------------
  394. -- Job-specific hooks for non-casting events.
  395. -------------------------------------------------------------------------------------------------------------------
  396.  
  397. -- Called when a player gains or loses a buff.
  398. -- buff == buff gained or lost
  399. -- gain == true if the buff was gained, false if it was lost.
  400. function job_buff_change(buff, gain)
  401.     if state.Buff[buff] ~= nil then
  402.         if not midaction() then
  403.             handle_equipping_gear(player.status)
  404.         end
  405.     end
  406. end
  407.  
  408.  
  409. -------------------------------------------------------------------------------------------------------------------
  410. -- User code that supplements standard library decisions.
  411. -------------------------------------------------------------------------------------------------------------------
  412.  
  413. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  414.     local wsmode
  415.  
  416.     if state.Buff['Sneak Attack'] then
  417.         wsmode = 'SA'
  418.     end
  419.     if state.Buff['Trick Attack'] then
  420.         wsmode = (wsmode or '') .. 'TA'
  421.     end
  422.  
  423.     return wsmode
  424. end
  425.  
  426.  
  427. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  428. function job_handle_equipping_gear(playerStatus, eventArgs)
  429.     -- Check that ranged slot is locked, if necessary
  430.     check_range_lock()
  431.  
  432.     -- Check for SATA when equipping gear.  If either is active, equip
  433.     -- that gear specifically, and block equipping default gear.
  434.     check_buff('Sneak Attack', eventArgs)
  435.     check_buff('Trick Attack', eventArgs)
  436. end
  437.  
  438.  
  439. function customize_idle_set(idleSet)
  440.     if player.hpp < 80 then
  441.         idleSet = set_combine(idleSet, sets.ExtraRegen)
  442.     end
  443.  
  444.     return idleSet
  445. end
  446.  
  447.  
  448. function customize_melee_set(meleeSet)
  449.     if state.TreasureMode.value == 'Fulltime' then
  450.         meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  451.     end
  452.  
  453.     return meleeSet
  454. end
  455.  
  456.  
  457. -- Called by the 'update' self-command.
  458. function job_update(cmdParams, eventArgs)
  459.     th_update(cmdParams, eventArgs)
  460. end
  461.  
  462. -- Function to display the current relevant user state when doing an update.
  463. -- Return true if display was handled, and you don't want the default info shown.
  464. function display_current_job_state(eventArgs)
  465.     local msg = 'Melee'
  466.    
  467.     if state.CombatForm.has_value then
  468.         msg = msg .. ' (' .. state.CombatForm.value .. ')'
  469.     end
  470.    
  471.     msg = msg .. ': '
  472.    
  473.     msg = msg .. state.OffenseMode.value
  474.     if state.HybridMode.value ~= 'Normal' then
  475.         msg = msg .. '/' .. state.HybridMode.value
  476.     end
  477.     msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  478.    
  479.     if state.DefenseMode.value ~= 'None' then
  480.         msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  481.     end
  482.    
  483.     if state.Kiting.value == true then
  484.         msg = msg .. ', Kiting'
  485.     end
  486.  
  487.     if state.PCTargetMode.value ~= 'default' then
  488.         msg = msg .. ', Target PC: '..state.PCTargetMode.value
  489.     end
  490.  
  491.     if state.SelectNPCTargets.value == true then
  492.         msg = msg .. ', Target NPCs'
  493.     end
  494.    
  495.     msg = msg .. ', TH: ' .. state.TreasureMode.value
  496.  
  497.     add_to_chat(122, msg)
  498.  
  499.     eventArgs.handled = true
  500. end
  501.  
  502. -------------------------------------------------------------------------------------------------------------------
  503. -- Utility functions specific to this job.
  504. -------------------------------------------------------------------------------------------------------------------
  505.  
  506. -- State buff checks that will equip buff gear and mark the event as handled.
  507. function check_buff(buff_name, eventArgs)
  508.     if state.Buff[buff_name] then
  509.         equip(sets.buff[buff_name] or {})
  510.         if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  511.             equip(sets.TreasureHunter)
  512.         end
  513.         eventArgs.handled = true
  514.     end
  515. end
  516.  
  517.  
  518. -- Check for various actions that we've specified in user code as being used with TH gear.
  519. -- This will only ever be called if TreasureMode is not 'None'.
  520. -- Category and Param are as specified in the action event packet.
  521. function th_action_check(category, param)
  522.     if category == 2 or -- any ranged attack
  523.         --category == 4 or -- any magic action
  524.         (category == 3 and param == 30) or -- Aeolian Edge
  525.         (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
  526.         (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
  527.         then return true
  528.     end
  529. end
  530.  
  531.  
  532. -- Function to lock the ranged slot if we have a ranged weapon equipped.
  533. function check_range_lock()
  534.     if player.equipment.range ~= 'empty' then
  535.         disable('range', 'ammo')
  536.     else
  537.         enable('range', 'ammo')
  538.     end
  539. end
  540.  
  541.  
  542. -- Select default macro book on initial load or subjob change.
  543. --function select_default_macro_book()
  544.     -- Default macro set/book
  545. --    if player.sub_job == 'DNC' then
  546. --        set_macro_page(1, 8)
  547. --    elseif player.sub_job == 'WAR' then
  548. --        set_macro_page(1, 8)
  549. --    elseif player.sub_job == 'NIN' then
  550. --        set_macro_page(1, 8)
  551. --    else
  552. --        set_macro_page(1, 8)
  553.  --   end
  554. --end
Advertisement
Add Comment
Please, Sign In to add comment