midash

Wonderousgoat_THF

Mar 5th, 2016
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.93 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 = "Fotia Gorget"
  56. gear.default.weaponskill_waist = "Fotia 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. main="Varja",
  82. sushi="Squid Sushi",
  83. sushi2="Sole Sushi",
  84. sub="Shijo"
  85. }
  86.  
  87. sets.TreasureHunter = {hands="Plunderer's Armlets +1", waist="Chaac Belt", feet="Skulker's Poulaines +1"}
  88. sets.ExtraRegen = {}
  89. sets.Kiting = {feet="Fajin Boots"}
  90.  
  91. sets.buff['Sneak Attack'] = {ammo="Ginsen",
  92. head="Adhemar Bonnet",neck="Combatant's Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  93. body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
  94. back="Grounded Mantle +1",waist="Chaac Belt",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
  95.  
  96. sets.buff['Trick Attack'] = {ammo="Ginsen",
  97. head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  98. body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Petrov Ring",ring2="Epona's Ring",
  99. back="Grounded Mantle +1",waist="Chaac Belt",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
  100.  
  101. -- Actions we want to use to tag TH.
  102. sets.precast.Step = sets.TreasureHunter
  103. sets.precast.Flourish1 = sets.TreasureHunter
  104. sets.precast.JA.Provoke = sets.TreasureHunter
  105.  
  106.  
  107. --------------------------------------
  108. -- Precast sets
  109. --------------------------------------
  110.  
  111. -- Precast sets to enhance JAs
  112. sets.precast.JA['Collaborator'] = {} --{head="Skulker's Bonnet +1"}
  113. sets.precast.JA['Accomplice'] = {} --{head="Skulker's Bonnet +1"}
  114. sets.precast.JA['Flee'] = {feet="Taeon Boots"}
  115. sets.precast.JA['Hide'] = {body="Pillager's Vest +1"}
  116. sets.precast.JA['Conspirator'] = {} --{body="Skulker's Vest +1"}
  117. sets.precast.JA['Steal'] = {hands="Pillager's Armlets +1",legs="Pillager's Culottes +1",feet="Taeon Boots"}
  118. sets.precast.JA['Despoil'] = {} --{legs="Skulker's Culottes +1",feet="Skulker's Poulaines +1"}
  119. sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +1"}
  120. sets.precast.JA['Feint'] = {} --{legs="Plunderer's Culottes +1"}
  121.  
  122. sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack']
  123. sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']
  124.  
  125.  
  126. -- Waltz set (chr and vit)
  127. sets.precast.Waltz = {}
  128.  
  129. -- Don't need any special gear for Healing Waltz.
  130. sets.precast.Waltz['Healing Waltz'] = {}
  131.  
  132.  
  133. -- Fast cast sets for spells
  134. sets.precast.FC = {head="Taeon Chapeau",ear2="Loquacious Earring",hands="Leyline Gloves",ring1="Prolix Ring"}
  135.  
  136. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC,{}) --}{neck="Magoraga Beads"})
  137.  
  138.  
  139. -- Ranged snapshot gear
  140. sets.precast.RA = {} --{head="Aurore Beret",hands="Iuitl Wristbands +1",legs="Nahtirah Trousers",feet="Wurrukatte Boots"}
  141.  
  142.  
  143. -- Weaponskill sets
  144.  
  145. -- Default set for any weaponskill that isn't any more specifically defined
  146. sets.precast.WS = {ammo="Ginsen",
  147. neck="Fotia Gorget",
  148. head="Skulker's Bonnet +1",body="Abnoba Kaftan",
  149. hands="Adhemar Wristbands",
  150. back="Grounded Mantle +1",
  151. waist="Fotia Belt",
  152. ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
  153. legs="Taeon Tights",feet="Taeon Boots",
  154. ammo="Jukukik Feather",
  155. ear1="Brutal Earring",ear2="Moonshade Earring"}
  156. sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Honed Tathlum"})
  157.  
  158. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  159. sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {ring1="Petrov Ring"})
  160. sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Honed Tathlum", })
  161. sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {waist="Fotia Belt"})
  162. sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Ginsen"})
  163. sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Ginsen"})
  164. sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Ginsen"})
  165.  
  166. sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {})
  167. sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {ammo="Honed Tathlum", })
  168. sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {waist="Fotia Belt"})
  169. sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Ginsen"})
  170. sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Ginsen"})
  171. sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Ginsen"})
  172.  
  173. sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {})
  174. sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {ammo="Honed Tathlum", })
  175. sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {waist="Fotia Belt"})
  176. sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
  177. sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
  178. sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
  179.  
  180. sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {
  181. head="Skulker's Bonnet +1",body="Abnoba Kaftan",
  182. hands="Adhemar Wristbands",
  183. ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
  184. legs="Taeon Tights",feet="Taeon Boots",
  185. ammo="Jukukik Feather",
  186. ear1="Brutal Earring",ear2="Moonshade Earring"})
  187.  
  188. sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {ammo="Honed Tathlum", })
  189. sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {waist="Fotia Belt"})
  190. sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Ginsen",
  191. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  192. sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Ginsen",
  193. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  194. sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Ginsen",
  195. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  196.  
  197. sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2="Moonshade Earring"})
  198. sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {ammo="Honed Tathlum", })
  199. sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {waist="Fotia Belt"})
  200. sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Ginsen",
  201. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  202. sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Ginsen",
  203. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  204. sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Ginsen",
  205. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  206.  
  207. sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS, {})
  208. sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {ammo="Honed Tathlum", })
  209. sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {waist="Fotia Belt"})
  210. sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Ginsen",
  211. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  212. sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Ginsen",
  213. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  214. sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Ginsen",
  215. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  216.  
  217. sets.precast.WS['Aeolian Edge'] = {ammo="Jukukik Feather",
  218. ear1="Friomisi Earring",ear2="Moonshade Earring",body="Samnuha Coat",
  219. ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  220. back="Toro Cape",waist="Fotia Belt",head={ name="Herculean Helm", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Crit.hit rate+2','INT+3','Mag. Acc.+13','"Mag.Atk.Bns."+14',}},
  221. hands={ name="Herculean Gloves", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','"Fast Cast"+2','Mag. Acc.+5','"Mag.Atk.Bns."+7',}},
  222. legs={ name="Herculean Trousers", augments={'Mag. Acc.+17 "Mag.Atk.Bns."+17','MND+1','Mag. Acc.+6','"Mag.Atk.Bns."+3',}},
  223. feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','MND+2','Mag. Acc.+5','"Mag.Atk.Bns."+11',}}}
  224.  
  225.  
  226.  
  227.  
  228. sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)
  229.  
  230.  
  231. --------------------------------------
  232. -- Midcast sets
  233. --------------------------------------
  234.  
  235. sets.midcast.FastRecast = {
  236. head="Taeon Chapeau",body="Emet Harness +1",hands="Leyline Gloves",legs="Taeon Tights",feet="Taeon Boots"}
  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="Combatant's Torque",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="Taeon Boots"}
  247.  
  248. sets.midcast.RA.Acc = {} --{
  249. --head="Pillager's Bonnet +1",neck="Combatant's Torque",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="Taeon Boots"}
  252.  
  253. --------------------------------------
  254. -- Idle/resting/defense sets
  255. --------------------------------------
  256.  
  257. -- Resting sets
  258. sets.resting = set_combine (sets.idle)
  259.  
  260.  
  261. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  262.  
  263. sets.idle = {ammo="Ginsen",
  264. head="Adhemar Bonnet",neck="Loricate Torque +1",ear1="Genmei Earring",ear2="Digni. Earring",
  265. body="Emet Harness +1",hands="Adhemar Wristbands",ring1="Defending Ring",ring2="Dark Ring",
  266. back="Solemnity Cape",waist="Flume Belt",
  267. legs="Taeon Tights",feet="Taeon Boots"}
  268.  
  269. sets.idle.Town = {ammo="Ginsen",
  270. head="Adhemar Bonnet",
  271. body="Adhemar Jacket",
  272. hands="Adhemar Wristbands",
  273. legs="Taeon Tights",feet="Taeon Boots",
  274. neck="Combatant's Torque",
  275. ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  276. ring1="Hetairoi Ring",ring2="Epona's Ring",
  277. waist="Windbuffet Belt +1"}
  278.  
  279. sets.idle.Weak = {} --{ammo="Ginsen",
  280. --head="Pillager's Bonnet +1",neck="Bathy Choker",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  281. --body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Dark Ring",
  282. --back="Solemnity Cape",waist="Flume Belt",legs="Pillager's Culottes +1",feet="Taeon Boots"}
  283.  
  284.  
  285. -- Defense sets
  286.  
  287. sets.defense.Evasion = {}
  288.  
  289. sets.defense.PDT = {
  290. head="Lithelimb Cap",
  291. neck="Loricate Torque +1",
  292. hands="Umuthi Gloves",ring1="Defending Ring",ring2="Dark Ring",
  293. back="Solemnity Cape",waist="Flume Belt",legs="Pillager's Culottes +1",feet="Taeon Boots"}
  294.  
  295. sets.defense.MDT = {ammo="Demonry Stone",
  296. head="Pillager's Bonnet +1",neck="Loricate Torque +1",
  297. body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Shadow Ring",
  298. waist="Flume Belt",legs="Pillager's Culottes +1",
  299. feet="Taeon Boots"}
  300.  
  301.  
  302. --------------------------------------
  303. -- Melee sets
  304. --------------------------------------
  305.  
  306. -- Normal melee group
  307. sets.engaged = {ammo="Ginsen",
  308. head="Adhemar Bonnet",
  309. body="Adhemar Jacket",
  310. hands="Adhemar Wristbands",
  311. legs="Taeon Tights",
  312. feet="Taeon Boots",
  313. neck="Combatant's Torque",
  314. ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  315. ring1="Hetairoi Ring",ring2="Epona's Ring",
  316. waist="Reiki Yotai"}
  317.  
  318. sets.engaged.Acc = { ammo="Honed Tathlum",
  319. head="Adhemar Bonnet",
  320. body="Adhemar Jacket",
  321. hands="Adhemar Wristbands",
  322. legs="Taeon Tights",
  323. feet="Taeon Boots",
  324. neck="Combatant's Torque",
  325. waist="Reiki Yotai",
  326. left_ear="Dudgeon Earring",
  327. right_ear="Heartseeker Earring",
  328. left_ring="Patricius Ring",
  329. right_ring="Epona's Ring"
  330. }
  331.  
  332. -- Mod set for trivial mobs (Skadi+1)
  333. sets.engaged.NonBuffs = {ammo="Ginsen",
  334. head="Adhemar Bonnet",
  335. body="Adhemar Jacket",
  336. hands="Adhemar Wristbands",
  337. legs="Taeon Tights",
  338. feet="Taeon Boots",
  339. neck="Combatant's Torque",
  340. waist="Windbuffet Belt +1",
  341. left_ear="Dudgeon Earring",
  342. right_ear="Heartseeker Earring",
  343. left_ring="Hetairoi Ring",
  344. right_ring="Epona's Ring",
  345.  
  346. }
  347.  
  348.  
  349. sets.engaged.Evasion = {ammo="Honed Tathlum",
  350. head="Adhemar Bonnet",
  351. body="Adhemar Jacket",
  352. hands="Adhemar Wristbands",
  353. legs="Taeon Tights",
  354. feet="Taeon Boots",
  355. neck="Combatant's Torque",
  356. waist="Reiki Yotai",
  357. left_ear="Dudgeon Earring",
  358. right_ear="Heartseeker Earring",
  359. left_ring="Patricius Ring",
  360. right_ring="Epona's Ring"}
  361.  
  362. sets.engaged.Acc.Evasion = {ammo="Honed Tathlum",
  363. head="Adhemar Bonnet",
  364. body="Adhemar Jacket",
  365. hands="Adhemar Wristbands",
  366. legs="Taeon Tights",
  367. feet="Taeon Boots",
  368. neck="Combatant's Torque",
  369. waist="Reiki Yotai",
  370. left_ear="Dudgeon Earring",
  371. right_ear="Heartseeker Earring",
  372. left_ring="Patricius Ring",
  373. right_ring="Epona's Ring"}
  374.  
  375. sets.engaged.PDT = set_combine (sets.engaged, {
  376. ring1="Patricius Ring",
  377. back="Solemnity Cape",})
  378.  
  379. sets.engaged.Acc.PDT = set_combine (sets.engaged.Acc, {
  380. ring1="Patricius Ring",back="Solemnity Cape"})
  381.  
  382. end
  383.  
  384.  
  385. -------------------------------------------------------------------------------------------------------------------
  386. -- Job-specific hooks for standard casting events.
  387. -------------------------------------------------------------------------------------------------------------------
  388.  
  389. -- Run after the general precast() is done.
  390. function job_post_precast(spell, action, spellMap, eventArgs)
  391. if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
  392. equip(sets.TreasureHunter)
  393. elseif spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
  394. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  395. equip(sets.TreasureHunter)
  396. end
  397. end
  398. end
  399.  
  400. -- Run after the general midcast() set is constructed.
  401. function job_post_midcast(spell, action, spellMap, eventArgs)
  402. if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
  403. equip(sets.TreasureHunter)
  404. end
  405. end
  406.  
  407. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  408. function job_aftercast(spell, action, spellMap, eventArgs)
  409. -- Weaponskills wipe SATA/Feint. Turn those state vars off before default gearing is attempted.
  410. if spell.type == 'WeaponSkill' and not spell.interrupted then
  411. state.Buff['Sneak Attack'] = false
  412. state.Buff['Trick Attack'] = false
  413. state.Buff['Feint'] = false
  414. end
  415. end
  416.  
  417. -- Called after the default aftercast handling is complete.
  418. function job_post_aftercast(spell, action, spellMap, eventArgs)
  419. -- If Feint is active, put that gear set on on top of regular gear.
  420. -- This includes overlaying SATA gear.
  421. check_buff('Feint', eventArgs)
  422. end
  423.  
  424. -------------------------------------------------------------------------------------------------------------------
  425. -- Job-specific hooks for non-casting events.
  426. -------------------------------------------------------------------------------------------------------------------
  427.  
  428. -- Called when a player gains or loses a buff.
  429. -- buff == buff gained or lost
  430. -- gain == true if the buff was gained, false if it was lost.
  431. function job_buff_change(buff, gain)
  432. if state.Buff[buff] ~= nil then
  433. if not midaction() then
  434. handle_equipping_gear(player.status)
  435. end
  436. end
  437. end
  438.  
  439.  
  440. -------------------------------------------------------------------------------------------------------------------
  441. -- User code that supplements standard library decisions.
  442. -------------------------------------------------------------------------------------------------------------------
  443.  
  444. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  445. local wsmode
  446.  
  447. if state.Buff['Sneak Attack'] then
  448. wsmode = 'SA'
  449. end
  450. if state.Buff['Trick Attack'] then
  451. wsmode = (wsmode or '') .. 'TA'
  452. end
  453.  
  454. return wsmode
  455. end
  456.  
  457.  
  458. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  459. function job_handle_equipping_gear(playerStatus, eventArgs)
  460. -- Check that ranged slot is locked, if necessary
  461. check_range_lock()
  462.  
  463. -- Check for SATA when equipping gear. If either is active, equip
  464. -- that gear specifically, and block equipping default gear.
  465. check_buff('Sneak Attack', eventArgs)
  466. check_buff('Trick Attack', eventArgs)
  467. end
  468.  
  469.  
  470. function customize_idle_set(idleSet)
  471. if player.hpp < 80 then
  472. idleSet = set_combine(idleSet, sets.ExtraRegen)
  473. end
  474.  
  475. return idleSet
  476. end
  477.  
  478.  
  479. function customize_melee_set(meleeSet)
  480. if state.TreasureMode.value == 'Fulltime' then
  481. meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  482. end
  483.  
  484. return meleeSet
  485. end
  486.  
  487.  
  488. -- Called by the 'update' self-command.
  489. function job_update(cmdParams, eventArgs)
  490. th_update(cmdParams, eventArgs)
  491. end
  492.  
  493. -- Function to display the current relevant user state when doing an update.
  494. -- Return true if display was handled, and you don't want the default info shown.
  495. function display_current_job_state(eventArgs)
  496. local msg = 'Melee'
  497.  
  498. if state.CombatForm.has_value then
  499. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  500. end
  501.  
  502. msg = msg .. ': '
  503.  
  504. msg = msg .. state.OffenseMode.value
  505. if state.HybridMode.value ~= 'Normal' then
  506. msg = msg .. '/' .. state.HybridMode.value
  507. end
  508. msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  509.  
  510. if state.DefenseMode.value ~= 'None' then
  511. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  512. end
  513.  
  514. if state.Kiting.value == true then
  515. msg = msg .. ', Kiting'
  516. end
  517.  
  518. if state.PCTargetMode.value ~= 'default' then
  519. msg = msg .. ', Target PC: '..state.PCTargetMode.value
  520. end
  521.  
  522. if state.SelectNPCTargets.value == true then
  523. msg = msg .. ', Target NPCs'
  524. end
  525.  
  526. msg = msg .. ', TH: ' .. state.TreasureMode.value
  527.  
  528. add_to_chat(122, msg)
  529.  
  530. eventArgs.handled = true
  531. end
  532.  
  533. -------------------------------------------------------------------------------------------------------------------
  534. -- Utility functions specific to this job.
  535. -------------------------------------------------------------------------------------------------------------------
  536.  
  537. -- State buff checks that will equip buff gear and mark the event as handled.
  538. function check_buff(buff_name, eventArgs)
  539. if state.Buff[buff_name] then
  540. equip(sets.buff[buff_name] or {})
  541. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  542. equip(sets.TreasureHunter)
  543. end
  544. eventArgs.handled = true
  545. end
  546. end
  547.  
  548.  
  549. -- Check for various actions that we've specified in user code as being used with TH gear.
  550. -- This will only ever be called if TreasureMode is not 'None'.
  551. -- Category and Param are as specified in the action event packet.
  552. function th_action_check(category, param)
  553. if category == 2 or -- any ranged attack
  554. --category == 4 or -- any magic action
  555. (category == 3 and param == 30) or -- Aeolian Edge
  556. (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
  557. (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
  558. then return true
  559. end
  560. end
  561.  
  562.  
  563. -- Function to lock the ranged slot if we have a ranged weapon equipped.
  564. function check_range_lock()
  565. if player.equipment.range ~= 'empty' then
  566. disable('range', 'ammo')
  567. else
  568. enable('range', 'ammo')
  569. end
  570. end
  571.  
  572.  
  573. -- Select default macro book on initial load or subjob change.
  574. function select_default_macro_book()
  575. -- Default macro set/book
  576. if player.sub_job == 'DNC' then
  577. set_macro_page(1, 7)
  578. elseif player.sub_job == 'WAR' then
  579. set_macro_page(1, 7)
  580. elseif player.sub_job == 'NIN' then
  581. set_macro_page(1, 7)
  582. else
  583. set_macro_page(1, 7)
  584. end
  585. end
Add Comment
Please, Sign In to add comment