Guest User

Untitled

a guest
Jan 9th, 2014
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.16 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Initialization function that defines sets and variables to be used.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- Last Modified: 1/6/2014 7:32:07 AM
  6.  
  7. -- IMPORTANT: Make sure to also get the Mote-Include.lua file to go with this.
  8.  
  9. function get_sets()
  10. -- Load and initialize the include file.
  11. include('Mote-Include.lua')
  12. init_include()
  13.  
  14. -- Options: Override default values
  15. options.OffenseModes = {'Normal', 'Acc'}
  16. options.DefenseModes = {'Normal', 'Evasion', 'PDT'}
  17. options.WeaponskillModes = {'Normal', 'Acc', 'Att', 'Mod'}
  18. options.IdleModes = {'Normal'}
  19. options.RestingModes = {'Normal'}
  20. options.PhysicalDefenseModes = {'Evasion', 'PDT'}
  21. options.MagicalDefenseModes = {'MDT'}
  22.  
  23. state.Defense.PhysicalMode = 'Evasion'
  24.  
  25. state.Buff = {}
  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. -- TH mode handling
  31. options.TreasureModes = {'None','Tag','SATA','Fulltime'}
  32. state.TreasureMode = 'Tag'
  33.  
  34. tag_with_th = false
  35. tp_on_engage = 0
  36.  
  37. --------------------------------------
  38. -- Start defining the sets
  39. --------------------------------------
  40.  
  41. sets.TreasureHunter = {hands="Assassin's Armlets +2", feet="Raider's Poulaines +2"}
  42.  
  43. -- Precast Sets
  44. sets.precast = {}
  45.  
  46. -- Precast sets to enhance JAs
  47. sets.precast.JA = {}
  48.  
  49. sets.precast.JA['Collaborator'] = {}
  50. sets.precast.JA['Accomplice'] = {}
  51. sets.precast.JA['Flee'] = {feet="Pillager's Poulaines"}
  52. sets.precast.JA['Hide'] = {body="Pillager's Vest +1"}
  53. sets.precast.JA['Conspirator'] = {} -- {body="Raider's Vest +2"}
  54. sets.precast.JA['Steal'] = {hands="Pill. Armlets +1"}
  55. sets.precast.JA['Despoil'] = {feet="Raider's Poulaines +2"}
  56. sets.precast.JA['Perfect Dodge'] = {hands="Assassin's Armlets +2"}
  57. sets.precast.JA['Feint'] = {} -- {legs="Assassin's Culottes +2"}
  58.  
  59.  
  60. sets.precast.JA['Sneak Attack'] = {
  61. head="Pill. Bonnet +1",neck="Love Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  62. body="Pillager's Vest +1",hands="Raid. Armlets +2",ring1="Epona's Ring",ring2="Rajas Ring",
  63. back="Cavaros Mantle",waist="Patentia Sash",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  64.  
  65. sets.precast.JA['Trick Attack'] = {
  66. head="Pill. Bonnet +1",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  67. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Rajas Ring",
  68. back="Cavaros Mantle",waist="Patentia Sash",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  69.  
  70.  
  71. -- Waltz set (chr and vit)
  72. sets.precast.Waltz = {}
  73.  
  74. -- Don't need any special gear for Healing Waltz.
  75. sets.precast.Waltz['Healing Waltz'] = {}
  76.  
  77. -- Fast cast sets for spells
  78.  
  79. sets.precast.FC = {ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring",legs="Enif Cosciales"}
  80.  
  81. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  82.  
  83.  
  84. -- Weaponskill sets
  85. -- Default set for any weaponskill that isn't any more specifically defined
  86. sets.precast.WS = {
  87. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  88. body="Iuitl Vest",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Rajas Ring",
  89. back="Atheling Mantle",waist="Caudata Belt",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  90. sets.precast.WS.Acc = set_combine(sets.precast.WS, {back="Letalis Mantle"})
  91.  
  92. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  93. sets.precast.WS['Exenterator'] = {
  94. head="Pill. Bonnet +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  95. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Mars's Ring",
  96. back="Canny Cape",waist="Caudata Belt",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  97. sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {back="Letalis Mantle"})
  98. sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {waist="Thunder Belt"})
  99. sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {neck="Thunder Gorget"})
  100. sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {neck="Thunder Gorget"})
  101. sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {neck="Thunder Gorget"})
  102.  
  103. sets.precast.WS['Dancing Edge'] = {ammo="Thew Bomblet",
  104. head="Whirlpool Mask",neck="Soil Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  105. body="Manibozho Jerkin",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  106. back="Atheling Mantle",waist="Caudata Belt",legs="Manibozho Brais",feet="Iuitl Gaiters"}
  107. sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {ammo="Honed Tathlum", back="Letalis Mantle"})
  108. sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {waist="Soil Belt"})
  109. sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum",neck="Moepapa Medal"})
  110. sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum",neck="Moepapa Medal",hands="Pillager's Armlets"})
  111. sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum",neck="Moepapa Medal",hands="Pillager's Armlets"})
  112.  
  113. sets.precast.WS['Evisceration'] = {
  114. head="Uk'uxkaj Cap",neck="Nefarious Collar",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  115. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Rajas Ring",
  116. back="Rancorous Mantle",waist="Caudata Belt",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  117. sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {back="Letalis Mantle",ring2="Mars's Ring"})
  118. sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {waist="Soil Belt"})
  119. sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {head="Pill. Bonnet +1",neck="Soil Gorget",hands="Raid. Armlets +2",back="Cavaros Mantle"})
  120. sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {head="Pill. Bonnet +1",neck="Soil Gorget",back="Cavaros Mantle"})
  121. sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {head="Pill. Bonnet +1",neck="Soil Gorget",back="Cavaros Mantle"})
  122.  
  123. sets.precast.WS['Mercy Stroke'] = {
  124. head="Whirlpool Mask",neck="Justiciar's Torque",ear1="Vulcan's Pearl",ear2="Brutal Earring",
  125. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Strigoi Ring",
  126. back="Buquwik Cape",waist="Caudata Belt",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  127. sets.precast.WS['Mercy Stroke'].Acc = set_combine(sets.precast.WS['Mercy Stroke'], {back="Letalis Mantle"})
  128. sets.precast.WS['Mercy Stroke'].Mod = set_combine(sets.precast.WS['Mercy Stroke'], {waist="Soil Belt"})
  129. sets.precast.WS['Mercy Stroke'].SA = set_combine(sets.precast.WS['Mercy Stroke'].Mod, {head="Pill. Bonnet +1",neck="Soil Gorget",ring1="Candent Ring",hands="Raid. Armlets +2",back="Cavaros Mantle"})
  130. sets.precast.WS['Mercy Stroke'].TA = set_combine(sets.precast.WS['Mercy Stroke'].Mod, {head="Pill. Bonnet +1",neck="Soil Gorget",ring1="Candent Ring",back="Cavaros Mantle"})
  131. sets.precast.WS['Mercy Stroke'].SATA = set_combine(sets.precast.WS['Mercy Stroke'].Mod, {head="Pill. Bonnet +1",neck="Thunder Gorget",ring1="Candent Ring",back="Cavaros Mantle"})
  132.  
  133. sets.precast.WS['Rudra\'s Storm' ] = {
  134. head="Pill. Bonnet +1",neck="Love Torque",ear1="Moonshade Earring",ear2="Brutal Earring",
  135. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Rajas Ring",
  136. back="Atheling Mantle",waist="Caudata Belt",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  137. sets.precast.WS['Rudra\'s Storm' ].Acc = set_combine(sets.precast.WS['Rudra\'s Storm' ], {back="Letalis Mantle"})
  138. sets.precast.WS['Rudra\'s Storm' ].Mod = set_combine(sets.precast.WS['Rudra\'s Storm' ], {waist="Snow Belt"})
  139. sets.precast.WS['Rudra\'s Storm' ].SA = set_combine(sets.precast.WS['Rudra\'s Storm' ].Mod, {neck="Snow Gorget",hands="Raid. Armlets +2",back="Cavaros Mantle"})
  140. sets.precast.WS['Rudra\'s Storm' ].TA = set_combine(sets.precast.WS['Rudra\'s Storm' ].Mod, {neck="Snow Gorget",back="Cavaros Mantle"})
  141. sets.precast.WS['Rudra\'s Storm' ].SATA = set_combine(sets.precast.WS['Rudra\'s Storm' ].Mod, {neck="Snow Gorget",back="Cavaros Mantle"})
  142.  
  143. sets.precast.WS['Aeolian Edge'] = {}
  144.  
  145.  
  146. -- Midcast Sets
  147. sets.midcast = {}
  148.  
  149. sets.midcast.FastRecast = {
  150. head="Pill. Bonnet +1",ear2="Loquacious Earring",
  151. body="Pillager's Vest +1",hands="Thaumas Gloves",
  152. back="Shadow Mantle",waist="Hurch'lan Sash",legs="Enif Cosciales",feet="Manibozho Boots"}
  153.  
  154. -- Specific spells
  155. sets.midcast.Utsusemi = {
  156. head="Pill. Bonnet +1",neck="Torero Torque",ear2="Loquacious Earring",
  157. body="Pillager's Vest +1",hands="Thaumas Gloves",ring1="Beeline Ring",
  158. back="Shadow Mantle",waist="Hurch'lan Sash",legs="Enif Cosciales",feet="Manibozho Boots"}
  159.  
  160.  
  161. -- Sets to return to when not performing an action.
  162.  
  163. -- Resting sets
  164. sets.resting = {neck="Wiglen Gorget",
  165. ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  166.  
  167.  
  168. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  169. sets.idle = {}
  170.  
  171. sets.idle.Town = {main="Mandau", sub="Izhiikoh",
  172. head="Pill. Bonnet +1",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  173. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Dark Ring",ring2="Defending Ring",
  174. back="Iximulew Cape",waist="Flume Belt",legs="Pill. Culottes +1",feet="Skadi's Jambeaux +1"}
  175.  
  176. sets.idle.Field = {
  177. head="Pill. Bonnet +1",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  178. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  179. back="Iximulew Cape",waist="Flume Belt",legs="Pill. Culottes +1",feet="Skadi's Jambeaux +1"}
  180.  
  181. sets.idle.Weak = {
  182. head="Whirlpool Mask",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  183. body="Manibozho Jerkin",hands="Buremte Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  184. back="Iximulew Cape",waist="Flume Belt",legs="Nahtirah Trousers",feet="Skadi's Jambeaux +1"}
  185.  
  186. -- Defense sets
  187. sets.defense = {}
  188.  
  189. sets.defense.Evasion = {
  190. head="Pill. Bonnet +1",neck="Torero Torque",
  191. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Beeline Ring",ring2="Defending Ring",
  192. back="Canny Cape",waist="Flume Belt",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  193.  
  194. sets.defense.PDT = {
  195. head="Pill. Bonnet +1",neck="Twilight Torque",
  196. body="Pillager's Vest +1",hands="Iuitl Wristbands",ring1="Dark Ring",ring2="Defending Ring",
  197. back="Iximulew Cape",waist="Flume Belt",legs="Iuitl Tights",feet="Thurandaut Boots"}
  198.  
  199. sets.defense.MDT = {
  200. head="Pill. Bonnet +1",neck="Twilight Torque",
  201. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Dark Ring",ring2="Defending Ring",
  202. back="Mollusca Mantle",waist="Flume Belt",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  203.  
  204. sets.Kiting = {feet="Skadi's Jambeaux +1"}
  205.  
  206. -- Engaged sets
  207.  
  208. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  209. -- sets if more refined versions aren't defined.
  210. -- If you create a set with both offense and defense modes, the offense mode should be first.
  211. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  212.  
  213. -- Normal melee group
  214. sets.engaged = {ranged="Raider's Bmrng.",
  215. head="Uk'uxkaj Cap",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  216. body="Thaumas Coat",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Rajas Ring",
  217. back="Atheling Mantle",waist="Patentia Sash",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  218. sets.engaged.Acc = {ammo="Honed Tathlum",
  219. head="Whirlpool Mask",neck="Love Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  220. body="Thaumas Coat",hands="Pill. Armlets +1",ring1="Epona's Ring",ring2="Mars's Ring",
  221. back="Letalis Mantle",waist="Patentia Sash",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  222. sets.engaged.Evasion = {ranged="Raider's Bmrng.",
  223. head="Pill. Bonnet +1",neck="Torero Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  224. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Beeline Ring",ring2="Defending Ring",
  225. back="Canny Cape",waist="Patentia Sash",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  226. sets.engaged.Acc.Evasion = {ammo="Honed Tathlum",
  227. head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  228. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Beeline Ring",ring2="Defending Ring",
  229. back="Letalis Mantle",waist="Patentia Sash",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  230. sets.engaged.PDT = {
  231. head="Pill. Bonnet +1",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  232. body="Pillager's Vest +1",hands="Iuitl Wristbands",ring1="Dark Ring",ring2="Defending Ring",
  233. back="Iximulew Cape",waist="Flume Belt",legs="Iuitl Tights",feet="Thurandaut Boots"}
  234. sets.engaged.Acc.PDT = {ammo="Honed Tathlum",
  235. head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  236. body="Pillager's Vest +1",hands="Pill. Armlets +1",ring1="Beeline Ring",ring2="Defending Ring",
  237. back="Letalis Mantle",waist="Patentia Sash",legs="Pill. Culottes +1",feet="Manibozho Boots"}
  238.  
  239.  
  240. -- Ranged gaer
  241. sets.ranged = {hands="Assassin's Armlets +2",feet="Raider's Poulaines +2"}
  242.  
  243.  
  244.  
  245. gearswap_binds_on_load()
  246.  
  247. windower.send_command('bind ^- gs c toggle target')
  248. windower.send_command('bind !- gs c cycle targetmode')
  249.  
  250. windower.send_command('bind ^= gs c cycle treasuremode')
  251. windower.send_command('bind ^` input /ja "Flee" <me>')
  252. end
  253.  
  254. -- Called when this job file is unloaded (eg: job change)
  255. function file_unload()
  256. --spellcast_binds_on_unload()
  257.  
  258. windower.send_command('unbind ^`')
  259. end
  260.  
  261. -------------------------------------------------------------------------------------------------------------------
  262. -- Job-specific hooks that are called to process player actions at specific points in time.
  263. -------------------------------------------------------------------------------------------------------------------
  264.  
  265. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  266. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  267. function job_precast(spell, action, spellMap, eventArgs)
  268.  
  269. end
  270.  
  271. function get_job_wsmode(spell, action, spellMap)
  272. local wsmode = ''
  273. if state.Buff['Sneak Attack'] then
  274. wsmode = 'SA'
  275. end
  276. if state.Buff['Trick Attack'] then
  277. wsmode = wsmode .. 'TA'
  278. end
  279.  
  280. if wsmode ~= '' then
  281. return wsmode
  282. end
  283. end
  284.  
  285.  
  286. -- Run after the general precast() is done.
  287. function job_post_precast(spell, action, spellMap, eventArgs)
  288. if spell.type == 'Step' or spell.type == 'Flourish1' then
  289. if state.TreasureMode ~= 'None' then
  290. equip(sets.TreasureHunter)
  291. end
  292. elseif (spell.english=='Sneak Attack' or spell.english=='Trick Attack') and
  293. (state.TreasureMode == 'SATA' or state.TreasureMode == 'Fulltime' or tag_with_th) then
  294. equip(sets.TreasureHunter)
  295. end
  296. end
  297.  
  298.  
  299. -- Return true if we handled the aftercast work. Otherwise it will fall back
  300. -- to the general aftercast() code in Mote-Include.
  301. function job_aftercast(spell, action, spellMap, eventArgs)
  302. -- Update the state of certain buff JAs if the action wasn't interrupted.
  303. if not spell.interrupted then
  304. if state.Buff[spell.name] ~= nil then
  305. state.Buff[spell.name] = true
  306. end
  307. end
  308.  
  309. -- Don't let aftercast revert gear set for SA/TA/Feint
  310. if S{'Sneak Attack', 'Trick Attack', 'Feint'}[spell.english] and not spell.interrupted then
  311. eventArgs.handled = true
  312. -- If SA/TA/Feint are active, put appropriate gear back on (including TH gear).
  313. elseif state.Buff['Sneak Attack'] then
  314. equip(sets.precast.JA['Sneak Attack'])
  315. if state.TreasureMode == 'SATA' or state.TreasureMode == 'Fulltime' or tag_with_th then
  316. equip(sets.TreasureHunter)
  317. end
  318. eventArgs.handled = true
  319. elseif state.Buff['Trick Attack'] then
  320. equip(sets.precast.JA['Trick Attack'])
  321. if state.TreasureMode == 'SATA' or state.TreasureMode == 'Fulltime' or tag_with_th then
  322. equip(sets.TreasureHunter)
  323. end
  324. eventArgs.handled = true
  325. elseif state.Buff['Feint'] then
  326. --equip(sets.precast.JA['Feint'])
  327. if state.TreasureMode == 'SATA' or state.TreasureMode == 'Fulltime' or tag_with_th then
  328. equip(sets.TreasureHunter)
  329. end
  330. eventArgs.handled = true
  331. end
  332.  
  333. if not spell.interrupted then
  334. if spell.target and spell.target.type == 'Enemy' then
  335. tag_with_th = false
  336. tp_on_engage = 0
  337. elseif (spell.type == 'Waltz' or spell.type == 'Samba') and tag_with_th then
  338. -- Update current TP if we spend TP before we actually hit the mob
  339. tp_on_engage = player.tp
  340. end
  341. end
  342. end
  343.  
  344.  
  345. -------------------------------------------------------------------------------------------------------------------
  346. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  347. -------------------------------------------------------------------------------------------------------------------
  348.  
  349. function customize_idle_set(idleSet)
  350. if player.hpp < 80 then
  351. idleSet.head = "Pill. Bonnet +1"
  352. end
  353.  
  354. return idleSet
  355. end
  356.  
  357. function customize_melee_set(meleeSet)
  358. if state.TreasureMode == 'Fulltime' or tag_with_th then
  359. meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  360. end
  361.  
  362. return meleeSet
  363. end
  364.  
  365. -------------------------------------------------------------------------------------------------------------------
  366. -- General hooks for other events.
  367. -------------------------------------------------------------------------------------------------------------------
  368.  
  369. -- Called when the player's status changes.
  370. function job_status_change(newStatus, oldStatus, eventArgs)
  371. if newStatus == 'Engaged' and state.TreasureMode ~= 'None' then
  372. equip(sets.TreasureHunter)
  373. tag_with_th = true
  374. tp_on_engage = player.tp
  375. windower.send_command('wait 3;gs c update th')
  376. elseif oldStatus == 'Engaged' then
  377. tag_with_th = false
  378. tp_on_engage = 0
  379. end
  380.  
  381. -- If SA/TA/Feint are active, don't change gear sets
  382. if satafeint_active() then
  383. eventArgs.handled = true
  384. end
  385. end
  386.  
  387. -- Called when a player gains or loses a buff.
  388. -- buff == buff gained or lost
  389. -- gain == true if the buff was gained, false if it was lost.
  390. function job_buff_change(buff, gain)
  391. if state.Buff[buff] ~= nil then
  392. state.Buff[buff] = gain
  393.  
  394. if not satafeint_active() then
  395. handle_equipping_gear(player.status)
  396. end
  397. end
  398. end
  399.  
  400. -- Function to indicate if any buffs have been activated that we don't want to equip gear over.
  401. function satafeint_active()
  402. return state.Buff['Sneak Attack'] or state.Buff['Trick Attack'] or state.Buff['Feint']
  403. end
  404.  
  405.  
  406. -------------------------------------------------------------------------------------------------------------------
  407. -- Hooks for TH mode handling.
  408. -------------------------------------------------------------------------------------------------------------------
  409.  
  410. -- Request job-specific mode tables.
  411. -- Return true on the third returned value to indicate an error: that we didn't recognize the requested field.
  412. function job_get_mode_table(field)
  413. if field == 'Treasure' then
  414. return options.TreasureModes, state.TreasureMode
  415. end
  416.  
  417. -- Return an error if we don't recognize the field requested.
  418. return nil, nil, true
  419. end
  420.  
  421. -- Set job-specific mode values.
  422. -- Return true if we recognize and set the requested field.
  423. function job_set_mode(field, val)
  424. if field == 'Treasure' then
  425. state.TreasureMode = val
  426. return true
  427. end
  428. end
  429.  
  430.  
  431. -------------------------------------------------------------------------------------------------------------------
  432. -- User code that supplements self-commands.
  433. -------------------------------------------------------------------------------------------------------------------
  434.  
  435. -- Called for direct player commands.
  436. function job_self_command(cmdParams)
  437.  
  438. end
  439.  
  440. -- Called by the 'update' self-command.
  441. function job_update(cmdParams, eventArgs)
  442. if state.TreasureMode == 'None' then
  443. tag_with_th = false
  444. tp_on_engage = 0
  445. elseif tag_with_th and player.tp ~= tp_on_engage then
  446. tag_with_th = false
  447. tp_on_engage = 0
  448. elseif cmdParams[1] == 'th' and player.status == 'Engaged' then
  449. windower.send_command('wait 3;gs c update th')
  450. end
  451.  
  452. if player.equipment.range ~= 'empty' then
  453. disable('range', 'ammo')
  454. else
  455. enable('range', 'ammo')
  456. end
  457.  
  458. -- Don't trigger equipping gear if SA/TA/Feint is active.
  459. if buffactive['sneak attack'] or buffactive['trick attack'] or buffactive['feint'] then
  460. eventArgs.handled = true
  461. end
  462. end
  463.  
  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 defenseString = ''
  469. if state.Defense.Active then
  470. local defMode = state.Defense.PhysicalMode
  471. if state.Defense.Type == 'Magical' then
  472. defMode = state.Defense.MagicalMode
  473. end
  474.  
  475. defenseString = 'Defense: '..state.Defense.Type..' '..defMode..' '
  476. end
  477.  
  478. add_to_chat(122,'Melee: '..state.OffenseMode..'/'..state.DefenseMode..' WS: '..state.WeaponskillMode..' '..
  479. defenseString..'Kiting: '..on_off_names[state.Kiting]..' TH: '..state.TreasureMode)
  480.  
  481. eventArgs.handled = true
  482. end
  483.  
  484. -------------------------------------------------------------------------------------------------------------------
  485. -- Utility functions specific to this job.
  486. -------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment