Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.17 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('DWNormal', 'DWMidAcc', 'DANormal', 'DAMidAcc', 'DAAcc')
  46. state.HybridMode:options('Normal','Crit')
  47. state.RangedMode:options('Normal', 'Acc')
  48. state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
  49. state.PhysicalDefenseMode:options('Acc', 'PDT')
  50. state.MagicalDefenseMode:options('Eva', 'MDT')
  51. state.IdleMode:options('Normal', 'Regen', 'PDT')
  52.  
  53. -- Additional local binds
  54. send_command('bind ^` input /ja "Flee" <me>')
  55. send_command('bind ^= gs c cycle treasuremode')
  56. send_command('bind !- gs c cycle targetmode')
  57.  
  58. select_default_macro_book()
  59. end
  60.  
  61. -- Called when this job file is unloaded (eg: job change)
  62. function user_unload()
  63. send_command('unbind ^`')
  64. send_command('unbind !-')
  65. end
  66.  
  67. -- Define sets and vars used by this job file.
  68. function init_gear_sets()
  69. --------------------------------------
  70. -- Special sets (required by rules)
  71. --------------------------------------
  72.  
  73. TPhead={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}}
  74. PDThead={ name="Adhemar Bonnet +1", augments={'HP+105','Attack+13','Phys. dmg. taken -4',}}
  75.  
  76. DThead={ name="Herculean Helm", augments={'Pet: Attack+30 Pet: Rng.Atk.+30','Pet: "Dbl. Atk."+3','Damage taken-4%','Accuracy+18 Attack+18',}}
  77. DThands={ name="Herculean Gloves", augments={'AGI+9','Damage taken-3%','Accuracy+16 Attack+16','Mag. Acc.+3 "Mag.Atk.Bns."+3',}}
  78. DTlegs={ name="Herculean Trousers", augments={'Accuracy+27','Damage taken-2%','STR+7','Attack+14',}}
  79. DTfeet={ name="Herculean Boots", augments={'Accuracy+24','Phys. dmg. taken -5%','DEX+8','Attack+9',}}
  80.  
  81. WSbody={ name="Herculean Vest", augments={'Accuracy+21','Weapon skill damage +4%','DEX+10',}}
  82.  
  83. Critfeet={ name="Herculean Boots", augments={'Accuracy+21 Attack+21','Crit.hit rate+3','DEX+15','Attack+11',}}
  84. TPfeet={ name="Herculean Boots", augments={'Accuracy+10 Attack+10','"Triple Atk."+4','STR+7','Accuracy+15','Attack+1',}}
  85. Accfeet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','Crit.hit rate+1','DEX+9','Accuracy+15',}}
  86.  
  87. MABhead={ name="Herculean Helm", augments={'"Mag.Atk.Bns."+21','Weapon skill damage +4%','AGI+6',}}
  88. MABhands={ name="Herculean Gloves", augments={'"Cure" spellcasting time -6%','"Mag.Atk.Bns."+23','Mag. Acc.+18 "Mag.Atk.Bns."+18',}}
  89. MABlegs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+24','Weapon skill damage +5%',}}
  90. MABfeet={ name="Herculean Boots", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Weapon skill damage +5%','Mag. Acc.+8','"Mag.Atk.Bns."+12',}}
  91.  
  92. RNGlegs= { name="Herculean Trousers", augments={'Rng.Acc.+24 Rng.Atk.+24','Weapon skill damage +1%','DEX+4','Rng.Acc.+14','Rng.Atk.+15',}}
  93. RNGfeet={ name="Herculean Boots", augments={'Rng.Acc.+21 Rng.Atk.+21','AGI+15','Rng.Acc.+14','Rng.Atk.+5',}}
  94.  
  95. THfeet={ name="Herculean Boots", augments={'Enmity-4','Accuracy+19','"Treasure Hunter"+2','Accuracy+1 Attack+1',}}
  96.  
  97. FChead={ name="Herculean Helm", augments={'Mag. Acc.+24','"Fast Cast"+6','"Mag.Atk.Bns."+1',}}
  98. FCBody = { name="Taeon tabard", augments={'Accuracy+18 Attack+18','"Fast Cast"+5','Phalanx +3',}}
  99. FCfeet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+18','"Fast Cast"+6','STR+2',}}
  100.  
  101. STPback={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}}
  102. WSback={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}
  103. DWback={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}
  104. FCback={ name="Toutatis's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','"Fast Cast"+10',}}
  105. Critback={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}}
  106. Exenback={ name="Toutatis's Cape", augments={'AGI+20','Accuracy+20 Attack+20','AGI+10','"Dbl.Atk."+10',}}
  107. Magicback={ name="Toutatis's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}}
  108. RNGback={ name="Toutatis's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','"Snapshot"+10',}}
  109.  
  110.  
  111. sets.TreasureHunter = {hands="Plunderer's Armlets +1", waist="Chaac Belt", feet=THfeet}
  112. sets.ExtraRegen = {neck="Bathy Choker +1",ring1="Sheltered Ring",ring2="Paguroidea ring"}
  113. sets.Kiting = {feet="Jute Boots +1"}
  114.  
  115. sets.buff['Sneak Attack'] = {ammo="Yetshila +1",
  116. head="Pillager's Bonnet +3",neck="Caro Necklace",ear1="Telos Earring",ear2="Sherida Earring",
  117. body="Meghanada cuirie +2",hands="Skulker's Armlets +1",ring1="Regal Ring",ring2="Ilabrat ring",
  118. back=STPback,waist="Chiner's Belt +1"}
  119.  
  120. sets.buff['Trick Attack'] = {ammo="Yetshila +1",
  121. head="Pillager's Bonnet +3",neck="Combatant's Torque",ear1="Telos Earring",ear2="Sherida Earring",
  122. body="Meghanada cuirie +2",hands="Adhemar Wristbands +1",ring1="Epona's Ring",ring2="Ilabrat ring",
  123. back=Exenback,waist="Chiner's Belt +1"}
  124.  
  125. -- Actions we want to use to tag TH.
  126. sets.precast.Step = sets.TreasureHunter
  127. sets.precast.Flourish1 = sets.TreasureHunter
  128. sets.precast.JA.Provoke = sets.TreasureHunter
  129.  
  130.  
  131. --------------------------------------
  132. -- Precast sets
  133. --------------------------------------
  134.  
  135. -- Precast sets to enhance JAs
  136. sets.precast.JA['Collaborator'] = {head="Skulker's Bonnet +1"}
  137. sets.precast.JA['Accomplice'] = {head="Skulker's Bonnet +1"}
  138. sets.precast.JA['Flee'] = {feet="Pillager's Poulaines +3"}
  139. sets.precast.JA['Hide'] = {}
  140. sets.precast.JA['Conspirator'] = {body="Raider's Vest +2"}
  141. sets.precast.JA['Steal'] = {ammo="Barathrum",feet="Pillager's Poulaines +3"}
  142. sets.precast.JA['Despoil'] = {ammo="Barathrum"}
  143. sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +1"}
  144. sets.precast.JA['Feint'] = {legs="Plunderer's Culottes"}
  145. sets.precast.JA['Mug'] = {ammo="Expeditious Pinion",head="Pillager's Bonnet +3",neck="Caro necklace",ear1="Sherida earring",ear2="Infused Earring",
  146. body="Adhemar Jacket +1",hands="Pillager's armlets +3",ring1="Regal Ring",ring2="Ilabrat Ring",
  147. back=WSback,waist="Chaac Belt",legs="Pursuer's Pants",feet="Pursuer's Gaiters"}
  148. sets.precast.JA['Lunge'] = {ammo="Seething Bomblet +1",head=MABhead,neck="Baetyl Pendant",ear1="Hecate's Earring",ear2="Friomisi Earring",
  149. body="Samnuha Coat",hands=MABhands,ring1="Acumen ring",ring2="Dingir Ring",
  150. back=Magicback,waist="Eschan Stone",legs=MABlegs,feet=MABfeet}
  151. sets.precast.JA['Swipe'] = {sets.precast.JA['Lunge']}
  152.  
  153. sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack']
  154. sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']
  155.  
  156. sets.precast.Item = {HolyWater}
  157.  
  158. sets.precast.Item['Holy Water'] = {ring2="Purity Ring"}
  159.  
  160.  
  161. -- Waltz set (chr and vit)
  162. sets.precast.Waltz = {
  163. body="Meghanada Cuirie +2",hands="Plunderer's Armlets +1",waist="Chaac belt"}
  164.  
  165. -- Don't need any special gear for Healing Waltz.
  166. sets.precast.Waltz['Healing Waltz'] = {}
  167.  
  168.  
  169. -- Fast cast sets for spells
  170. sets.precast.FC = {ammo="Sapience Orb",
  171. head=FChead,neck="Baetyl Pendant",ear2="Loquacious Earring",
  172. body=FCBody,hands="Leyline Gloves",ring1="Lebeche Ring",ring2="Prolix Ring",
  173. back=FCback,legs="Rawhide Trousers",feet=FCfeet}
  174.  
  175. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  176.  
  177. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  178.  
  179.  
  180. -- Ranged snapshot gear
  181. sets.precast.RA = {
  182. head="Taeon Chapeau",
  183. body="Pursuer's Doublet",
  184. back=RNGback,waist="Yemaya belt",legs="Adhemar Kecks +1",feet="Meghanada jambeaux +1"}
  185.  
  186.  
  187. -- Weaponskill sets
  188.  
  189. -- Default set for any weaponskill that isn't any more specifically defined
  190. sets.precast.WS = {ammo="Falcon Eye",
  191. head="Pillager's Bonnet +3",neck="Fotia Gorget",ear1="Sherida Earring",ear2="Moonshade Earring",
  192. body="Meghanada cuirie +2",hands="Meghanada gloves +2",ring1="Regal Ring",ring2="Ilabrat ring",
  193. back=WSback,waist="Fotia Belt",legs="Samnuha Tights",feet=Critfeet}
  194. sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Falcon Eye"})
  195.  
  196. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  197. sets.precast.WS['Exenterator'] = {ammo="Seething Bomblet +1",
  198. head="Meghanada Visor +1",neck="Fotia Gorget",ear1="Telos Earring",ear2="Sherida Earring",
  199. body="Adhemar Jacket +1",hands="Meghanada gloves +2",ring1="Dingir Ring",ring2="Ilabrat ring",
  200. back=Exenback,waist="Fotia Belt",legs="Meghanada chausses +1",feet="Meghanada jambeaux +1"}
  201. sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Falcon Eye"})
  202.  
  203. sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {})
  204. sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {ammo="Falcon Eye", back=STPback})
  205.  
  206. sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Yetshila +1",
  207. head=TPhead,
  208. body="Abnoba Kaftan",hands="Adhemar Wristbands +1",ring1="Begrudging Ring",ring2="Ilabrat ring",
  209. back=Critback,legs="Lustratio Subligar +1"})
  210. sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {})
  211.  
  212. sets.precast.WS['Rudra\'s Storm'] = {ammo="Falcon Eye",
  213. head="Pillager's Bonnet +3",neck="Caro Necklace",ear1="Sherida Earring",ear2="Moonshade Earring",
  214. body=WSbody,hands="Meghanada gloves +2",ring1="Regal Ring",ring2="Ilabrat ring",
  215. back=WSback,waist="Grunfeld rope",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
  216. sets.precast.WS['Rudra\'s Storm'].Mod = set_combine(sets.precast.WS['Rudra\'s Storm'], {ammo="Falcon Eye",
  217. waist="Chiner's Belt +1"})
  218. sets.precast.WS['Rudra\'s Storm'].SA = {ammo="Yetshila +1",
  219. head="Pillager's Bonnet +3",neck="Caro Necklace",ear1="Sherida Earring",ear2="Moonshade Earring",
  220. body="Pillager's Vest +3",hands="Meghanada gloves +2",ring1="Regal Ring",ring2="Ilabrat ring",
  221. back=WSback,waist="Chiner's Belt +1",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
  222. sets.precast.WS['Rudra\'s Storm'].TA = {ammo="Yetshila +1",
  223. head="Pillager's Bonnet +3",neck="Caro Necklace",ear1="Sherida Earring",ear2="Moonshade Earring",
  224. body="Pillager's Vest +3",hands="Meghanada gloves +2",ring1="Regal Ring",ring2="Ilabrat ring",
  225. back=WSback,waist="Chiner's Belt +1",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
  226. sets.precast.WS['Rudra\'s Storm'].SATA = {ammo="Yetshila +1",
  227. head="Pillager's Bonnet +3",neck="Caro Necklace",ear1="Sherida Earring",ear2="Moonshade Earring",
  228. body="Pillager's Vest +3",hands="Meghanada gloves +2",ring1="Regal Ring",ring2="Ilabrat ring",
  229. back=WSback,waist="Chiner's Belt +1",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
  230.  
  231. sets.precast.WS['Shark Bite'] = {ammo="Falcon Eye",
  232. head="Pillager's Bonnet +3",neck="Caro Necklace",ear1="Sherida Earring",ear2="Moonshade Earring",
  233. body=WSbody,hands="Meghanada gloves +2",ring1="Regal Ring",ring2="Ilabrat ring",
  234. back=WSback,waist="Grunfeld Rope",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
  235. sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {ammo="Yetshila +1",
  236. head="Pillager's Bonnet +3",body="Meghanada cuirie +2"})
  237. sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {})
  238. sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {hands="Pillager's Armlets +3"})
  239. sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {})
  240.  
  241. sets.precast.WS['Mandalic Stab'] = {ammo="Falcon Eye",
  242. head="Pillager's Bonnet +3",neck="Caro Necklace",ear1="Sherida Earring",ear2="Moonshade Earring",
  243. body=WSbody,hands="Meghanada gloves +2",ring1="Regal Ring",ring2="Ilabrat ring",
  244. back=WSback,waist="Grunfeld Rope",legs="Lustratio Subligar +1",feet="Lustratio Leggings +1"}
  245. sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {ammo="Yetshila +1",
  246. head="Pillager's Bonnet +3",body="Meghanada cuirie +2"})
  247. sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {})
  248. sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {hands="Pillager's Armlets +3"})
  249. sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {})
  250.  
  251. sets.precast.WS['Aeolian Edge'] = {ammo="Seething Bomblet +1",
  252. head=MABhead,neck="Baetyl Pendant",ear1="Friomisi Earring",ear2="Moonshade Earring",
  253. body="Samnuha Coat",hands=MABhands,ring1="Regal ring",ring2="Dingir Ring",
  254. back=Magicback,waist="Eschan Stone",legs=MABlegs,feet=MABfeet}
  255.  
  256. sets.precast.WS['Last Stand'] = {
  257. head="Meghanada Visor +1",neck="Iskur Gorget",ear1="Telos Earring",ear2="Moonshade Earring",
  258. body="Meghanada cuirie +2",hands="Meghanada gloves +2",ring1="Dingir Ring",ring2="Regal Ring",
  259. back=RNGback,waist="Yemaya Belt",legs="Meghanada Chausses +1",feet="Pillager's Poulaines +3"}
  260.  
  261. sets.precast.WS['Vorpal Blade'] = set_combine(sets.precast.WS['Evisceration'], {ammo="Yetshila +1",ring2="Hetairoi ring"})
  262.  
  263.  
  264.  
  265. --------------------------------------
  266. -- Midcast sets
  267. --------------------------------------
  268.  
  269. sets.midcast.FastRecast = {ammo="Sapience Orb",
  270. head=FChead,neck="Baetyl Pendant",ear1="Sanare earring",ear2="Loquacious Earring",
  271. body=FCBody,hands="Leyline Gloves",ring1="Vocane Ring",ring2="Defending Ring",
  272. back=FCback,waist="Flume Belt +1",legs="Rawhide Trousers",feet=FCfeet}
  273.  
  274. -- Specific spells
  275. sets.midcast.Utsusemi = sets.midcast.FastRecast
  276.  
  277. sets.midcast['Enhancing Magic'] = {neck="Incanter's Torque",ear1="Andoaa Earring",ring1="Stikini Ring",waist="Olympus Sash"}
  278.  
  279.  
  280. -- Ranged gear
  281. sets.midcast.RA = {
  282. head="Pillager's Bonnet +3",neck="Iskur Gorget",ear1="Telos Earring",ear2="Enervating Earring",
  283. body="Meghanada cuirie +2",hands="Meghanada gloves +2",ring1="Dingir Ring",ring2="Regal Ring",
  284. back=RNGback,waist="Yemaya Belt",legs="Adhemar Kecks +1",feet=RNGfeet}
  285.  
  286. sets.midcast.RA.Acc = {
  287. head="Pillager's Bonnet +3",neck="Iskur Gorget",ear1="Telos Earring",ear2="Enervating Earring",
  288. body="Meghanada cuirie +2",hands="Meghanada gloves +2",ring1="Dingir Ring",ring2="Regal Ring",
  289. back=RNGback,waist="Yemaya Belt",legs="Adhemar Kecks +1",feet="Pillager's Poulaines +3"}
  290.  
  291.  
  292. --------------------------------------
  293. -- Idle/resting/defense sets
  294. --------------------------------------
  295.  
  296. -- Resting sets
  297. sets.resting = {neck="Bathy Choker +1",
  298. ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  299.  
  300.  
  301. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  302.  
  303. sets.idle = {ammo="Staunch Tathlum +1",
  304. head=PDThead,neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Infused Earring",
  305. body="Turms Harness",hands="Regal Gloves",ring1="Sheltered Ring",ring2="Moonlight Ring",
  306. back="Moonlight Cape",waist="Flume Belt +1",legs="Qaaxo Tights",feet="Jute Boots +1"}
  307.  
  308. sets.idle.Regen = {ammo="Staunch Tathlum +1",
  309. head=PDThead,neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Infused Earring",
  310. body="Turms harness",hands="Meghanada gloves +2",ring1="Meghanada Ring",ring2="Paguroidea Ring",
  311. back="Moonlight Cape",waist="Flume Belt +1",legs="Samnuha Tights",feet="Jute Boots +1"}
  312.  
  313. sets.idle.PDT = {ring1="Moonlight Ring",ammo="Inlamvuyeso",
  314. head=PDThead,neck="Loricate Torque +1",ear1="Sanare Earring",ear2="Eabani Earring",
  315. body="Meghanada Cuirie +2",hands=DThands,
  316. back="Moonlight Cape",waist="Flume Belt +1",legs="Qaaxo Tights",feet="Jute Boots +1",ring2="Moonlight Ring"}
  317.  
  318. sets.idle.Town = {main="Aeneas",sub="Twashtar",ammo="Staunch Tathlum +1",
  319. head="Pillager's Bonnet +3",neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Sherida Earring",
  320. body="Pillager's Vest +3",hands="Pillager's Armlets +3",ring1="Regal Ring",ring2="Moonlight ring",
  321. back="Moonlight Cape",waist="Reiki Yotai",legs="Pillager's Culottes +3",feet="Pillager's Poulaines +3"}
  322.  
  323. sets.idle.Weak = {ammo="Staunch Tathlum +1",
  324. head=PDThead,neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Odnowa earring +1",
  325. body="Meghanada cuirie +2",hands="Regal Gloves",ring1="Sheltered Ring",ring2="Moonlight Ring",
  326. back="Moonlight Cape",waist="Flume Belt +1",legs="Qaaxo Tights",feet="Turms leggings"}
  327.  
  328.  
  329. -- Defense sets
  330.  
  331. sets.defense.Acc = {ring1="Moonlight Ring",ammo="Staunch Tathlum +1",
  332. head=PDThead,neck="Loricate Torque +1",ear1="Sherida Earring",ear2="Telos Earring",
  333. body="Pillager's Vest +3",hands="Adhemar wristbands +1",
  334. back=STPback,waist="Reiki Yotai",legs="Mummu Kecks +1",feet=DTfeet,ring2="Moonlight Ring"}
  335.  
  336. sets.defense.PDT = {ring1="Moonlight Ring",ammo="Inlamvuyeso",
  337. head=PDThead,neck="Loricate Torque +1",ear1="Genmei Earring",ear2="Odnowa Earring +1",
  338. body="Pillager's Vest +3",hands=DThands,
  339. back="Moonlight Cape",waist="Flume Belt +1",legs="Mummu Kecks +1",feet=DTfeet,ring2="Moonlight Ring"}
  340.  
  341. sets.defense.Eva = {ammo="Yamarang",
  342. head="Pillager's Bonnet +3",neck="Warder's Charm +1",ear1="Sanare Earring",ear2="Eabani Earring",
  343. body="Pillager's Vest +3",hands="Pillager's Armlets +3",ring1="Purity Ring",ring2="Defending Ring",
  344. back=FCback,waist="Engraved Belt",legs="Mummu Kecks +1",feet="Jute Boots +1"}
  345.  
  346. sets.defense.MDT = {ammo="Staunch Tathlum +1",
  347. head="Pillager's Bonnet +3",neck="Warder's Charm +1",ear1="Sanare Earring",ear2="Odnowa Earring +1",
  348. body="Pillager's Vest +3",hands="Pillager's Armlets +3",ring1="Moonlight Ring",ring2="Purity Ring",
  349. back="Moonlight Cape",waist="Engraved Belt",legs="Mummu Kecks +1",feet="Turms leggings"}
  350.  
  351.  
  352. --------------------------------------
  353. -- Melee sets
  354. --------------------------------------
  355.  
  356. -- Normal melee group
  357. sets.engaged.DWNormal = {ammo="Yamarang",
  358. head=TPhead,neck="Anu Torque",ear1="Sherida Earring",ear2="Telos Earring",
  359. body="Adhemar Jacket +1",hands="Adhemar Wristbands +1",ring1="Epona's Ring",ring2="Moonlight Ring",
  360. back=DWback,waist="Reiki Yotai",legs="Samnuha Tights",feet=TPfeet}
  361.  
  362. sets.engaged.DWMidAcc = {ammo="Yamarang",
  363. head=TPhead,neck="Combatant's Torque",ear1="Sherida Earring",ear2="Telos Earring",
  364. body="Adhemar Jacket +1",hands="Adhemar Wristbands +1",ring1="Regal Ring",ring2="Moonlight Ring",
  365. back=DWback,waist="Reiki Yotai",legs="Pillager's Culottes +3",feet=TPfeet}
  366.  
  367. sets.engaged.DANormal = {ammo="Yamarang",
  368. head=TPhead,neck="Anu Torque",ear1="Sherida Earring",ear2="Telos Earring",
  369. body="Adhemar Jacket +1",hands="Adhemar Wristbands +1",ring1="Moonlight Ring",ring2="Hetairoi Ring",
  370. back=STPback,waist="Chiner's Belt +1",legs="Samnuha Tights",feet=TPfeet}
  371.  
  372. sets.engaged.DAMidAcc = {ammo="Yamarang",
  373. head=TPhead,neck="Combatant's Torque",ear1="Sherida Earring",ear2="Telos Earring",
  374. body="Pillager's Vest +3",hands="Adhemar Wristbands +1",ring1="Moonlight Ring",ring2="Regal Ring",
  375. back=STPback,waist="Reiki Yotai",legs="Samnuha Tights",feet=TPfeet}
  376.  
  377. sets.engaged.DAAcc = {ammo="Yamarang",
  378. head="Skulker's Bonnet +1",neck="Combatant's Torque",ear1="Sherida Earring",ear2="Telos Earring",
  379. body="Pillager's Vest +3",hands="Adhemar Wristbands +1",ring1="Moonlight ring",ring2="Regal Ring",
  380. back=STPback,waist="Reiki Yotai",legs="Pillager's Culottes +3",feet=Accfeet}
  381.  
  382.  
  383.  
  384. -- Mod set for trivial mobs
  385.  
  386. sets.engaged.DANormal.Crit = {ammo="Yetshila +1",
  387. head=TPhead,neck="Combatant's Torque",ear1="Sherida Earring",ear2="Telos Earring",
  388. body="Adhemar Jacket +1",hands="Adhemar Wristbands +1",ring1="Epona's Ring",ring2="Hetairoi ring",
  389. back=Critback,waist="Chiner's Belt +1",legs="Mummu Kecks +1",feet="Mummu Gamashes +1"}
  390.  
  391. -- Mod set for trivial mobs
  392.  
  393.  
  394. end
  395.  
  396.  
  397. -------------------------------------------------------------------------------------------------------------------
  398. -- Job-specific hooks for standard casting events.
  399. -------------------------------------------------------------------------------------------------------------------
  400.  
  401. -- Run after the general precast() is done.
  402. function job_post_precast(spell, action, spellMap, eventArgs)
  403. if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
  404. equip(sets.TreasureHunter)
  405. elseif spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
  406. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  407. equip(sets.TreasureHunter)
  408. end
  409. end
  410. end
  411.  
  412. -- Run after the general midcast() set is constructed.
  413. function job_post_midcast(spell, action, spellMap, eventArgs)
  414. if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
  415. equip(sets.TreasureHunter)
  416. end
  417. end
  418.  
  419. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  420. function job_aftercast(spell, action, spellMap, eventArgs)
  421. -- Weaponskills wipe SATA/Feint. Turn those state vars off before default gearing is attempted.
  422. if spell.type == 'WeaponSkill' and not spell.interrupted then
  423. state.Buff['Sneak Attack'] = false
  424. state.Buff['Trick Attack'] = false
  425. state.Buff['Feint'] = false
  426. end
  427. end
  428.  
  429. -- Called after the default aftercast handling is complete.
  430. function job_post_aftercast(spell, action, spellMap, eventArgs)
  431. -- If Feint is active, put that gear set on on top of regular gear.
  432. -- This includes overlaying SATA gear.
  433. check_buff('Feint', eventArgs)
  434. end
  435.  
  436. -------------------------------------------------------------------------------------------------------------------
  437. -- Job-specific hooks for non-casting events.
  438. -------------------------------------------------------------------------------------------------------------------
  439.  
  440. -- Called when a player gains or loses a buff.
  441. -- buff == buff gained or lost
  442. -- gain == true if the buff was gained, false if it was lost.
  443. function job_buff_change(buff, gain)
  444. if state.Buff[buff] ~= nil then
  445. if not midaction() then
  446. handle_equipping_gear(player.status)
  447. end
  448. end
  449. end
  450.  
  451.  
  452. -------------------------------------------------------------------------------------------------------------------
  453. -- User code that supplements standard library decisions.
  454. -------------------------------------------------------------------------------------------------------------------
  455.  
  456. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  457. local wsmode
  458.  
  459. if state.Buff['Sneak Attack'] then
  460. wsmode = 'SA'
  461. end
  462. if state.Buff['Trick Attack'] then
  463. wsmode = (wsmode or '') .. 'TA'
  464. end
  465.  
  466. return wsmode
  467. end
  468.  
  469.  
  470. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  471. function job_handle_equipping_gear(playerStatus, eventArgs)
  472. -- Check that ranged slot is locked, if necessary
  473. check_range_lock()
  474.  
  475. -- Check for SATA when equipping gear. If either is active, equip
  476. -- that gear specifically, and block equipping default gear.
  477. check_buff('Sneak Attack', eventArgs)
  478. check_buff('Trick Attack', eventArgs)
  479. end
  480.  
  481.  
  482. function customize_idle_set(idleSet)
  483. if player.hpp < 80 then
  484. idleSet = set_combine(idleSet, sets.ExtraRegen)
  485. end
  486.  
  487. return idleSet
  488. end
  489.  
  490.  
  491. function customize_melee_set(meleeSet)
  492. if state.TreasureMode.value == 'Fulltime' then
  493. meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  494. end
  495.  
  496. return meleeSet
  497. end
  498.  
  499.  
  500. -- Called by the 'update' self-command.
  501. function job_update(cmdParams, eventArgs)
  502. th_update(cmdParams, eventArgs)
  503. end
  504.  
  505. -- Function to display the current relevant user state when doing an update.
  506. -- Return true if display was handled, and you don't want the default info shown.
  507. function display_current_job_state(eventArgs)
  508. local msg = 'Melee'
  509.  
  510. if state.CombatForm.has_value then
  511. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  512. end
  513.  
  514. msg = msg .. ': '
  515.  
  516. msg = msg .. state.OffenseMode.value
  517. if state.HybridMode.value ~= 'Normal' then
  518. msg = msg .. '/' .. state.HybridMode.value
  519. end
  520. msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  521.  
  522. if state.DefenseMode.value ~= 'None' then
  523. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  524. end
  525.  
  526. if state.Kiting.value == true then
  527. msg = msg .. ', Kiting'
  528. end
  529.  
  530. if state.PCTargetMode.value ~= 'default' then
  531. msg = msg .. ', Target PC: '..state.PCTargetMode.value
  532. end
  533.  
  534. if state.SelectNPCTargets.value == true then
  535. msg = msg .. ', Target NPCs'
  536. end
  537.  
  538. msg = msg .. ', TH: ' .. state.TreasureMode.value
  539.  
  540. add_to_chat(122, msg)
  541.  
  542. eventArgs.handled = true
  543. end
  544.  
  545. -------------------------------------------------------------------------------------------------------------------
  546. -- Utility functions specific to this job.
  547. -------------------------------------------------------------------------------------------------------------------
  548.  
  549. -- State buff checks that will equip buff gear and mark the event as handled.
  550. function check_buff(buff_name, eventArgs)
  551. if state.Buff[buff_name] then
  552. equip(sets.buff[buff_name] or {})
  553. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  554. equip(sets.TreasureHunter)
  555. end
  556. eventArgs.handled = true
  557. end
  558. end
  559.  
  560.  
  561. -- Check for various actions that we've specified in user code as being used with TH gear.
  562. -- This will only ever be called if TreasureMode is not 'None'.
  563. -- Category and Param are as specified in the action event packet.
  564. function th_action_check(category, param)
  565. if category == 2 or -- any ranged attack
  566. --category == 4 or -- any magic action
  567. (category == 3 and param == 30) or -- Aeolian Edge
  568. (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
  569. (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
  570. then return true
  571. end
  572. end
  573.  
  574.  
  575. -- Function to lock the ranged slot if we have a ranged weapon equipped.
  576. function check_range_lock()
  577. if player.equipment.range ~= 'empty' then
  578. disable('range', 'ammo')
  579. else
  580. enable('range', 'ammo')
  581. end
  582. end
  583.  
  584.  
  585. -- Select default macro book on initial load or subjob change.
  586. function select_default_macro_book()
  587. -- Default macro set/book
  588. if player.sub_job == 'DNC' then
  589. set_macro_page(2, 2)
  590. elseif player.sub_job == 'WAR' then
  591. set_macro_page(4, 2)
  592. elseif player.sub_job == 'NIN' then
  593. set_macro_page(3, 2)
  594. else
  595. set_macro_page(1, 2)
  596. end
  597. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement