midash

Orangebear_DNC

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