Advertisement
Guest User

Untitled

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