Advertisement
bongarippa

THF

Sep 17th, 2020 (edited)
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.71 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 = {head="Volte Cap",
  76. hands="Plun. Armlets +3",
  77. body="Volte Jupon",
  78. waist="Chaac Belt"}
  79. sets.ExtraRegen = {}
  80. sets.Kiting = {feet="Jute Boots +1"}
  81.  
  82.  
  83.  
  84. sets.buff['Sneak Attack'] = {}
  85.  
  86. sets.buff['Trick Attack'] = {}
  87.  
  88. -- Actions we want to use to tag TH.
  89. sets.precast.Step = sets.TreasureHunter
  90. sets.precast.Flourish1 = sets.TreasureHunter
  91. sets.precast.JA.Provoke = sets.TreasureHunter
  92.  
  93.  
  94. --------------------------------------
  95. -- Precast sets
  96. --------------------------------------
  97.  
  98. -- Precast sets to enhance JAs
  99. sets.precast.JA['Collaborator'] = {head="Raider's Bonnet +2"}
  100. sets.precast.JA['Accomplice'] = {head="Raider's Bonnet +2"}
  101. sets.precast.JA['Flee'] = {feet="Pill. Poulaines +1"}
  102. sets.precast.JA['Hide'] = {body="Pillager's Vest +3"}
  103. sets.precast.JA['Conspirator'] = {body="Skulker's Vest +3"}
  104. sets.precast.JA['Steal'] = {hands="Pillager's Armlets"}
  105. sets.precast.JA['Despoil'] = {legs="Raider's Culottes +2",feet="Skulk. Poulaines +2"}
  106. sets.precast.JA['Perfect Dodge'] = {hands="Plun. Armlets +3"}
  107. sets.precast.JA['Feint'] = {legs="Plun. Culottes +3"}
  108. sets.precast.JA['Assassin\'s Charge'] = {feet="Plun. Poulaines +3"}
  109. sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack']
  110. sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']
  111.  
  112.  
  113. -- Waltz set (chr and vit)
  114. sets.precast.Waltz = {}
  115.  
  116. -- Don't need any special gear for Healing Waltz.
  117. sets.precast.Waltz['Healing Waltz'] = {}
  118.  
  119.  
  120. -- Fast cast sets for spells
  121. sets.precast.FC = {
  122. ammo="Sapience Orb",
  123. head="Haruspex Hat",
  124. hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
  125. neck="Orunmila's Torque",
  126. left_ring="Rahab Ring",}
  127.  
  128. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  129.  
  130.  
  131. -- Ranged snapshot gear
  132. sets.precast.RA = {}
  133.  
  134.  
  135. -- Weaponskill sets
  136.  
  137. -- Default set for any weaponskill that isn't any more specifically defined
  138. sets.precast.WS = {ammo="C. Palug Stone",
  139. head="Pill. Bonnet +3",
  140. body="Pillager's Vest +3",
  141. hands="Meg. Gloves +2",
  142. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  143. feet={ name="Herculean Boots", augments={'Attack+21','Crit. hit damage +3%','STR+10','Accuracy+9',}},
  144. neck="Fotia Gorget",
  145. waist={ name="Kentarch Belt +1", augments={'Path: A',}},
  146. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  147. right_ear="Odr Earring",
  148. left_ring="Epaminondas's Ring",
  149. right_ring="Regal Ring",
  150. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}},}
  151. sets.precast.WS.Acc = set_combine(sets.precast.WS,{})
  152.  
  153. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  154. sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {ammo="C. Palug Stone",
  155. head="Nyame Helm",
  156. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  157. hands="Nyame Gauntlets",
  158. legs="Nyame Flanchard",
  159. feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  160. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}}})
  161. sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {})
  162. sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {})
  163. sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'], {
  164. ammo="Yetshila +1",
  165. head="Pill. Bonnet +3",
  166. body="Meg. Cuirie +2",
  167. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}})
  168. sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].SA, {})
  169. sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].SA, {})
  170.  
  171. sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {})
  172. sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {})
  173. sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {})
  174. sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'], {})
  175. sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].SA, {
  176. ammo="Yetshila +1",
  177. head="Pill. Bonnet +3",
  178. body="Meg. Cuirie +2",
  179. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}})
  180. sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].SA, {})
  181.  
  182. sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {
  183. ammo="Yetshila +1",
  184. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  185. body="Skulker's Vest +3",
  186. hands={ name="Herculean Gloves", augments={'Pet: Accuracy+23 Pet: Rng. Acc.+23','Accuracy+16','Quadruple Attack +3',}},
  187. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  188. feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  189. left_ear="Telos Earring",
  190. left_ring="Epona's Ring",
  191. right_ring="Begrudging Ring",
  192. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}}})
  193. sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {})
  194. sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {})
  195. sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'], {
  196. ammo="Yetshila +1",
  197. head="Pill. Bonnet +3",
  198. body="Meg. Cuirie +2",
  199. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}})
  200. sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].SA, {})
  201. sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].SA, {})
  202.  
  203. sets.precast.WS["Rudra's Storm"] = {ammo="Coiste Bodhar",
  204. head="Nyame Helm",
  205. body="Skulker's Vest +3",
  206. hands="Nyame Gauntlets",
  207. legs="Nyame Flanchard",
  208. feet="Nyame Sollerets",
  209. neck="Fotia Gorget",
  210. waist={ name="Kentarch Belt +1", augments={'Path: A',}},
  211. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  212. right_ear="Odr Earring",
  213. left_ring="Epaminondas's Ring",
  214. right_ring="Regal Ring",
  215. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}},}
  216. sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {})
  217. sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {})
  218. sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"], {
  219. ammo="Yetshila +1",
  220. head="Pill. Bonnet +3",
  221. body="Meg. Cuirie +2",
  222. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}})
  223. sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].SA, {})
  224. sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].SA, {})
  225.  
  226. sets.precast.WS['Savage Blade'] = {ammo="Seeth. Bomblet +1",
  227. head="Nyame Helm",
  228. body="Skulker's Vest +3",
  229. hands="Nyame Gauntlets",
  230. legs="Nyame Flanchard",
  231. feet="Nyame Sollerets",
  232. neck="Fotia Gorget",
  233. waist="Sailfi Belt +1",
  234. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  235. right_ear="Odr Earring",
  236. left_ring="Epaminondas's Ring",
  237. right_ring="Sroda Ring",
  238. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}},}
  239.  
  240. sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {})
  241. sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {})
  242. sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {})
  243. sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'], {
  244. ammo="Yetshila +1",
  245. head="Pill. Bonnet +3",
  246. body="Skulker's Vest +3",
  247. hands="Meg. Gloves +2",
  248. legs={ name="Herculean Trousers", augments={'Attack+28','Crit. hit damage +3%','DEX+12','Accuracy+3',}},
  249. feet={ name="Herculean Boots", augments={'Attack+21','Crit. hit damage +3%','STR+10','Accuracy+9',}},
  250. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}})
  251. sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].SA, {})
  252. sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].SA, {})
  253.  
  254. sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS, {ammo="C. Palug Stone"})
  255. sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {})
  256. sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {})
  257. sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'], {
  258. ammo="Yetshila +1",
  259. head="Pill. Bonnet +3",
  260. body="Skulker's Vest +3",
  261. hands="Meg. Gloves +2",
  262. legs={ name="Herculean Trousers", augments={'Attack+28','Crit. hit damage +3%','DEX+12','Accuracy+3',}},
  263. feet={ name="Herculean Boots", augments={'Attack+21','Crit. hit damage +3%','STR+10','Accuracy+9',}},
  264. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}})
  265. sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].SA, {})
  266. sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].SA, {})
  267.  
  268.  
  269. sets.precast.WS['Aeolian Edge'] = {ammo={ name="Seeth. Bomblet +1", augments={'Path: A',}},
  270. head="Nyame Helm",
  271. body="Skulker's Vest +3",
  272. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  273. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  274. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  275. neck="Baetyl Pendant",
  276. waist="Orpheus's Sash",
  277. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  278. right_ear="Friomisi Earring",
  279. left_ring="Epaminondas's Ring",
  280. right_ring="Dingir Ring",
  281. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}}
  282. sets.precast.WS['Aeolian Edge'].Mod = set_combine(sets.precast.WS['Aeolian Edge'], {
  283. hands="Plun. Armlets +3",
  284. body="Volte Jupon",
  285. feet="Skulk. Poulaines +2"})
  286.  
  287. --sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.AE, sets.TreasureHunter)--
  288.  
  289.  
  290. --------------------------------------
  291. -- Midcast sets
  292. --------------------------------------
  293.  
  294. sets.midcast.FastRecast = {}
  295.  
  296. -- Specific spells
  297. sets.midcast.Utsusemi = {}
  298.  
  299. -- Ranged gear
  300. sets.midcast.RA = {}
  301.  
  302. sets.midcast.RA.Acc = {}
  303.  
  304.  
  305. --------------------------------------
  306. -- Idle/resting/defense sets
  307. --------------------------------------
  308.  
  309. -- Resting sets
  310. sets.resting = {}
  311.  
  312.  
  313. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  314.  
  315. sets.idle = {ammo="Staunch Tathlum +1",
  316. head="Nyame Helm",
  317. body="Malignance Tabard",
  318. hands="Malignance Gloves",
  319. legs="Malignance Tights",
  320. feet="Jute Boots +1",
  321. neck={ name="Loricate Torque +1", augments={'Path: A',}},
  322. waist="Plat. Mog. Belt",
  323. left_ear="Tuisto Earring",
  324. right_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  325. left_ring="Moonlight Ring",
  326. right_ring="Gelatinous Ring +1",
  327. back="Moonlight Cape",
  328. }
  329.  
  330. sets.idle.Weak = {ammo="Staunch Tathlum +1",
  331. head="Meghanada Visor +1",
  332. body="Meg. Cuirie +2",
  333. hands="Meg. Gloves +2",
  334. legs={ name="Herculean Trousers", augments={'Attack+30','Phys. dmg. taken -4%','STR+6','Accuracy+9',}},
  335. feet="Herculean Boots",
  336. neck="Sanctity Necklace",
  337. waist="Plat. Mog. Belt",
  338. left_ear="Genmei Earring",
  339. right_ear="Infused Earring",
  340. left_ring="Defending Ring",
  341. right_ring="Paguroidea Ring",
  342. back="Moonlight Cape",}
  343.  
  344. sets.idle.Craft = set_combine(sets.idle, {head="Magnifying Specs.",
  345. body="Weaver's Smock",
  346. hands="Weaver's Cuffs",
  347. neck="Weaver's Torque",
  348. waist="Weaver's Belt",
  349. left_ring="Orvail Ring +1",
  350. right_ring="Craftmaster's Ring",
  351. })
  352.  
  353.  
  354. -- Defense sets
  355.  
  356. sets.defense.Evasion = set_combine(sets.engaged, {ammo="Yamarang",head="Meghanada Visor +1",body="Emet Harness +1",
  357. legs={ name="Herculean Trousers", augments={'Attack+30','Phys. dmg. taken -4%','STR+6','Accuracy+9',}},right_ear="Infused Earring",})
  358.  
  359. sets.defense.PDT = {ammo="Staunch Tathlum +1",
  360. head="Meghanada Visor +1",
  361. body="Meg. Cuirie +2",
  362. hands="Meg. Gloves +2",
  363. legs={ name="Herculean Trousers", augments={'Attack+30','Phys. dmg. taken -4%','STR+6','Accuracy+9',}},
  364. feet="Jute Boots +1",
  365. neck="Loricate Torque +1",
  366. waist="Plat. Mog. Belt",
  367. left_ear="Genmei Earring",
  368. right_ear="Infused Earring",
  369. left_ring="Defending Ring",
  370. right_ring="Patricius Ring",
  371. back="Moonlight Cape",}
  372.  
  373. sets.defense.MDT = {}
  374.  
  375.  
  376. --------------------------------------
  377. -- Melee sets
  378. --------------------------------------
  379.  
  380. -- Normal melee group
  381. sets.engaged = {
  382. ammo="Aurgelmir Orb +1",
  383. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  384. body="Pillager's Vest +3",
  385. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  386. legs="Pill. Culottes +3",
  387. feet="Plun. Poulaines +3",
  388. neck={ name="Asn. Gorget +2", augments={'Path: A',}},
  389. waist="Reiki Yotai",
  390. left_ear="Dedition Earring",
  391. right_ear="Sherida Earring",
  392. left_ring="Hetairoi Ring",
  393. right_ring="Gere Ring",
  394. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%',}}}
  395.  
  396. sets.engaged.Acc = set_combine(sets.engaged, {
  397. head="Pill. Bonnet +3",
  398. right_ring="Chirich Ring +1"})
  399.  
  400. sets.engaged.HighAcc = set_combine(sets.engaged.Acc, {
  401. right_ear="Digni. Earring",
  402. left_ring="Chirich Ring +1"})
  403.  
  404. -- Mod set for Haste 2 Only
  405. sets.engaged.Mod = set_combine(sets.engaged, {
  406. ammo="Yamarang",
  407. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  408. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  409. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  410. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  411. feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  412. neck="Asn. Gorget +2",
  413. waist="Windbuffet Belt +1",
  414. left_ear="Telos Earring",
  415. right_ear="Sherida Earring",
  416. left_ring="Epona's Ring",
  417. right_ring="Gere Ring",
  418. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}}})
  419. -- Mod set for no haste
  420. sets.engaged.Mod2 = set_combine(sets.engaged.Mod, {left_ear="Suppanomimi"})
  421.  
  422. sets.engaged.Evasion = {}
  423. sets.engaged.Acc.Evasion = {}
  424.  
  425. sets.engaged.PDT = {
  426. ammo="Aurgelmir Orb +1",
  427. head={ name="Plun. Bonnet +3", augments={'Enhances "Aura Steal" effect',}},
  428. body={ name="Gleti's Cuirass", augments={'Path: A',}},
  429. hands="Malignance Gloves",
  430. legs="Malignance Tights",
  431. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  432. neck={ name="Asn. Gorget +2", augments={'Path: A',}},
  433. waist="Reiki Yotai",
  434. left_ear="Eabani Earring",
  435. right_ear="Sherida Earring",
  436. left_ring="Moonlight Ring",
  437. right_ring="Gere Ring",
  438. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%',}}}
  439. sets.engaged.Acc.PDT = {}
  440.  
  441. end
  442.  
  443.  
  444. -------------------------------------------------------------------------------------------------------------------
  445. -- Job-specific hooks for standard casting events.
  446. -------------------------------------------------------------------------------------------------------------------
  447.  
  448. -- Run after the general precast() is done.
  449.  
  450.  
  451. -- Run after the general midcast() set is constructed.
  452. function job_post_midcast(spell, action, spellMap, eventArgs)
  453. if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
  454. equip(sets.TreasureHunter)
  455. end
  456. end
  457.  
  458. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  459. function job_aftercast(spell, action, spellMap, eventArgs)
  460. -- Weaponskills wipe SATA/Feint. Turn those state vars off before default gearing is attempted.
  461. if spell.type == 'WeaponSkill' and not spell.interrupted then
  462. state.Buff['Sneak Attack'] = false
  463. state.Buff['Trick Attack'] = false
  464. state.Buff['Feint'] = false
  465. end
  466. end
  467.  
  468. -- Called after the default aftercast handling is complete.
  469. function job_post_aftercast(spell, action, spellMap, eventArgs)
  470. -- If Feint is active, put that gear set on on top of regular gear.
  471. -- This includes overlaying SATA gear.
  472. check_buff('Feint', eventArgs)
  473. end
  474.  
  475. -------------------------------------------------------------------------------------------------------------------
  476. -- Job-specific hooks for non-casting events.
  477. -------------------------------------------------------------------------------------------------------------------
  478.  
  479. -- Called when a player gains or loses a buff.
  480. -- buff == buff gained or lost
  481. -- gain == true if the buff was gained, false if it was lost.
  482. function job_buff_change(buff, gain)
  483. if state.Buff[buff] ~= nil then
  484. if not midaction() then
  485. handle_equipping_gear(player.status)
  486. end
  487. end
  488. end
  489.  
  490.  
  491. -------------------------------------------------------------------------------------------------------------------
  492. -- User code that supplements standard library decisions.
  493. -------------------------------------------------------------------------------------------------------------------
  494.  
  495. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  496. local wsmode
  497.  
  498. if state.Buff['Sneak Attack'] then
  499. wsmode = 'SA'
  500. end
  501. if state.Buff['Trick Attack'] then
  502. wsmode = (wsmode or '') .. 'TA'
  503. end
  504.  
  505. return wsmode
  506. end
  507.  
  508.  
  509. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  510. function job_handle_equipping_gear(playerStatus, eventArgs)
  511. -- Check that ranged slot is locked, if necessary
  512. check_range_lock()
  513.  
  514. -- Check for SATA when equipping gear. If either is active, equip
  515. -- that gear specifically, and block equipping default gear.
  516. check_buff('Sneak Attack', eventArgs)
  517. check_buff('Trick Attack', eventArgs)
  518. end
  519.  
  520.  
  521. function customize_idle_set(idleSet)
  522. if player.hpp < 80 then
  523. idleSet = set_combine(idleSet, sets.ExtraRegen)
  524. end
  525.  
  526. return idleSet
  527. end
  528.  
  529.  
  530. function customize_melee_set(meleeSet)
  531. if state.TreasureMode.value == 'Fulltime' then
  532. meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  533. end
  534.  
  535. return meleeSet
  536. end
  537.  
  538.  
  539. -- Called by the 'update' self-command.
  540. function job_update(cmdParams, eventArgs)
  541. th_update(cmdParams, eventArgs)
  542. end
  543.  
  544. -- Function to display the current relevant user state when doing an update.
  545. -- Return true if display was handled, and you don't want the default info shown.
  546. function display_current_job_state(eventArgs)
  547. local msg = 'Melee'
  548.  
  549. if state.CombatForm.has_value then
  550. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  551. end
  552.  
  553. msg = msg .. ': '
  554.  
  555. msg = msg .. state.OffenseMode.value
  556. if state.HybridMode.value ~= 'Normal' then
  557. msg = msg .. '/' .. state.HybridMode.value
  558. end
  559. msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  560.  
  561. if state.DefenseMode.value ~= 'None' then
  562. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  563. end
  564.  
  565. if state.Kiting.value == true then
  566. msg = msg .. ', Kiting'
  567. end
  568.  
  569. if state.PCTargetMode.value ~= 'default' then
  570. msg = msg .. ', Target PC: '..state.PCTargetMode.value
  571. end
  572.  
  573. if state.SelectNPCTargets.value == true then
  574. msg = msg .. ', Target NPCs'
  575. end
  576.  
  577. msg = msg .. ', TH: ' .. state.TreasureMode.value
  578.  
  579. add_to_chat(122, msg)
  580.  
  581. eventArgs.handled = true
  582. end
  583.  
  584. -------------------------------------------------------------------------------------------------------------------
  585. -- Utility functions specific to this job.
  586. -------------------------------------------------------------------------------------------------------------------
  587.  
  588. -- State buff checks that will equip buff gear and mark the event as handled.
  589. function check_buff(buff_name, eventArgs)
  590. if state.Buff[buff_name] then
  591. equip(sets.buff[buff_name] or {})
  592. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  593. equip(sets.TreasureHunter)
  594. end
  595. eventArgs.handled = true
  596. end
  597. end
  598.  
  599.  
  600. -- Check for various actions that we've specified in user code as being used with TH gear.
  601. -- This will only ever be called if TreasureMode is not 'None'.
  602. -- Category and Param are as specified in the action event packet.
  603. function th_action_check(category, param)
  604. if category == 2 or -- any ranged attack
  605. --category == 4 or -- any magic action
  606. (category == 3 and param == 30) or -- Aeolian Edge
  607. (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
  608. (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
  609. then return true
  610. end
  611. end
  612.  
  613.  
  614. -- Function to lock the ranged slot if we have a ranged weapon equipped.
  615. function check_range_lock()
  616. if player.equipment.range ~= 'empty' then
  617. disable('range', 'ammo')
  618. else
  619. enable('range', 'ammo')
  620. end
  621. end
  622.  
  623.  
  624. -- Select default macro book on initial load or subjob change.
  625. function select_default_macro_book()
  626. -- Default macro set/book
  627. if player.sub_job == 'DNC' then
  628. set_macro_page(2, 11)
  629. elseif player.sub_job == 'WAR' then
  630. set_macro_page(2, 11)
  631. elseif player.sub_job == 'NIN' then
  632. set_macro_page(2, 11)
  633. else
  634. set_macro_page(2, 11)
  635. end
  636. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement