Advertisement
bongarippa

EvdaTHF

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