Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.17 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6. Custom commands:
  7.  
  8. gs c cycle treasuremode (set on ctrl-= by default): Cycles through the available treasure hunter modes.
  9.  
  10. Treasure hunter modes:
  11. None - Will never equip TH gear
  12. Tag - Will equip TH gear sufficient for initial contact with a mob (either melee, ranged hit, or Aeolian Edge AOE)
  13. SATA - Will equip TH gear sufficient for initial contact with a mob, and when using SATA
  14. Fulltime - Will keep TH gear equipped fulltime
  15.  
  16. --]]
  17. include('organizer-lib')
  18. -- Initialization function for this job file.
  19. function get_sets()
  20. mote_include_version = 2
  21.  
  22. -- Load and initialize the include file.
  23. include('Include.lua')
  24. end
  25. --Lockstyle
  26. send_command('wait 6;input /lockstyleset 02')
  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('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', 'Mod')
  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 = "Lissome 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.  
  81.  
  82. }
  83. sets.TreasureHunter = {hands="Plunderer's Armlets +1", waist="Chaac Belt", feet="Skulker's Poulaines +1"}
  84. sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
  85. sets.Kiting = {feet="Skadi's Jambeaux +1"}
  86.  
  87. sets.buff['Sneak Attack'] = {ammo="Ginsen",
  88. head="Pillager's Bonnet +1",neck="Lissome Necklace",ear1="Suppanomimi",ear2="Cessance Earring",
  89. body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Hetairoi Ring",ring2="Epona's Ring",
  90. back="Canny Cape",waist="Patentia Sash",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
  91.  
  92. sets.buff['Trick Attack'] = {ammo="Ginsen",
  93. head="Pillager's Bonnet +1",neck="Lissome Necklace",ear1="Suppanomimi",ear2="Cessance Earring",
  94. body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Stormsoul Ring",ring2="Epona's Ring",
  95. back="Canny Cape",waist="Patentia Sash",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
  96.  
  97. -- Actions we want to use to tag TH.
  98. sets.precast.Step = sets.TreasureHunter
  99. sets.precast.Flourish = sets.TreasureHunter
  100. sets.precast.JA.Provoke = sets.TreasureHunter
  101.  
  102.  
  103. --------------------------------------
  104. -- Precast sets
  105. --------------------------------------
  106.  
  107. -- Precast sets to enhance JAs
  108. sets.precast.JA = {}
  109. sets.precast.JA['Collaborator'] = {head="Raider's Bonnet +2"}
  110. sets.precast.JA['Accomplice'] = {head="Raider's Bonnet +2"}
  111. sets.precast.JA['Flee'] = {feet="Pillager's Poulaines +1"}
  112. sets.precast.JA['Hide'] = {body="Pillager's Vest +1"}
  113. sets.precast.JA['Conspirator'] = {} -- {body="Raider's Vest +2"}
  114. sets.precast.JA['Steal'] = {head="Plunderer's Bonnet",hands="Pillager's Armlets +1",legs="Pillager's Culottes +1",feet="Pillager's Poulaines +1"}
  115. sets.precast.JA['Despoil'] = {legs="Raider's Culottes +2",feet="Raider's Poulaines +2"}
  116. sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +1"}
  117. sets.precast.JA['Feint'] = {} -- {legs="Assassin's Culottes +2"}
  118.  
  119. sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack']
  120. sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']
  121.  
  122.  
  123. --Waltz
  124. sets.precast.Waltz = {
  125. ammo="Yamarang",
  126. head="Mummu Bonnet +2",
  127. neck="Loricate Torque +1",
  128. ear1="Handler's Earring",
  129. ear2="Handler's Earring +1",
  130. body="Passion Jacket",
  131. hands="Pillager's Armlets +3",
  132. ring1="Regal Ring",
  133. ring2="Sirona's Ring",
  134. back="Moonbeam Cape",
  135. waist="Chaac Belt",
  136. legs="Dashing Subligar",
  137. feet="Plunderer's Poulaines +1"
  138. }
  139.  
  140.  
  141. -- Fast cast sets for spells
  142.  
  143. sets.precast.FC = {
  144. ammo="Sapience Orb",
  145. head={ name="Herculean Helm", augments={'Mag. Acc.+24','"Fast Cast"+5','MND+5','"Mag.Atk.Bns."+9',}},
  146. neck="Baetyl Pendant",
  147. ear1="Loquacious Earring",
  148. ear2="Etiolation Earring",
  149. body="Dread Jupon",
  150. hands="Leyline Gloves",
  151. ring1="Weatherspoon Ring +1",
  152. ring2="Rahab Ring",
  153. back="",
  154. waist="",
  155. legs={ name="Herculean Trousers", augments={'Mag. Acc.+7','"Fast Cast"+5','STR+14','"Mag.Atk.Bns."+11',}},
  156. feet=""
  157. }
  158.  
  159.  
  160. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  161.  
  162.  
  163. sets.precast.FC.Trust = set_combine(sets.precast.FC, {
  164. head="Meghanada Visor +1",
  165. legs="Meghanada Chausses +1",
  166. feet="Meghanada Jambeaux +1"
  167. })
  168.  
  169. --Ranged Atk
  170. sets.precast.RA = {
  171. feet="Meghanada Jambeaux +1"
  172. }
  173.  
  174.  
  175. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  176.  
  177. sets.precast.WS['Aeolian Edge'] = {ammo="Jukukik Feather",
  178. head=HercHdMAB,neck="Sanctity Necklace",ear1="Hecate's earring",ear2="Friomisi Earring",
  179. body=CarmineBdyMaB,hands=CarmineHndMaB,ring1="Acumen Ring",ring2="Arvina Ringlet +1",
  180. back=BelenusSTP,waist="Eschan Stone",legs=HercLegMAB,feet=HercFtMAB}
  181.  
  182. sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)
  183.  
  184.  
  185. --------------------------------------
  186. -- Midcast sets
  187. --------------------------------------
  188. sets.midcast['Ninjutsu'] = set_combine(sets.precast.FC['Ninjutsu'], {})
  189.  
  190. sets.midcast.RA = set_combine(sets.precast.RA, {
  191. head="Meghanada Visor +1",
  192. neck="Sanctity Necklace",
  193. ear1="Clearview Earring",
  194. ear2="Infused Earring",
  195. body="Meghanada Cuirie +1",
  196. hands="Meghanada Gloves +1",
  197. ring1="Dingir Ring",
  198. ring2="Paqichikaji Ring",
  199. back="Quarrel Mantle",
  200. waist="Aquiline Belt",
  201. legs="Meghanada Chausses +1",
  202. feet="Meghanada Jambeaux +1"
  203. })
  204.  
  205. --------------------------------------
  206. -- Idle/resting/defense/etc sets
  207. --------------------------------------
  208.  
  209. -- Resting sets
  210. sets.resting = sets.idle
  211.  
  212. sets.idle = {
  213. ammo="Staunch Tathlum",
  214. head="Meghanada Visor +1",
  215. neck="Sanctity Necklace",
  216. ear1="Odnowa Earring",
  217. ear2="Infused Earring",
  218. body="Meghanada Cuirie +1",
  219. hands="Meghanada Gloves +1",
  220. ring1="Defending Ring",
  221. ring2="Shadow Ring",
  222. back="Moonbeam Cape",
  223. waist="Chaac Belt",
  224. legs="Meghanada Chausses +1",
  225. feet="Turms Leggings"
  226. }
  227.  
  228. --------------------------------------
  229. -- Melee sets
  230. --------------------------------------
  231. sets.engaged = {
  232. ammo="Ginsen",
  233. head="Adhemar Bonnet +1",
  234. neck="Anu Torque",
  235. ear1="Telos Earring",
  236. ear2="Sherida Earring",
  237. body="Adhemar Jacket +1",
  238. hands="Adhemar Wristbands +1",
  239. ring1="Hetairoi Ring",
  240. ring2="Epona's Ring",
  241. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Store TP"+10',}},
  242. waist="Reiki Yotai",
  243. legs="Samnuha Tights",
  244. feet=TrpAtkHercBoots
  245. }
  246.  
  247. --------------------------------------
  248. -- WS sets
  249. --------------------------------------
  250.  
  251. -- Default set for any weaponskill that isn't any more specifically defined
  252. sets.precast.WS = {
  253. ammo="Seething Bomblet +1",
  254. head="Adhemar Bonnet +1",
  255. neck="Caro Necklace",
  256. ear1="Moonshade Earring",
  257. ear2="Sherida Earring",
  258. body="Herculean Vest",
  259. hands="Meghanada Gloves +1",
  260. ring1="Regal Ring",
  261. ring2="Ilabrat Ring",
  262. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}},
  263. waist="Grunfeld Rope",
  264. legs="Lustratio Subligar +1",
  265. feet="Lustratio Leggings +1"
  266. }
  267.  
  268. sets.precast.WS.MaxTP = set_combine(sets.precast.WS, {
  269. ear1="Ishvara Earring"
  270. })
  271.  
  272. sets.CritWS = set_combine(sets.precast.WS, {
  273. ammo="Yetshila",
  274. head="Adhemar Bonnet +1",
  275. neck="Fotia Gorget",
  276. hands="Adhemar Wristbands+1",
  277. ring2="Epona's Ring",
  278. waist="Fotia Belt"
  279. })
  280.  
  281. sets.CritWS.MaxTP = set_combine(sets.CritWS, {
  282. ear1="Telos Earring"
  283. })
  284.  
  285. sets.ElementalWS = set_combine(sets.precast.WS, {
  286. head={ name="Herculean Helm", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Mag. Acc.+11','"Mag.Atk.Bns."+13',}},
  287. neck="Baetyl Pendant",
  288. ear2="Friomisi Earring",
  289. body="Samnuha Coat",
  290. hands="Leyline Gloves",
  291. ring1="Acumen Ring",
  292. ring2="Dingir Ring",
  293. waist="Eschan Stone",
  294. legs={ name="Herculean Trousers", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','MND+4','Mag. Acc.+13','"Mag.Atk.Bns."+13',}},
  295. feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Crit.hit rate+1','Mag. Acc.+3','"Mag.Atk.Bns."+13',}}
  296. })
  297.  
  298. sets.ElementalWS.MaxTP = set_combine(sets.ElementalWS, {
  299. ear1="Crematio Earring"
  300. })
  301.  
  302. -- Dagger Weapon Skills
  303. sets.precast.WS['Wasp Sting'] = sets.precast.WS
  304. sets.precast.WS.MaxTP['Wasp Sting'] = sets.precast.MaxTP
  305.  
  306. sets.precast.WS['Viper Bite'] = sets.precast.WS
  307. sets.precast.WS.MaxTP['Viper Bite'] = sets.precast.WS.MaxTP
  308.  
  309. sets.precast.WS['Shadowstitch'] = set_combine(sets.precast.WS, {neck="Fotia Gorget", waist="Fotia Belt"})
  310. sets.precast.WS.MaxTP['Shadowstitch'] = set_combine(sets.precast.WS["Shadowstitch"], {ear1="Cessance Earring"})
  311.  
  312. sets.precast.WS['Gust Slash'] = sets.ElementalWS
  313. sets.precast.WS.MaxTP['Gust Slash'] = sets.ElementalWS.MaxTP
  314.  
  315. sets.precast.WS['Cyclone'] = sets.ElementalWS
  316. sets.precast.WS.MaxTP['Cyclone'] = sets.ElementalWS.MaxTP
  317.  
  318. sets.precast.WS['Energy Steal'] = {ear1="Moonshade Earring", neck="Fotia Gorget", wait="Fotia Belt"}
  319. sets.precast.WS.MaxTP['Energy Steal'] = {neck="Fotia Gorget", wait="Fotia Belt"}
  320.  
  321. sets.precast.WS['Energy Drain'] = {ear1="Moonshade Earring", neck="Fotia Gorget", wait="Fotia Belt"}
  322. sets.precast.WS.MaxTP['Energy Drain'] = {neck="Fotia Gorget", wait="Fotia Belt"}
  323.  
  324. sets.precast.WS['Dancing Edge'] = sets.precast.WS
  325. sets.precast.WS.MaxTP['Dancing Edge'] = sets.precast.WS.MaxTP
  326.  
  327. sets.precast.WS['Shark Bite'] = sets.precast.WS
  328. sets.precast.WS.MaxTP['Shark Bite'] = sets.precast.WS.MaxTP
  329.  
  330. sets.precast.WS['Evisceration'] = sets.CritWS
  331. sets.precast.WS.MaxTP['Evisceration'] = sets.CritWS.MaxTP
  332.  
  333. sets.precast.WS['Aeolian Edge'] = sets.ElementalWS
  334. sets.precast.WS.MaxTP['Aeolian Edge'] = sets.ElementalWS.MaxTP
  335.  
  336. sets.precast.WS["Rudra's Storm"] = sets.precast.WS
  337. sets.precast.WS.MaxTP["Rudra's Storm"] = sets.precast.WS.MaxTP
  338.  
  339. sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {neck="Fotia Gorget", waist="Fotia Belt"})
  340. sets.precast.WS.MaxTP['Exenterator'] = set_combine(sets.precast.WS["Exenterator"], {ear1="Cessance Earring"})
  341.  
  342. --------------------------------------
  343. -- Custom buff sets
  344. --------------------------------------
  345.  
  346. sets.buff['Sneak Attack'] = {ammo="Yetshila",
  347. hands="Skulker's Armlets +1",
  348. back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Store TP"+10',}},
  349. }
  350.  
  351. sets.buff['Trick Attack'] = {ammo="Yetshila",
  352. hands="Pillager's Armlets +3"
  353. }
  354.  
  355. sets.SATA = set_combine(sets.buff['Trick Attack'], sets.buff['Sneak Attack'])
  356.  
  357. sets.buff['Hide'] = {body="Pillager's Vest +1"}
  358.  
  359. end
  360.  
  361.  
  362.  
  363. -------------------------------------------------------------------------------------------------------------------
  364. -- Job-specific hooks for standard casting events.
  365. -------------------------------------------------------------------------------------------------------------------
  366.  
  367. -- Run after the general precast() is done.
  368. function job_post_precast(spell, action, spellMap, eventArgs)
  369. if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
  370. equip(sets.TreasureHunter)
  371. elseif spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
  372. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  373. equip(sets.TreasureHunter)
  374. end
  375. end
  376. end
  377.  
  378. -- Run after the general midcast() set is constructed.
  379. function job_post_midcast(spell, action, spellMap, eventArgs)
  380. if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
  381. equip(sets.TreasureHunter)
  382. end
  383. end
  384.  
  385. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  386. function job_aftercast(spell, action, spellMap, eventArgs)
  387. -- Weaponskills wipe SATA/Feint. Turn those state vars off before default gearing is attempted.
  388. if spell.type == 'WeaponSkill' and not spell.interrupted then
  389. state.Buff['Sneak Attack'] = false
  390. state.Buff['Trick Attack'] = false
  391. state.Buff['Feint'] = false
  392. end
  393. end
  394.  
  395. -- Called after the default aftercast handling is complete.
  396. function job_post_aftercast(spell, action, spellMap, eventArgs)
  397. -- If Feint is active, put that gear set on on top of regular gear.
  398. -- This includes overlaying SATA gear.
  399. check_buff('Feint', eventArgs)
  400. end
  401.  
  402. -------------------------------------------------------------------------------------------------------------------
  403. -- Job-specific hooks for non-casting events.
  404. -------------------------------------------------------------------------------------------------------------------
  405.  
  406. -- Called when a player gains or loses a buff.
  407. -- buff == buff gained or lost
  408. -- gain == true if the buff was gained, false if it was lost.
  409. function job_buff_change(buff, gain)
  410. if state.Buff[buff] ~= nil then
  411. if not midaction() then
  412. handle_equipping_gear(player.status)
  413. end
  414. end
  415. end
  416.  
  417.  
  418. -------------------------------------------------------------------------------------------------------------------
  419. -- User code that supplements standard library decisions.
  420. -------------------------------------------------------------------------------------------------------------------
  421.  
  422. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  423. local wsmode
  424.  
  425. if state.Buff['Sneak Attack'] then
  426. wsmode = 'SA'
  427. end
  428. if state.Buff['Trick Attack'] then
  429. wsmode = (wsmode or '') .. 'TA'
  430. end
  431.  
  432. return wsmode
  433. end
  434.  
  435.  
  436. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  437. function job_handle_equipping_gear(playerStatus, eventArgs)
  438. -- Check that ranged slot is locked, if necessary
  439. check_range_lock()
  440.  
  441. -- Check for SATA when equipping gear. If either is active, equip
  442. -- that gear specifically, and block equipping default gear.
  443. check_buff('Sneak Attack', eventArgs)
  444. check_buff('Trick Attack', eventArgs)
  445. end
  446.  
  447.  
  448. function customize_idle_set(idleSet)
  449. if player.hpp < 80 then
  450. idleSet = set_combine(idleSet, sets.ExtraRegen)
  451. end
  452.  
  453. return idleSet
  454. end
  455.  
  456.  
  457. function customize_melee_set(meleeSet)
  458. if state.TreasureMode.value == 'Fulltime' then
  459. meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  460. end
  461.  
  462. return meleeSet
  463. end
  464.  
  465.  
  466. -- Called by the 'update' self-command.
  467. function job_update(cmdParams, eventArgs)
  468. th_update(cmdParams, eventArgs)
  469. end
  470.  
  471. -- Function to display the current relevant user state when doing an update.
  472. -- Return true if display was handled, and you don't want the default info shown.
  473. function display_current_job_state(eventArgs)
  474. local msg = 'Melee'
  475.  
  476. if state.CombatForm.has_value then
  477. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  478. end
  479.  
  480. msg = msg .. ': '
  481.  
  482. msg = msg .. state.OffenseMode.value
  483. if state.HybridMode.value ~= 'Normal' then
  484. msg = msg .. '/' .. state.HybridMode.value
  485. end
  486. msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  487.  
  488. if state.DefenseMode.value ~= 'None' then
  489. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  490. end
  491.  
  492. if state.Kiting.value == true then
  493. msg = msg .. ', Kiting'
  494. end
  495.  
  496. if state.PCTargetMode.value ~= 'default' then
  497. msg = msg .. ', Target PC: '..state.PCTargetMode.value
  498. end
  499.  
  500. if state.SelectNPCTargets.value == true then
  501. msg = msg .. ', Target NPCs'
  502. end
  503.  
  504. msg = msg .. ', TH: ' .. state.TreasureMode.value
  505.  
  506. add_to_chat(122, msg)
  507.  
  508. eventArgs.handled = true
  509. end
  510.  
  511. -------------------------------------------------------------------------------------------------------------------
  512. -- Utility functions specific to this job.
  513. -------------------------------------------------------------------------------------------------------------------
  514.  
  515. -- State buff checks that will equip buff gear and mark the event as handled.
  516. function check_buff(buff_name, eventArgs)
  517. if state.Buff[buff_name] then
  518. equip(sets.buff[buff_name] or {})
  519. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  520. equip(sets.TreasureHunter)
  521. end
  522. eventArgs.handled = true
  523. end
  524. end
  525.  
  526.  
  527. -- Check for various actions that we've specified in user code as being used with TH gear.
  528. -- This will only ever be called if TreasureMode is not 'None'.
  529. -- Category and Param are as specified in the action event packet.
  530. function th_action_check(category, param)
  531. if category == 2 or -- any ranged attack
  532. --category == 4 or -- any magic action
  533. (category == 3 and param == 30) or -- Aeolian Edge
  534. (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
  535. (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
  536. then return true
  537. end
  538. end
  539.  
  540.  
  541. -- Function to lock the ranged slot if we have a ranged weapon equipped.
  542. function check_range_lock()
  543. if player.equipment.range ~= 'empty' then
  544. disable('range', 'ammo')
  545. else
  546. enable('range', 'ammo')
  547. end
  548. end
  549.  
  550.  
  551. -- Select default macro book on initial load or subjob change.
  552. function select_default_macro_book()
  553.  
  554. set_macro_page(1, 3)
  555.  
  556. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement