Advertisement
Guest User

Untitled

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