Advertisement
Guest User

Millene_THF.lua

a guest
Mar 3rd, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.25 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. mote_include_version = 2
  19.  
  20. -- Load and initialize the include file.
  21. include('Mote-Include.lua')
  22. end
  23.  
  24. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  25. function job_setup()
  26. state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
  27. state.Buff['Trick Attack'] = buffactive['trick attack'] or false
  28. state.Buff['Feint'] = buffactive['feint'] or false
  29.  
  30. include('Mote-TreasureHunter')
  31.  
  32. -- For th_action_check():
  33. -- JA IDs for actions that always have TH: Provoke, Animated Flourish
  34. info.default_ja_ids = S{35, 204}
  35. -- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
  36. info.default_u_ja_ids = S{201, 202, 203, 205, 207}
  37. end
  38.  
  39. -------------------------------------------------------------------------------------------------------------------
  40. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  41. -------------------------------------------------------------------------------------------------------------------
  42.  
  43. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  44. function user_setup()
  45. state.OffenseMode:options('Normal', 'Acc', 'Mod')
  46. state.HybridMode:options('Normal', 'Evasion', 'PDT')
  47. state.RangedMode:options('Normal', 'Acc')
  48. state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
  49. state.PhysicalDefenseMode:options('Evasion', 'PDT')
  50.  
  51.  
  52. gear.default.weaponskill_neck = "Moepapa Medal"
  53. gear.default.weaponskill_waist = "Caudata Belt"
  54. gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','STR+8'}}
  55.  
  56. -- Additional local binds
  57. send_command('bind ^` input /ja "Flee" <me>')
  58. send_command('bind ^= gs c cycle treasuremode')
  59. send_command('bind !- gs c cycle targetmode')
  60.  
  61. select_default_macro_book()
  62. end
  63.  
  64. -- Called when this job file is unloaded (eg: job change)
  65. function user_unload()
  66. send_command('unbind ^`')
  67. send_command('unbind !-')
  68. end
  69.  
  70. -- Define sets and vars used by this job file.
  71. function init_gear_sets()
  72. --------------------------------------
  73. -- Special sets (required by rules)
  74. --------------------------------------
  75.  
  76. sets.TreasureHunter = {hands="Plunderer's Armlets", waist="Chaac Belt", feet="Raider's Poulaines +2"}
  77. sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
  78. sets.Kiting = {feet="Skadi's Jambeaux +1"}
  79.  
  80. sets.buff['Sneak Attack'] = {ammo="Jukukik Feather",
  81. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  82. body="Qaaxo Harness",hands="Pillager's Armlets",ring1="Rajas Ring",ring2="Epona's Ring",
  83. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Nahtirah Trousers",feet="Scopuli Nails +1"}
  84.  
  85. sets.buff['Trick Attack'] = {ammo="Jukukik Feather",
  86. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  87. body="Qaaxo Harness",hands="Pillager's Armlets",ring1="Stormsoul Ring",ring2="Epona's Ring",
  88. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Nahtirah Trousers",feet="Scopuli Nails +1"}
  89.  
  90. -- Actions we want to use to tag TH.
  91. sets.precast.Step = sets.TreasureHunter
  92. sets.precast.Flourish1 = sets.TreasureHunter
  93. sets.precast.JA.Provoke = sets.TreasureHunter
  94.  
  95.  
  96. --------------------------------------
  97. -- Precast sets
  98. --------------------------------------
  99.  
  100. -- Precast sets to enhance JAs
  101. sets.precast.JA['Collaborator'] = {head="Raider's Bonnet +2"}
  102. sets.precast.JA['Accomplice'] = {head="Raider's Bonnet +2"}
  103. sets.precast.JA['Flee'] = {feet="Pillager's Poulaines"}
  104. sets.precast.JA['Hide'] = {body="Pillager's Vest"}
  105. sets.precast.JA['Conspirator'] = {} -- {body="Raider's Vest +2"}
  106. sets.precast.JA['Steal'] = {head="Plunderer's Bonnet",hands="Pillager's Armlets",legs="Pillager's Culottes",feet="Pillager's Poulaines"}
  107. sets.precast.JA['Despoil'] = {legs="Raider's Culottes +2",feet="Raider's Poulaines +2"}
  108. sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets"}
  109. sets.precast.JA['Feint'] = {} -- {legs="Assassin's Culottes +2"}
  110.  
  111. sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack']
  112. sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']
  113.  
  114.  
  115. -- Waltz set (chr and vit)
  116. sets.precast.Waltz = {ammo="Sonia's Plectrum",
  117. head="Uk'uxkaj Cap",
  118. body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Titan Ring",ring2="Terrasoul Ring",
  119. back="Iximulew Cape",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Scopuli Nails +1"}
  120.  
  121. -- Don't need any special gear for Healing Waltz.
  122. sets.precast.Waltz['Healing Waltz'] = {}
  123.  
  124.  
  125. -- Fast cast sets for spells
  126. sets.precast.FC = {ammo="Impatiens",
  127. head="Haruspex Hat",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
  128. hands="Thaumas Gloves",ring1="Prolix Ring",legs="Enif Cosciales"}
  129.  
  130. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  131.  
  132.  
  133. -- Ranged snapshot gear
  134. sets.precast.RA = {head="Aurore Beret",hands="Iuitl Wristbands",legs="Nahtirah Trousers",feet="Wurrukatte Boots"}
  135.  
  136.  
  137. -- Weaponskill sets
  138.  
  139. -- Default set for any weaponskill that isn't any more specifically defined
  140. sets.precast.WS = {ammo="Jukukik Feather",
  141. head="Whirlpool Mask",neck="Moepapa Medal",ear1="Hollow Earring",ear2="Drone Earring",
  142. body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Ramuh Ring",ring2="Dumakulem's Ring",
  143. back="Meanagh Cape +1",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Scopuli Nails +1"}
  144.  
  145. sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Honed Tathlum", back="Letalis Mantle"})
  146.  
  147. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  148. --AGI 73-85%
  149. sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {ammo="Jukukik Feather",
  150. head="Whirlpool Mask",neck="Moepapa Medal",ear1="Hollow Earring",ear2="Drone Earring",
  151. body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Stormsoul Ring",legs="Nahtirah Trousers"})
  152. sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Jukukik Feather",
  153. back="Meanagh Cape +1"})
  154. sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {
  155. head="Felistris Mask",waist=gear.ElementalBelt})
  156. sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Jukukik Feather"})
  157. sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Jukukik Feather"})
  158. sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Jukukik Feather"})
  159.  
  160. --DEX 40%; CHR 40%
  161. sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {
  162. })
  163. sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {ammo="Jukukik Feather",
  164. back="Meanagh Cape +1"})
  165. sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {
  166. waist=gear.ElementalBelt})
  167. sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Jukukik Feather"})
  168. sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Jukukik Feather"})
  169. sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Jukukik Feather"})
  170.  
  171. --DEX 50%
  172. sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Jukukik Feather",
  173. head="Uk'uxkaj Cap",neck="Moepapa Medal"})
  174. sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {ammo="Jukukik Feather",
  175. back="Meanagh Cape +1"})
  176. sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {
  177. back="Meanagh Cape +1",waist=gear.ElementalBelt})
  178. sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {
  179. })
  180. sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {
  181. })
  182. sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {
  183. })
  184.  
  185. --DEX 80%
  186. sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {
  187. head="Uk'uxkaj Cap"})
  188. sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {ammo="Jukukik Feather",
  189. back="Meanagh Cape +1"})
  190. sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {back="Meanagh Cape +1",
  191. waist=gear.ElementalBelt})
  192. sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Jukukik Feather",
  193. body="Qaaxo Harness",legs="Nahtirah Trousers"})
  194. sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Jukukik Feather",
  195. body="Qaaxo Harness",legs="Nahtirah Trousers"})
  196. sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {ammo="Jukukik Feather",
  197. body="Qaaxo Harness",legs="Nahtirah Trousers"})
  198.  
  199. --DEX 40%; AGI 40%
  200. sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {
  201. head="Uk'uxkaj Cap"})
  202. sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {ammo="Jukukik Feather",
  203. back="Meanagh Cape +1"})
  204. sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {
  205. back="Meanagh Cape +1",waist=gear.ElementalBelt})
  206. sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Jukukik Feather",
  207. body="Qaaxo Harness",legs="Nahtirah Trousers"})
  208. sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Jukukik Feather",
  209. body="Qaaxo Harness",legs="Nahtirah Trousers"})
  210. sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Jukukik Feather",
  211. body="Qaaxo Harness",legs="Nahtirah Trousers"})
  212.  
  213. --DEX 60%
  214. sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS, {
  215. head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2="Moonshade Earring"})
  216. sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {ammo="Honed Tathlum",
  217. back="Letalis Mantle"})
  218. sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {
  219. back="Kayapa Cape",waist=gear.ElementalBelt})
  220. sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
  221. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  222. sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
  223. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  224. sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
  225. body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
  226.  
  227. --DEX 40%; INT 40%
  228. sets.precast.WS['Aeolian Edge'] = {ammo="Jukukik Feather",
  229. head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Moonshade Earring",
  230. body="Wayfarer Robe",hands="Iuitl Wristbands",ring1="Shiva Ring",ring2="Fenrir Ring",
  231. back="Toro Cape",waist=gear.ElementalBelt,legs="Iuitl Tights",feet="Pillager's Poulaines"}
  232.  
  233. sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)
  234.  
  235.  
  236. --------------------------------------
  237. -- Midcast sets
  238. --------------------------------------
  239.  
  240. sets.midcast.FastRecast = {
  241. head="Whirlpool Mask",ear2="Loquacious Earring",
  242. body="Pillager's Vest +1",hands="Pillager's Armlets +1",
  243. back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  244.  
  245. -- Specific spells
  246. sets.midcast.Utsusemi = {
  247. head="Whirlpool Mask",neck="Ej Necklace",ear2="Loquacious Earring",
  248. body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",
  249. back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  250.  
  251. -- Ranged gear
  252. sets.midcast.RA = {
  253. head="Whirlpool Mask",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
  254. body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Hajduk Ring",
  255. back="Meanagh Cape +1",waist="Aquiline Belt",legs="Nahtirah Trousers",feet="Pillager's Poulaines"}
  256.  
  257. sets.midcast.RA.Acc = {
  258. head="Whirlpool Mask",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
  259. body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Hajduk Ring",
  260. back="Meanagh Cape +1",waist="Aquiline Belt",legs="Nahtirah Trousers",feet="Pillager's Poulaines"}
  261.  
  262.  
  263. --------------------------------------
  264. -- Idle/resting/defense sets
  265. --------------------------------------
  266.  
  267. -- Resting sets
  268. sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
  269. ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  270.  
  271.  
  272. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  273.  
  274. sets.idle = {main="Sandung", sub="Izhiikoh",ammo="Demonry Stone",
  275. head="Pillager's Bonnet",neck="Wiglen Gorget",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  276. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  277. back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Pillager's Poulaines"}
  278.  
  279. sets.idle.Town = {main="Sandung", sub="Izhiikoh",ammo="Demonry Stone",
  280. head="Pillager's Bonnet",neck="Wiglen Gorget",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  281. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  282. back="Shadow Mantle",waist="Patentia Sash",legs="Nahtirah Trousers",feet="Pillager's Poulaines"}
  283.  
  284. sets.idle.Weak = {main="Sandung", sub="Izhiikoh",ammo="Demonry Stone",
  285. head="Pillager's Bonnet",neck="Wiglen Gorget",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  286. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  287. back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Pillager's Poulaines"}
  288.  
  289.  
  290. -- Defense sets
  291.  
  292. sets.defense.Evasion = {
  293. head="Uk'uxkaj Cap",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  294. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Defending Ring",ring2="Beeline Ring",
  295. back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  296.  
  297. sets.defense.PDT = {ammo="Iron Gobbet",
  298. head="Uk'uxkaj Cap",neck="Veisa Collar",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  299. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  300. back="Shadow Mantle",waist="Flume Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  301.  
  302. sets.defense.MDT = {ammo="Demonry Stone",
  303. head="Uk'uxkaj Cap",neck="Veisa Collar",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  304. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Defending Ring",ring2="Shadow Ring",
  305. back="Engulfer Cape +1",waist="Flume Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  306.  
  307.  
  308. --------------------------------------
  309. -- Melee sets
  310. --------------------------------------
  311.  
  312. -- Normal melee group
  313. sets.engaged = {ammo="White Tathlum",
  314. head="Pillager's Bonnet",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  315. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Rajas Ring",ring2="Epona's Ring",
  316. back="Canny Cape",waist="Twilight Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  317. sets.engaged.Acc = {ammo="Honed Tathlum",
  318. head="Whirpool Mask",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  319. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Oneiros Ring",ring2="Epona's Ring",
  320. back="Canny Cape",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  321.  
  322. -- Mod set for trivial mobs (Skadi+1)
  323. sets.engaged.Mod = {ammo="Hasty Pinion +1",
  324. head="Whirpool Mask",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  325. body="Skadi's Cuirie +1",hands="Plunderer's Armlets",ring1="Rajas Ring",ring2="Epona's Ring",
  326. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  327.  
  328. -- Mod set for trivial mobs (Thaumas)
  329. sets.engaged.Mod2 = {ammo="Hasty Pinion +1",
  330. head="Whirpool Mask",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  331. body="Thaumas Coat",hands="Plunderer's Armlets",ring1="Rajas Ring",ring2="Epona's Ring",
  332. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  333.  
  334. sets.engaged.Evasion = {ammo="Hasty Pinion +1",
  335. head="Uk'uxkaj Cap",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  336. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Defending Ring",ring2="Beeline Ring",
  337. back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  338.  
  339. sets.engaged.Acc.Evasion = {ammo="Hasty Pinion +1",
  340. head="Uk'uxkaj Cap",neck="Asperity Necklace",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  341. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Defending Ring",ring2="Beeline Ring",
  342. back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  343.  
  344. sets.engaged.PDT = {ammo="Hasty Pinion +1",
  345. head="Uk'uxkaj Cap",neck="Veisa Collar",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  346. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Defending Ring",ring2="Epona's Ring",
  347. back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  348.  
  349. sets.engaged.Acc.PDT = {ammo="Hasty Pinion +1",
  350. head="Uk'uxkaj Cap",neck="Veisa Collar",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  351. body="Qaaxo Harness",hands="Plunderer's Armlets",ring1="Defending Ring",ring2="Epona's Ring",
  352. back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Pillager's Poulaines"}
  353.  
  354. end
  355.  
  356.  
  357. -------------------------------------------------------------------------------------------------------------------
  358. -- Job-specific hooks for standard casting events.
  359. -------------------------------------------------------------------------------------------------------------------
  360.  
  361. -- Run after the general precast() is done.
  362. function job_post_precast(spell, action, spellMap, eventArgs)
  363. if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
  364. equip(sets.TreasureHunter)
  365. elseif spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
  366. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  367. equip(sets.TreasureHunter)
  368. end
  369. end
  370. end
  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(1, 2)
  550. elseif player.sub_job == 'WAR' then
  551. set_macro_page(3, 2)
  552. elseif player.sub_job == 'NIN' then
  553. set_macro_page(4, 2)
  554. else
  555. set_macro_page(2, 2)
  556. end
  557. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement