midash

Yellowbear_THF

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