midash

Orangebear_THF

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