Advertisement
bongarippa

MNK

Sep 2nd, 2020 (edited)
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.56 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- Initialization function for this job file.
  6. function get_sets()
  7. include('organizer-lib')
  8. mote_include_version = 2
  9.  
  10. -- Load and initialize the include file.
  11. include('Mote-Include.lua')
  12. end
  13.  
  14.  
  15. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  16. function job_setup()
  17. state.Buff.Footwork = buffactive.Footwork or false
  18. state.Buff.Impetus = buffactive.Impetus or false
  19.  
  20. no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  21. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring"}
  22.  
  23. include('Mote-TreasureHunter')
  24. state.TreasureMode:set('Tag')
  25.  
  26. state.FootworkWS = M(false, 'Footwork on WS')
  27.  
  28. info.impetus_hit_count = 0
  29. windower.raw_register_event('action', on_action_for_impetus)
  30. end
  31.  
  32.  
  33. -------------------------------------------------------------------------------------------------------------------
  34. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  35. -------------------------------------------------------------------------------------------------------------------
  36.  
  37. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  38. function binds_on_load()
  39. -- F9-F12
  40. send_command('bind f9 gs c cycle OffenseMode')
  41. send_command('bind f10 gs c cycle HybridMode')
  42. send_command('bind f11 gs c cycle WeaponskillMode')
  43. send_command('bind f12 gs c cycle PhysicalDefenseMode')
  44.  
  45. end
  46.  
  47. function user_setup()
  48. state.OffenseMode:options('Normal', 'SomeAcc', 'Acc', 'Mod', 'Crit')
  49. state.WeaponskillMode:options('Normal')
  50. state.HybridMode:options('Normal', 'PDT', 'Counter', 'Proc')
  51. state.PhysicalDefenseMode:options('PDT')
  52.  
  53. update_combat_form()
  54. update_melee_groups()
  55.  
  56. select_default_macro_book()
  57.  
  58. send_command('lua l gearinfo')
  59. end
  60.  
  61. function user_unload()
  62. send_command('lua u gearinfo')
  63. end
  64.  
  65. -- Called when this job file is unloaded (eg: job change)
  66. function file_unload()
  67. if binds_on_unload then
  68. binds_on_unload()
  69. end
  70. end
  71.  
  72.  
  73. -- Define sets and vars used by this job file.
  74. function init_gear_sets()
  75. --------------------------------------
  76. -- Start defining the sets
  77. --------------------------------------
  78.  
  79. -- Precast Sets
  80. sets.TreasureHunter = {head="Volte Cap",
  81. body="Volte Jupon",
  82. feet="Volte Boots"}
  83. -- Precast sets to enhance JAs on use
  84. sets.precast.JA['Mantra'] = { name="Hes. Gaiters +3", augments={'Enhances "Mantra" effect',}}
  85. sets.precast.JA['Hundred Fists'] = { legs="Hes. Hose +3", augments={'Enhances "Hundred Fists" effect',}}
  86. sets.precast.JA['Boost'] = {hands="Anchorite's Gloves +3"}
  87. sets.precast.JA['Dodge'] = {feet="Anchorite's Gaiters +3"}
  88. sets.precast.JA['Focus'] = {head="Anchorite's Crown +3"}
  89. sets.precast.JA['Counterstance'] = { feet="Hes. Gaiters +3", augments={'Enhances "Mantra" effect',}}
  90. sets.precast.JA['Footwork'] = {feet="Bhikku Gaiters +3",}
  91. sets.precast.JA['Formless Strikes'] = {}
  92.  
  93.  
  94. sets.precast.JA['Chi Blast'] = {
  95. ammo="Tantra Tathlum",
  96. head="Hes. Crown +3",
  97. body="Anch. Cyclas +3",
  98. hands="Hes. Gloves +3",
  99. legs="Hiza. Hizayoroi +2",
  100. feet="Hiza. Sune-Ate +2",
  101. neck="Unmoving Collar",
  102. waist="Caudata Belt",
  103. left_ear="Genmei Earring",
  104. right_ear="Odnowa Earring +1",
  105. left_ring="Regal Ring",
  106. right_ring="Niqmaddu Ring",
  107. back="Moonlight Cape"
  108. }
  109.  
  110. sets.precast.JA['Provoke'] = {
  111. ammo="Iron Gobbet",
  112. head="Halitus Helm",
  113. ear1="Friomisi Earring",
  114. ear2="Trux Earring",
  115. neck="Moonlight Necklace",
  116. body="Emet Harness +1",
  117. hands="Kurys Gloves",
  118. back="Enuma Mantle",
  119. ring1="Provocare Ring",
  120. ring2="Petrov Ring",
  121. waist="Kasiri Belt",
  122. legs="Wukong's Haka. +1",
  123. feet="Rager Ledel. +1"
  124. }
  125.  
  126. sets.precast.JA['Chakra'] = {
  127. ammo="Aurgelmir Orb +1",
  128. head={ name="Hes. Crown +3", augments={'Enhances "Penance" effect',}},
  129. body="Anch. Cyclas +3",
  130. hands={ name="Hes. Gloves +3", augments={'Enhances "Invigorate" effect',}},
  131. legs={ name="Tatena. Haidate +1", augments={'Path: A',}},
  132. feet="Bhikku Gaiters +3",
  133. neck={ name="Unmoving Collar +1", augments={'Path: A',}},
  134. waist="Moonbow Belt +1",
  135. left_ear="Tuisto Earring",
  136. right_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  137. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  138. right_ring="Niqmaddu Ring",
  139. back={ name="Segomo's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','VIT+10','Weapon skill damage +10%',}}
  140. }
  141.  
  142. -- Waltz set (chr and vit)
  143. sets.precast.Waltz = {ammo="Aurgelmir Orb +1",
  144. head="Genmei Kabuto",
  145. body="Malignance Tabard",
  146. hands={ name="Gazu Bracelet +1", augments={'Path: A',}},
  147. legs={ name="Tatena. Haidate +1", augments={'Path: A',}},
  148. feet="Volte Boots",
  149. neck={ name="Unmoving Collar +1", augments={'Path: A',}},
  150. waist="Chaac Belt",
  151. left_ear="Tuisto Earring",
  152. right_ear="Handler's Earring +1",
  153. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  154. right_ring="Niqmaddu Ring",
  155. back={ name="Segomo's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','VIT+10','Weapon skill damage +10%',}},}
  156.  
  157. -- Don't need any special gear for Healing Waltz.
  158. sets.precast.Waltz['Healing Waltz'] = {}
  159.  
  160. sets.precast.Step = {}
  161. sets.precast.Flourish1 = {}
  162.  
  163.  
  164. -- Fast cast sets for spells
  165.  
  166. sets.precast.FC = {
  167. ammo="Impatiens",
  168. head={ name="Herculean Helm", augments={'Pet: INT+10','Pet: Attack+19 Pet: Rng.Atk.+19','"Treasure Hunter"+2','Accuracy+13 Attack+13','Mag. Acc.+13 "Mag.Atk.Bns."+13',}},
  169. hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
  170. feet="Ahosi Leggings",
  171. neck="Orunmila's Torque",
  172. right_ear="Loquac. Earring",
  173. right_ring="Rahab Ring",
  174. }
  175.  
  176. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {})
  177.  
  178.  
  179. -- Weaponskill sets
  180. -- Default set for any weaponskill that isn't any more specifically defined
  181. sets.precast.WS = {ammo="Knobkierrie",
  182. head={ name="Hes. Crown +3", augments={'Enhances "Penance" effect',}},
  183. body="Bhikku Cyclas +3",
  184. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  185. legs="Nyame Flanchard",
  186. feet="Nyame Sollerets",
  187. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  188. waist="Moonbow Belt +1",
  189. left_ear="Sherida Earring",
  190. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  191. left_ring="Gere Ring",
  192. right_ring="Cornelia's Ring",
  193. back={ name="Segomo's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','VIT+10','Weapon skill damage +10%',}}}
  194. sets.precast.MaxTP = {}
  195. sets.precast.WS.SomeAcc = set_combine(sets.precast.WS, sets.precast.WSAcc)
  196. sets.precast.WS.Acc = set_combine(sets.precast.WS.SomeAcc, {})
  197. sets.precast.WS.Mod = set_combine(sets.precast.WS, sets.precast.WSMod)
  198.  
  199. -- Specific weaponskill sets.
  200.  
  201. -- legs={name="Quiahuiz Trousers", augments={'Phys. dmg. taken -2%','Magic dmg. taken -2%','STR+8'}}}
  202.  
  203. sets.precast.WS['Raging Fists'] = set_combine(sets.precast.WS, {legs={ name="Tatena. Haidate +1", augments={'Path: A',}}})
  204.  
  205. sets.precast.WS['Howling Fist'] = set_combine(sets.precast.WS, {ammo="Knobkierrie",
  206. head={ name="Hes. Crown +3", augments={'Enhances "Penance" effect',}},
  207. body={ name="Tatena. Harama. +1", augments={'Path: A',}},
  208. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  209. legs="Mpaca's Hose",
  210. feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  211. neck="Fotia Gorget",
  212. waist="Moonbow Belt +1",
  213. left_ear="Sherida Earring",
  214. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  215. left_ring="Gere Ring",
  216. right_ring="Cornelia's Ring",
  217. back={ name="Segomo's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  218. })
  219. sets.precast.WS['Asuran Fists'] = set_combine(sets.precast.WS, {})
  220.  
  221. sets.precast.WS['Victory Smite'] = {ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  222. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  223. body="Bhikku Cyclas +3",
  224. hands={ name="Ryuo Tekko +1", augments={'DEX+12','Accuracy+25','"Dbl.Atk."+4',}},
  225. legs={ name="Mpaca's Hose", augments={'Path: A',}},
  226. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  227. neck="Fotia Gorget",
  228. waist="Moonbow Belt +1",
  229. left_ear="Sherida Earring",
  230. right_ear={ name="Schere Earring", augments={'Path: A',}},
  231. left_ring="Gere Ring",
  232. right_ring="Cornelia's Ring",
  233. back={ name="Segomo's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Crit.hit rate+10',}}
  234. }
  235. sets.precast.WS['Shijin Spiral'] = set_combine(sets.precast.WS, {
  236. ammo="Knobkierrie",
  237. head={ name="Hes. Crown +3", augments={'Enhances "Penance" effect',}},
  238. body="Malignance Tabard",
  239. hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  240. legs={ name="Tatena. Haidate +1", augments={'Path: A',}},
  241. feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  242. neck="Fotia Gorget",
  243. waist="Moonbow Belt +1",
  244. left_ear="Odr Earring",
  245. right_ear="Mache Earring +1",
  246. left_ring="Regal Ring",
  247. right_ring="Cornelia's Ring",
  248. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  249. })
  250. sets.precast.WS["Ascetic's Fury"] = set_combine(sets.precast.WS, {})
  251.  
  252. sets.precast.WS['Dragon Kick'] = set_combine(sets.precast.WS, {feet="Daihanshi Habaki"})
  253.  
  254. sets.precast.WS['Tornado Kick'] = {ammo="Knobkierrie",
  255. head={ name="Hes. Crown +3", augments={'Enhances "Penance" effect',}},
  256. body={ name="Tatena. Harama. +1", augments={'Path: A',}},
  257. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  258. legs={ name="Tatena. Haidate +1", augments={'Path: A',}},
  259. feet="Anch. Gaiters +3",
  260. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  261. waist="Moonbow Belt +1",
  262. left_ear="Sherida Earring",
  263. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  264. left_ring="Gere Ring",
  265. right_ring="Cornelia's Ring",
  266. back={ name="Segomo's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}}
  267.  
  268. sets.precast.WS['Spinning Attack'] = set_combine({})
  269.  
  270.  
  271. sets.precast.WS['Raging Fists'].Acc = set_combine(sets.precast.WS['Raging Fists'], sets.precast.WSAcc, {})
  272. sets.precast.WS['Howling Fist'].Acc = set_combine(sets.precast.WS['Howling Fist'], sets.precast.WSAcc, {})
  273. sets.precast.WS['Asuran Fists'].Acc = set_combine(sets.precast.WS['Asuran Fists'], sets.precast.WSAcc, {})
  274. sets.precast.WS["Ascetic's Fury"].Acc = set_combine(sets.precast.WS["Ascetic's Fury"], sets.precast.WSAcc, {})
  275. sets.precast.WS['Victory Smite'].Acc = set_combine(sets.precast.WS['Victory Smite'], sets.precast.WSAcc, {})
  276. sets.precast.WS['Shijin Spiral'].Acc = set_combine(sets.precast.WS['Shijin Spiral'], sets.precast.WSAcc, {})
  277. sets.precast.WS['Dragon Kick'].Acc = set_combine(sets.precast.WS['Dragon Kick'], sets.precast.WSAcc, {})
  278. sets.precast.WS['Tornado Kick'].Acc = set_combine(sets.precast.WS['Tornado Kick'], sets.precast.WSAcc, {})
  279.  
  280. sets.precast.WS['Raging Fists'].Mod = set_combine(sets.precast.WS['Raging Fists'], sets.precast.WSMod, {
  281. })
  282. sets.precast.WS['Howling Fist'].Mod = set_combine(sets.precast.WS['Howling Fist'], sets.precast.WSMod, {
  283. })
  284. sets.precast.WS['Asuran Fists'].Mod = set_combine(sets.precast.WS['Asuran Fists'], sets.precast.WSMod, {
  285. })
  286. sets.precast.WS["Ascetic's Fury"].Mod = set_combine(sets.precast.WS["Ascetic's Fury"], sets.precast.WSMod)
  287. sets.precast.WS['Victory Smite'].Mod = set_combine(sets.precast.WS['Victory Smite'], sets.precast.WSMod, {
  288.  
  289. })
  290. sets.precast.WS['Shijin Spiral'].Mod = set_combine(sets.precast.WS['Shijin Spiral'], sets.precast.WSMod, {
  291.  
  292. })
  293. sets.precast.WS['Dragon Kick'].Mod = set_combine(sets.precast.WS['Dragon Kick'], sets.precast.WSMod, {})
  294. sets.precast.WS['Tornado Kick'].Mod = set_combine(sets.precast.WS['Tornado Kick'], sets.precast.WSMod, {})
  295.  
  296.  
  297. sets.precast.WS['Cataclysm'] = {ammo="Pemphredo Tathlum",
  298. head="Pixie Hairpin +1",
  299. body={ name="Nyame Mail", augments={'Path: A',}},
  300. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  301. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  302. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  303. neck="Sanctity Necklace",
  304. waist="Skrymir Cord +1",
  305. left_ear="Friomisi Earring",
  306. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  307. left_ring="Archon Ring",
  308. right_ring="Cornelia's Ring",
  309. back={ name="Segomo's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%'}}}
  310.  
  311. sets.precast.WS['Earth Crusher'] = set_combine(sets.precast.WS['Cataclysm'], {head="Nyame Helm",
  312. left_ring="Shiva Ring +1"})
  313.  
  314.  
  315. -- Midcast Sets
  316. sets.midcast.FastRecast = {}
  317.  
  318. -- Specific spells
  319. sets.midcast.Utsusemi = {}
  320.  
  321.  
  322. -- Sets to return to when not performing an action.
  323.  
  324. -- Resting sets
  325. sets.resting = {}
  326.  
  327.  
  328. -- Idle sets
  329. sets.idle = {
  330. ammo="Staunch Tathlum +1",
  331. head={ name="Nyame Helm", augments={'Path: B',}},
  332. body="Malignance Tabard",
  333. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  334. legs="Malignance Tights",
  335. feet="Herald's Gaiters",
  336. neck="Bathy Choker +1",
  337. waist="Moonbow Belt +1",
  338. left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  339. right_ear="Eabani Earring",
  340. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  341. right_ring="Paguroidea Ring",
  342. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  343. }
  344.  
  345. sets.idle.Town = {
  346. ammo="Staunch Tathlum +1",
  347. head="Volte Cap",
  348. body="Malignance Tabard",
  349. hands="Volte Mittens",
  350. legs="Malignance Tights",
  351. feet="Herald's Gaiters",
  352. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  353. waist="Moonbow Belt +1",
  354. left_ear="Telos Earring",
  355. right_ear={ name="Schere Earring", augments={'Path: A',}},
  356. left_ring="Gere Ring",
  357. right_ring="Niqmaddu Ring",
  358. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  359. }
  360.  
  361. sets.idle.Weak = {
  362. ammo="Staunch Tathlum +1",
  363. head={ name="Nyame Helm", augments={'Path: B',}},
  364. body="Malignance Tabard",
  365. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  366. legs="Malignance Tights",
  367. feet="Herald's Gaiters",
  368. neck="Bathy Choker +1",
  369. waist="Moonbow Belt +1",
  370. left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  371. right_ear="Eabani Earring",
  372. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  373. right_ring="Paguroidea Ring",
  374. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  375. }
  376.  
  377. -- Defense sets
  378. sets.defense.PDT = {}
  379.  
  380. sets.defense.Counter = {
  381. }
  382.  
  383. sets.defense.MDT = {
  384.  
  385. }
  386.  
  387. sets.Kiting = {feet="Hermes' Sandals"}
  388.  
  389. sets.ExtraRegen = {}
  390.  
  391. -- Engaged sets
  392.  
  393. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  394. -- sets if more refined versions aren't defined.
  395. -- If you create a set with both offense and defense modes, the offense mode should be first.
  396. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  397.  
  398. -- Normal melee sets
  399. sets.engaged = { ammo="Coiste Bodhar",
  400. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  401. body={ name="Mpaca's Doublet", augments={'Path: A',}},
  402. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  403. legs="Bhikku Hose +3",
  404. feet="Anch. Gaiters +3",
  405. neck="Mnk. Nodowa +2",
  406. waist="Moonbow Belt +1",
  407. left_ear="Sherida Earring",
  408. right_ear="Schere Earring",
  409. left_ring="Gere Ring",
  410. right_ring="Niqmaddu Ring",
  411. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  412. }
  413. sets.engaged.SomeAcc = set_combine(sets.engaged, {
  414. left_ring="Chirich Ring +1",
  415. left_ear="Telos Earring"})
  416.  
  417. sets.engaged.Acc = set_combine(sets.engaged.SomeAcc, {})
  418.  
  419. sets.engaged.Mod = { ammo="Aurgelmir Orb +1",
  420. head="Ken. Jinpachi +1",
  421. body="Ken. Samue +1",
  422. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  423. legs={ name="Hes. Hose +3", augments={'Enhances "Hundred Fists" effect',}},
  424. feet="Volte Spats",
  425. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  426. waist="Moonbow Belt +1",
  427. left_ear="Sherida Earring",
  428. right_ear="Schere Earring",
  429. left_ring="Chirich Ring +1",
  430. right_ring="Niqmaddu Ring",
  431. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  432.  
  433. }
  434.  
  435. sets.engaged.Crit = {ammo="Aurgelmir Orb +1",
  436. head="Mummu Bonnet +2",
  437. body={ name="Tatena. Harama. +1", augments={'Path: A',}},
  438. hands="Mummu Wrists +2",
  439. legs={ name="Hes. Hose +3", augments={'Enhances "Hundred Fists" effect',}},
  440. feet="Mummu Gamash. +2",
  441. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  442. waist="Moonbow Belt +1",
  443. left_ear="Odr Earring",
  444. right_ear="Mache Earring +1",
  445. left_ring="Gere Ring",
  446. right_ring="Niqmaddu Ring",
  447. back={ name="Segomo's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Crit.hit rate+10',}}}
  448.  
  449. -- Defensive melee hybrid sets
  450. sets.engaged.PDT = {ammo="Staunch Tathlum +1",
  451. head="Bhikku Crown +3",
  452. body="Nyame Mail",
  453. hands="Malignance Gloves",
  454. legs="Bhikku Hose +3",
  455. feet="Bhikku Gaiters +3",
  456. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  457. waist="Moonbow Belt +1",
  458. left_ear="Sherida Earring",
  459. right_ear="Schere Earring",
  460. left_ring="Gere Ring",
  461. right_ring="Niqmaddu Ring",
  462. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Mag. Evasion+10','"Dbl.Atk."+10','Mag. Evasion+15',}},
  463. }
  464. sets.engaged.Proc = {ammo="Staunch Tathlum +1",
  465. head="Volte Cap",
  466. body="Malignance Tabard",
  467. hands="Volte Mittens",
  468. legs="Malignance Tights",
  469. feet="Volte Boots",
  470. neck={ name="Loricate Torque +1", augments={'Path: A',}},
  471. waist="Windbuffet Belt +1",
  472. left_ear="Dedition Earring",
  473. right_ear="Bhikku Earring +1",
  474. left_ring="Chirich Ring +1",
  475. right_ring="Chirich Ring +1",
  476. back="Moonlight Cape",}
  477. sets.engaged.SomeAcc.PDT = {}
  478. sets.engaged.Acc.PDT = {}
  479. sets.engaged.Counter = {}
  480. sets.engaged.Acc.Counter = {}
  481.  
  482.  
  483. -- Hundred Fists/Impetus melee set mods
  484. sets.engaged.HF = set_combine(sets.engaged)
  485. sets.engaged.HF.Impetus = set_combine(sets.engaged, {body="Bhikku Cyclas +3"})
  486. sets.engaged.Acc.HF = set_combine(sets.engaged.Acc)
  487. sets.engaged.Acc.HF.Impetus = set_combine(sets.engaged.Acc, {body="Bhikku Cyclas +3"})
  488. sets.engaged.Counter.HF = set_combine(sets.engaged.Counter)
  489. sets.engaged.Counter.HF.Impetus = set_combine(sets.engaged.Counter, {body="Bhikku Cyclas +3"})
  490. sets.engaged.Acc.Counter.HF = set_combine(sets.engaged.Acc.Counter)
  491. sets.engaged.Acc.Counter.HF.Impetus = set_combine(sets.engaged.Acc.Counter, {body="Bhikku Cyclas +3"})
  492.  
  493.  
  494. -- Footwork combat form
  495. sets.engaged.Footwork = {
  496.  
  497. }
  498. sets.engaged.Footwork.Acc = {
  499.  
  500. }
  501.  
  502. -- Quick sets for post-precast adjustments, listed here so that the gear can be Validated.
  503. sets.impetus_body = {body="Bhikku Cyclas +3"}
  504. sets.footwork_kick_feet = {}
  505. sets.Boost = {hands="Anchor. Gloves +3",waist="Ask Sash"}
  506. end
  507.  
  508. -------------------------------------------------------------------------------------------------------------------
  509. -- Job-specific hooks for standard casting events.
  510. -------------------------------------------------------------------------------------------------------------------
  511.  
  512. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  513. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  514. function job_precast(spell, action, spellMap, eventArgs)
  515. -- Don't gearswap for weaponskills when Defense is on.
  516. if spell.type == 'WeaponSkill' and state.DefenseMode.current ~= 'None' then
  517. eventArgs.handled = true
  518. end
  519. end
  520.  
  521. --modify your melee set based on logic
  522. function customize_melee_set(meleeSet)
  523. if info.impetus_hit_count > 6 and buffactive.impetus then
  524. meleeSet = set_combine(meleeSet,sets.impetus_body)
  525. end
  526. return meleeSet
  527. end
  528.  
  529. -- Run after the general precast() is done.
  530. function job_post_precast(spell, action, spellMap, eventArgs)
  531. -- add_to_chat(122,'spell type '..spell.type)
  532. -- add_to_chat(122,'impetus on '..tostring(state.Buff.Impetus))
  533. -- add_to_chat(122,'spell english '..spell.english)
  534. if spell.type == 'WeaponSkill' then
  535. if state.Buff.Impetus and (spell.english == "Ascetic's Fury" or spell.english == "Victory Smite") then
  536. -- Need 6 hits at capped dDex, or 9 hits if dDex is uncapped, for Tantra to tie or win.
  537. --if (state.OffenseMode.current == 'Fodder' and info.impetus_hit_count > 5) or (info.impetus_hit_count > 8) then
  538. if info.impetus_hit_count > 6 then
  539. equip(sets.impetus_body)
  540. add_to_chat(122,'Impetus Body Equipped, Hits: '..tostring(info.impetus_hit_counter))
  541. else
  542. add_to_chat(122,'Impetus Body Not Equipped, Hits: '..tostring(info.impetus_hit_counter))
  543. end
  544. elseif state.Buff.Footwork and (spell.english == "Dragon's Kick" or spell.english == "Tornado Kick") then
  545. equip(sets.footwork_kick_feet)
  546. end
  547.  
  548. -- Replace Moonshade Earring if we're at cap TP
  549. if player.tp == 3000 then
  550. equip(sets.precast.MaxTP)
  551. end
  552.  
  553. end
  554. end
  555.  
  556. function job_aftercast(spell, action, spellMap, eventArgs)
  557. if spell.type == 'WeaponSkill' and not spell.interrupted and state.FootworkWS and state.Buff.Footwork then
  558. end
  559. end
  560.  
  561. function job_aftercast(spell, action, spellMap, eventArgs)
  562. if not spell.interrupted then
  563. if spell.english == 'Boost' then
  564. enable('waist')
  565. equip(sets.Boost)
  566. disable('waist')
  567. end
  568. end
  569. end
  570.  
  571. -------------------------------------------------------------------------------------------------------------------
  572. -- Job-specific hooks for non-casting events.
  573. -------------------------------------------------------------------------------------------------------------------
  574.  
  575. -- Called when a player gains or loses a buff.
  576. -- buff == buff gained or lost
  577. -- gain == true if the buff was gained, false if it was lost.
  578. function job_buff_change(buff, gain)
  579. -- Set Footwork as combat form any time it's active and Hundred Fists is not.
  580. if buff == 'Footwork' and gain and not buffactive['hundred fists'] then
  581. state.CombatForm:set('Footwork')
  582. elseif buff == "Hundred Fists" and not gain and buffactive.footwork then
  583. state.CombatForm:set('Footwork')
  584. else
  585. state.CombatForm:reset()
  586. end
  587.  
  588. -- Hundred Fists and Impetus modify the custom melee groups
  589. if buff == "Hundred Fists" or buff == "Impetus" then
  590. classes.CustomMeleeGroups:clear()
  591.  
  592. if (buff == "Hundred Fists" and gain) or buffactive['hundred fists'] then
  593. classes.CustomMeleeGroups:append('HF')
  594. end
  595.  
  596. if (buff == "Impetus" and gain) or buffactive.impetus then
  597. classes.CustomMeleeGroups:append('Impetus')
  598. end
  599. end
  600. if buff == "Boost" and not gain then
  601. enable('waist')
  602. handle_equipping_gear(player.status)
  603. end
  604. -- Update gear if any of the above changed
  605. if buff == "Hundred Fists" or buff == "Impetus" or buff == "Footwork" then
  606. handle_equipping_gear(player.status)
  607. end
  608. end
  609.  
  610.  
  611. -------------------------------------------------------------------------------------------------------------------
  612. -- User code that supplements standard library decisions.
  613. -------------------------------------------------------------------------------------------------------------------
  614.  
  615. function customize_idle_set(idleSet)
  616. if player.hpp < 75 then
  617. idleSet = set_combine(idleSet, sets.ExtraRegen)
  618. end
  619.  
  620. return idleSet
  621. end
  622.  
  623. -- Called by the 'update' self-command.
  624. function job_update(cmdParams, eventArgs)
  625. update_combat_form()
  626. update_melee_groups()
  627. end
  628.  
  629.  
  630. -------------------------------------------------------------------------------------------------------------------
  631. -- Utility functions specific to this job.
  632. -------------------------------------------------------------------------------------------------------------------
  633.  
  634. function update_combat_form()
  635. if buffactive.footwork and not buffactive['hundred fists'] then
  636. state.CombatForm:set('Footwork')
  637. else
  638. state.CombatForm:reset()
  639. end
  640. end
  641.  
  642. function update_melee_groups()
  643. classes.CustomMeleeGroups:clear()
  644.  
  645. if buffactive['hundred fists'] then
  646. classes.CustomMeleeGroups:append('HF')
  647. end
  648.  
  649. if buffactive.impetus then
  650. classes.CustomMeleeGroups:append('Impetus')
  651. end
  652. end
  653.  
  654.  
  655. -- Select default macro book on initial load or subjob change.
  656. function select_default_macro_book()
  657. -- Default macro set/book
  658. if player.sub_job == 'DNC' then
  659. set_macro_page(1, 16)
  660. elseif player.sub_job == 'NIN' then
  661. set_macro_page(1, 16)
  662. elseif player.sub_job == 'THF' then
  663. set_macro_page(1, 16)
  664. elseif player.sub_job == 'RUN' then
  665. set_macro_page(1, 16)
  666. else
  667. set_macro_page(1, 16)
  668. end
  669. end
  670.  
  671.  
  672. -------------------------------------------------------------------------------------------------------------------
  673. -- Custom event hooks.
  674. -------------------------------------------------------------------------------------------------------------------
  675.  
  676. switched_impetus = 0
  677. unswitched_impetus = 1
  678. -- Keep track of the current hit count while Impetus is up.
  679. function on_action_for_impetus(action)
  680. if state.Buff.Impetus then
  681. -- count melee hits by player
  682. if action.actor_id == player.id then
  683. if action.category == 1 then
  684. for _,target in pairs(action.targets) do
  685. for _,action in pairs(target.actions) do
  686. -- Reactions (bitset):
  687. -- 1 = evade
  688. -- 2 = parry
  689. -- 4 = block/guard
  690. -- 8 = hit
  691. -- 16 = JA/weaponskill?
  692. -- If action.reaction has bits 1 or 2 set, it missed or was parried. Reset count.
  693. if (action.reaction % 4) > 0 then
  694. info.impetus_hit_count = 0
  695. switched_impetus = 0
  696. else
  697. info.impetus_hit_count = info.impetus_hit_count + 1
  698. end
  699. end
  700. end
  701. elseif action.category == 3 then
  702. -- Missed weaponskill hits will reset the counter. Can we tell?
  703. -- Reaction always seems to be 24 (what does this value mean? 8=hit, 16=?)
  704. -- Can't tell if any hits were missed, so have to assume all hit.
  705. -- Increment by the minimum number of weaponskill hits: 2.
  706. for _,target in pairs(action.targets) do
  707. for _,action in pairs(target.actions) do
  708. -- This will only be if the entire weaponskill missed or was parried.
  709. if (action.reaction % 4) > 0 then
  710. info.impetus_hit_count = 0
  711. switched_impetus = 0
  712. else
  713. info.impetus_hit_count = info.impetus_hit_count + 2
  714. end
  715. end
  716. end
  717. end
  718. elseif action.actor_id ~= player.id and action.category == 1 then
  719. -- If mob hits the player, check for counters.
  720. for _,target in pairs(action.targets) do
  721. if target.id == player.id then
  722. for _,action in pairs(target.actions) do
  723. -- Spike effect animation:
  724. -- 63 = counter
  725. -- ?? = missed counter
  726. if action.has_spike_effect then
  727. -- spike_effect_message of 592 == missed counter
  728. if action.spike_effect_message == 592 then
  729. info.impetus_hit_count = 0
  730. switched_impetus = 0
  731. elseif action.spike_effect_animation == 63 then
  732. info.impetus_hit_count = info.impetus_hit_count + 1
  733. end
  734. end
  735. end
  736. end
  737. end
  738. end
  739.  
  740. --add_to_chat(123,'Current Impetus hit count = ' .. tostring(info.impetus_hit_count))
  741. if info.impetus_hit_count > 6 and switched_impetus == 0 then
  742. --switched_impetus = 1
  743. --add_to_chat(225,"Chugging Impetus Koolaid")
  744. --handle_equipping_gear(player.status)
  745. --switched_impetus = 1
  746. send_command('gs c equip_impetus_body')
  747. elseif info.impetus_hit_count < 7 then
  748. send_command('gs c unequip_impetus_body')
  749. end
  750. else
  751. info.impetus_hit_count = 0
  752. switched_impetus = 0
  753. end
  754. end
  755.  
  756. function job_self_command(cmdParams, eventArgs)
  757. command = cmdParams[1]:lower()
  758. if command =='equip_impetus_body' then
  759. add_to_chat(225,"Equipping Impetus Body")
  760. switched_impetus = 1
  761. unswitched_impetus = 0
  762. equip(sets.impetus_body)
  763. elseif command =='unequip_impetus_body' then
  764. if unswitched_impetus == 0 then
  765. add_to_chat(225,"Removing Impetus Body")
  766. handle_equipping_gear(player.status)
  767. unswitched_impetus = 1
  768. end
  769. switched_impetus = 0
  770. end
  771. end
  772.  
  773. -- Select default macro book on initial load or subjob change.
  774. function select_default_macro_book()
  775. -- Default macro set/book
  776. if player.sub_job == 'WAR' then
  777. set_macro_page(1, 16)
  778. else
  779. set_macro_page(1, 16)
  780. end
  781. end
  782.  
  783. function gearinfo(cmdParams, eventArgs)
  784. if cmdParams[1] == 'gearinfo' then
  785. if type(cmdParams[4]) == 'string' then
  786. if cmdParams[4] == 'true' then
  787. moving = true
  788. elseif cmdParams[4] == 'false' then
  789. moving = false
  790. end
  791. end
  792. if not midaction() then
  793. job_update()
  794. end
  795. end
  796. end
  797.  
  798. function check_moving()
  799. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  800. if state.Auto_Kite.value == false and moving then
  801. state.Auto_Kite:set(true)
  802. elseif state.Auto_Kite.value == true and moving == false then
  803. state.Auto_Kite:set(false)
  804. end
  805. end
  806. end
  807.  
  808. function check_gear()
  809. if no_swap_gear:contains(player.equipment.left_ring) then
  810. disable("left_ring")
  811. else
  812. enable("left_ring")
  813. end
  814. if no_swap_gear:contains(player.equipment.right_ring) then
  815. disable("right_ring")
  816. else
  817. enable("right_ring")
  818. end
  819. end
  820.  
  821. windower.register_event('zone change',
  822. function()
  823. if no_swap_gear:contains(player.equipment.left_ring) then
  824. enable("left_ring")
  825. equip(sets.idle)
  826. end
  827. if no_swap_gear:contains(player.equipment.right_ring) then
  828. enable("right_ring")
  829. equip(sets.idle)
  830. end
  831. end
  832.  
  833.  
  834. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement