bongarippa

MNK

Sep 2nd, 2020 (edited)
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.75 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', 'SubtleBlow', 'Crit')
  49. state.WeaponskillMode:options('Normal', 'PDT')
  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="Nyame Helm",
  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.SubtleBlow = 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)
  204.  
  205. sets.precast.WS['Howling Fist'] = set_combine(sets.precast.WS, {ammo="Knobkierrie",
  206. head="Nyame Helm",
  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['Howling Fist'].PDT = set_combine(sets.precast.WS['Howling Fist'], {
  220. body="Mpaca's Doublet",
  221. feet="Nyame Sollerets"})
  222.  
  223. sets.precast.WS['Asuran Fists'] = set_combine(sets.precast.WS, {})
  224.  
  225. sets.precast.WS['Victory Smite'] = {ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  226. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  227. body="Bhikku Cyclas +3",
  228. hands={ name="Ryuo Tekko +1", augments={'DEX+12','Accuracy+25','"Dbl.Atk."+4',}},
  229. legs={ name="Mpaca's Hose", augments={'Path: A',}},
  230. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  231. neck="Fotia Gorget",
  232. waist="Moonbow Belt +1",
  233. left_ear="Sherida Earring",
  234. right_ear={ name="Schere Earring", augments={'Path: A',}},
  235. left_ring="Gere Ring",
  236. right_ring="Cornelia's Ring",
  237. back={ name="Segomo's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Crit.hit rate+10',}}}
  238.  
  239. sets.precast.WS['Victory Smite'].PDT = set_combine(sets.precast.WS['Victory Smite'], {
  240. head="Nyame Helm",
  241. hands="Nyame Gauntlets"})
  242.  
  243. sets.precast.WS['Shijin Spiral'] = set_combine(sets.precast.WS, {
  244. ammo="Knobkierrie",
  245. head="Nyame Helm",
  246. body="Malignance Tabard",
  247. hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  248. legs={ name="Tatena. Haidate +1", augments={'Path: A',}},
  249. feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  250. neck="Fotia Gorget",
  251. waist="Moonbow Belt +1",
  252. left_ear="Odr Earring",
  253. right_ear="Mache Earring +1",
  254. left_ring="Regal Ring",
  255. right_ring="Cornelia's Ring",
  256. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  257. })
  258. sets.precast.WS["Ascetic's Fury"] = set_combine(sets.precast.WS, {})
  259.  
  260. sets.precast.WS['Dragon Kick'] = set_combine(sets.precast.WS)
  261.  
  262. sets.precast.WS['Tornado Kick'] = {ammo="Knobkierrie",
  263. head="Nyame Helm",
  264. body="Mpaca's Doublet",
  265. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  266. legs="Nyame Flanchard",
  267. feet="Anch. Gaiters +3",
  268. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  269. waist="Moonbow Belt +1",
  270. left_ear="Sherida Earring",
  271. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  272. left_ring="Gere Ring",
  273. right_ring="Cornelia's Ring",
  274. back={ name="Segomo's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}}
  275.  
  276. sets.precast.WS['Tornado Kick'].PDT = set_combine(sets.precast.WS['Tornado Kick'], {})
  277.  
  278. sets.precast.WS['Spinning Attack'] = set_combine({})
  279.  
  280.  
  281. sets.precast.WS['Raging Fists'].Acc = set_combine(sets.precast.WS['Raging Fists'], sets.precast.WSAcc, {})
  282. sets.precast.WS['Howling Fist'].Acc = set_combine(sets.precast.WS['Howling Fist'], sets.precast.WSAcc, {})
  283. sets.precast.WS['Asuran Fists'].Acc = set_combine(sets.precast.WS['Asuran Fists'], sets.precast.WSAcc, {})
  284. sets.precast.WS["Ascetic's Fury"].Acc = set_combine(sets.precast.WS["Ascetic's Fury"], sets.precast.WSAcc, {})
  285. sets.precast.WS['Victory Smite'].Acc = set_combine(sets.precast.WS['Victory Smite'], sets.precast.WSAcc, {})
  286. sets.precast.WS['Shijin Spiral'].Acc = set_combine(sets.precast.WS['Shijin Spiral'], sets.precast.WSAcc, {})
  287. sets.precast.WS['Dragon Kick'].Acc = set_combine(sets.precast.WS['Dragon Kick'], sets.precast.WSAcc, {})
  288. sets.precast.WS['Tornado Kick'].Acc = set_combine(sets.precast.WS['Tornado Kick'], sets.precast.WSAcc, {})
  289.  
  290. sets.precast.WS['Raging Fists'].SubtleBlow = set_combine(sets.precast.WS['Raging Fists'], sets.precast.WSMod, {
  291. })
  292. sets.precast.WS['Howling Fist'].SubtleBlow = set_combine(sets.precast.WS['Howling Fist'], sets.precast.WSMod, {
  293. })
  294. sets.precast.WS['Asuran Fists'].SubtleBlow = set_combine(sets.precast.WS['Asuran Fists'], sets.precast.WSMod, {
  295. })
  296. sets.precast.WS["Ascetic's Fury"].SubtleBlow = set_combine(sets.precast.WS["Ascetic's Fury"], sets.precast.WSMod)
  297. sets.precast.WS['Victory Smite'].SubtleBlow = set_combine(sets.precast.WS['Victory Smite'], sets.precast.WSMod, {
  298.  
  299. })
  300. sets.precast.WS['Shijin Spiral'].SubtleBlow = set_combine(sets.precast.WS['Shijin Spiral'], sets.precast.WSMod, {
  301.  
  302. })
  303. sets.precast.WS['Dragon Kick'].SubtleBlow = set_combine(sets.precast.WS['Dragon Kick'], sets.precast.WSMod, {})
  304. sets.precast.WS['Tornado Kick'].SubtleBlow = set_combine(sets.precast.WS['Tornado Kick'], sets.precast.WSMod, {})
  305.  
  306.  
  307. sets.precast.WS['Cataclysm'] = {ammo="Pemphredo Tathlum",
  308. head="Pixie Hairpin +1",
  309. body={ name="Nyame Mail", augments={'Path: A',}},
  310. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  311. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  312. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  313. neck="Sanctity Necklace",
  314. waist="Skrymir Cord +1",
  315. left_ear="Friomisi Earring",
  316. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  317. left_ring="Archon Ring",
  318. right_ring="Cornelia's Ring",
  319. back={ name="Segomo's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%'}}}
  320.  
  321. sets.precast.WS['Earth Crusher'] = set_combine(sets.precast.WS['Cataclysm'], {head="Nyame Helm",
  322. left_ring="Shiva Ring +1"})
  323.  
  324.  
  325. -- Midcast Sets
  326. sets.midcast.FastRecast = {}
  327.  
  328. -- Specific spells
  329. sets.midcast.Utsusemi = {}
  330.  
  331.  
  332. -- Sets to return to when not performing an action.
  333.  
  334. -- Resting sets
  335. sets.resting = {}
  336.  
  337.  
  338. -- Idle sets
  339. sets.idle = {
  340. ammo="Staunch Tathlum +1",
  341. head="Malignance Chapeau",
  342. body="Malignance Tabard",
  343. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  344. legs="Malignance Tights",
  345. feet="Herald's Gaiters",
  346. neck="Bathy Choker +1",
  347. waist="Moonbow Belt +1",
  348. left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  349. right_ear="Eabani Earring",
  350. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  351. right_ring="Paguroidea Ring",
  352. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  353. }
  354.  
  355. sets.idle.Town = {
  356. ammo="Staunch Tathlum +1",
  357. head="Volte Cap",
  358. body="Mpaca's Doublet",
  359. hands="Volte Mittens",
  360. legs="Malignance Tights",
  361. feet="Herald's Gaiters",
  362. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  363. waist="Moonbow Belt +1",
  364. left_ear="Telos Earring",
  365. right_ear={ name="Schere Earring", augments={'Path: A',}},
  366. left_ring="Gere Ring",
  367. right_ring="Niqmaddu Ring",
  368. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  369. }
  370.  
  371. sets.idle.Weak = {
  372. ammo="Staunch Tathlum +1",
  373. head={ name="Nyame Helm", augments={'Path: B',}},
  374. body="Malignance Tabard",
  375. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  376. legs="Malignance Tights",
  377. feet="Herald's Gaiters",
  378. neck="Bathy Choker +1",
  379. waist="Moonbow Belt +1",
  380. left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  381. right_ear="Eabani Earring",
  382. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  383. right_ring="Paguroidea Ring",
  384. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  385. }
  386.  
  387. -- Defense sets
  388. sets.defense.PDT = {}
  389.  
  390. sets.defense.Counter = {
  391. }
  392.  
  393. sets.defense.MDT = {
  394.  
  395. }
  396.  
  397. sets.Kiting = {feet="Hermes' Sandals"}
  398.  
  399. sets.ExtraRegen = {}
  400.  
  401. -- Engaged sets
  402.  
  403. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  404. -- sets if more refined versions aren't defined.
  405. -- If you create a set with both offense and defense modes, the offense mode should be first.
  406. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  407.  
  408. -- Normal melee sets
  409. sets.engaged = {ammo="Coiste Bodhar",
  410. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  411. body={ name="Mpaca's Doublet", augments={'Path: A',}},
  412. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  413. legs="Bhikku Hose +3",
  414. feet="Anch. Gaiters +3",
  415. neck="Mnk. Nodowa +2",
  416. waist="Moonbow Belt +1",
  417. left_ear="Sherida Earring",
  418. right_ear="Schere Earring",
  419. left_ring="Gere Ring",
  420. right_ring="Niqmaddu Ring",
  421. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  422. }
  423. sets.engaged.SomeAcc = set_combine(sets.engaged, {
  424. left_ring="Chirich Ring +1",
  425. left_ear="Telos Earring"})
  426.  
  427. sets.engaged.Acc = set_combine(sets.engaged.SomeAcc, {})
  428.  
  429. sets.engaged.SubtleBlow = {ammo="Aurgelmir Orb +1",
  430. head="Bhikku Crown +3",
  431. body={ name="Mpaca's Doublet", augments={'Path: A',}},
  432. hands="Malignance Gloves",
  433. legs={ name="Mpaca's Hose", augments={'Path: A',}},
  434. feet="Malignance Boots",
  435. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  436. waist="Moonbow Belt +1",
  437. left_ear="Sherida Earring",
  438. right_ear={ name="Schere Earring", augments={'Path: A',}},
  439. left_ring="Chirich Ring +1",
  440. right_ring="Niqmaddu Ring",
  441. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  442.  
  443. }
  444.  
  445. sets.engaged.Crit = {ammo="Aurgelmir Orb +1",
  446. head="Mummu Bonnet +2",
  447. body={ name="Tatena. Harama. +1", augments={'Path: A',}},
  448. hands="Mummu Wrists +2",
  449. legs={ name="Hes. Hose +3", augments={'Enhances "Hundred Fists" effect',}},
  450. feet="Mummu Gamash. +2",
  451. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  452. waist="Moonbow Belt +1",
  453. left_ear="Odr Earring",
  454. right_ear="Mache Earring +1",
  455. left_ring="Gere Ring",
  456. right_ring="Niqmaddu Ring",
  457. back={ name="Segomo's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Crit.hit rate+10',}}}
  458.  
  459. -- Defensive melee hybrid sets
  460. sets.engaged.PDT = {ammo="Coiste Bodhar",
  461. head="Bhikku Crown +3",
  462. body="Mpaca's Doublet",
  463. hands="Malignance Gloves",
  464. legs="Bhikku Hose +3",
  465. feet="Malignance Boots",
  466. neck={ name="Mnk. Nodowa +2", augments={'Path: A',}},
  467. waist="Moonbow Belt +1",
  468. left_ear="Sherida Earring",
  469. right_ear="Schere Earring",
  470. left_ring="Gere Ring",
  471. right_ring="Niqmaddu Ring",
  472. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Mag. Evasion+10','"Dbl.Atk."+10','Mag. Evasion+15',}},
  473. }
  474. sets.engaged.Proc = {ammo="Staunch Tathlum +1",
  475. head="Volte Cap",
  476. body="Malignance Tabard",
  477. hands="Volte Mittens",
  478. legs="Malignance Tights",
  479. feet="Volte Boots",
  480. neck={ name="Loricate Torque +1", augments={'Path: A',}},
  481. waist="Windbuffet Belt +1",
  482. left_ear="Dedition Earring",
  483. right_ear="Bhikku Earring +1",
  484. left_ring="Chirich Ring +1",
  485. right_ring="Chirich Ring +1",
  486. back="Moonlight Cape",}
  487. sets.engaged.SomeAcc.PDT = {}
  488. sets.engaged.Acc.PDT = {}
  489. sets.engaged.Counter = {}
  490. sets.engaged.Acc.Counter = {}
  491.  
  492.  
  493. -- Hundred Fists/Impetus melee set mods
  494. sets.engaged.HF = set_combine(sets.engaged)
  495. sets.engaged.HF.Impetus = set_combine(sets.engaged, {body="Bhikku Cyclas +3"})
  496. sets.engaged.Acc.HF = set_combine(sets.engaged.Acc)
  497. sets.engaged.Acc.HF.Impetus = set_combine(sets.engaged.Acc, {body="Bhikku Cyclas +3"})
  498. sets.engaged.Counter.HF = set_combine(sets.engaged.Counter)
  499. sets.engaged.Counter.HF.Impetus = set_combine(sets.engaged.Counter, {body="Bhikku Cyclas +3"})
  500. sets.engaged.Acc.Counter.HF = set_combine(sets.engaged.Acc.Counter)
  501. sets.engaged.Acc.Counter.HF.Impetus = set_combine(sets.engaged.Acc.Counter, {body="Bhikku Cyclas +3"})
  502.  
  503.  
  504. -- Footwork combat form
  505. sets.engaged.Footwork = {
  506.  
  507. }
  508. sets.engaged.Footwork.Acc = {
  509.  
  510. }
  511.  
  512. -- Quick sets for post-precast adjustments, listed here so that the gear can be Validated.
  513. sets.impetus_body = {ammo="Coiste Bodhar",
  514. body="Bhikku Cyclas +3",
  515. back={ name="Segomo's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}}
  516. sets.footwork_kick_feet = {}
  517. sets.Boost = {hands="Anchor. Gloves +3",waist="Ask Sash"}
  518. end
  519.  
  520. -------------------------------------------------------------------------------------------------------------------
  521. -- Job-specific hooks for standard casting events.
  522. -------------------------------------------------------------------------------------------------------------------
  523.  
  524. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  525. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  526. function job_precast(spell, action, spellMap, eventArgs)
  527. -- Don't gearswap for weaponskills when Defense is on.
  528. if spell.type == 'WeaponSkill' and state.DefenseMode.current ~= 'None' then
  529. eventArgs.handled = true
  530. end
  531. end
  532.  
  533. --modify your melee set based on logic
  534. function customize_melee_set(meleeSet)
  535. if info.impetus_hit_count > 6 and buffactive.impetus then
  536. meleeSet = set_combine(meleeSet,sets.impetus_body)
  537. end
  538. return meleeSet
  539. end
  540.  
  541. -- Run after the general precast() is done.
  542. function job_post_precast(spell, action, spellMap, eventArgs)
  543. -- add_to_chat(122,'spell type '..spell.type)
  544. -- add_to_chat(122,'impetus on '..tostring(state.Buff.Impetus))
  545. -- add_to_chat(122,'spell english '..spell.english)
  546. if spell.type == 'WeaponSkill' then
  547. if state.Buff.Impetus and (spell.english == "Ascetic's Fury" or spell.english == "Victory Smite") then
  548. -- Need 6 hits at capped dDex, or 9 hits if dDex is uncapped, for Tantra to tie or win.
  549. --if (state.OffenseMode.current == 'Fodder' and info.impetus_hit_count > 5) or (info.impetus_hit_count > 8) then
  550. if info.impetus_hit_count > 6 then
  551. equip(sets.impetus_body)
  552. add_to_chat(122,'Impetus Body Equipped, Hits: '..tostring(info.impetus_hit_counter))
  553. else
  554. add_to_chat(122,'Impetus Body Not Equipped, Hits: '..tostring(info.impetus_hit_counter))
  555. end
  556. elseif state.Buff.Footwork and (spell.english == "Dragon's Kick" or spell.english == "Tornado Kick") then
  557. equip(sets.footwork_kick_feet)
  558. end
  559.  
  560. -- Replace Moonshade Earring if we're at cap TP
  561. if player.tp == 3000 then
  562. equip(sets.precast.MaxTP)
  563. end
  564.  
  565. end
  566. end
  567.  
  568. function job_aftercast(spell, action, spellMap, eventArgs)
  569. if spell.type == 'WeaponSkill' and not spell.interrupted and state.FootworkWS and state.Buff.Footwork then
  570. end
  571. end
  572.  
  573. function job_aftercast(spell, action, spellMap, eventArgs)
  574. if not spell.interrupted then
  575. if spell.english == 'Boost' then
  576. enable('waist')
  577. equip(sets.Boost)
  578. disable('waist')
  579. end
  580. end
  581. end
  582.  
  583. -------------------------------------------------------------------------------------------------------------------
  584. -- Job-specific hooks for non-casting events.
  585. -------------------------------------------------------------------------------------------------------------------
  586.  
  587. -- Called when a player gains or loses a buff.
  588. -- buff == buff gained or lost
  589. -- gain == true if the buff was gained, false if it was lost.
  590. function job_buff_change(buff, gain)
  591. -- Set Footwork as combat form any time it's active and Hundred Fists is not.
  592. if buff == 'Footwork' and gain and not buffactive['hundred fists'] then
  593. state.CombatForm:set('Footwork')
  594. elseif buff == "Hundred Fists" and not gain and buffactive.footwork then
  595. state.CombatForm:set('Footwork')
  596. else
  597. state.CombatForm:reset()
  598. end
  599.  
  600. -- Hundred Fists and Impetus modify the custom melee groups
  601. if buff == "Hundred Fists" or buff == "Impetus" then
  602. classes.CustomMeleeGroups:clear()
  603.  
  604. if (buff == "Hundred Fists" and gain) or buffactive['hundred fists'] then
  605. classes.CustomMeleeGroups:append('HF')
  606. end
  607.  
  608. if (buff == "Impetus" and gain) or buffactive.impetus then
  609. classes.CustomMeleeGroups:append('Impetus')
  610. end
  611. end
  612. if buff == "Boost" and not gain then
  613. enable('waist')
  614. handle_equipping_gear(player.status)
  615. end
  616. -- Update gear if any of the above changed
  617. if buff == "Hundred Fists" or buff == "Impetus" or buff == "Footwork" then
  618. handle_equipping_gear(player.status)
  619. end
  620. end
  621.  
  622.  
  623. -------------------------------------------------------------------------------------------------------------------
  624. -- User code that supplements standard library decisions.
  625. -------------------------------------------------------------------------------------------------------------------
  626.  
  627. function customize_idle_set(idleSet)
  628. if player.hpp < 75 then
  629. idleSet = set_combine(idleSet, sets.ExtraRegen)
  630. end
  631.  
  632. return idleSet
  633. end
  634.  
  635. -- Called by the 'update' self-command.
  636. function job_update(cmdParams, eventArgs)
  637. update_combat_form()
  638. update_melee_groups()
  639. end
  640.  
  641.  
  642. -------------------------------------------------------------------------------------------------------------------
  643. -- Utility functions specific to this job.
  644. -------------------------------------------------------------------------------------------------------------------
  645.  
  646. function update_combat_form()
  647. if buffactive.footwork and not buffactive['hundred fists'] then
  648. state.CombatForm:set('Footwork')
  649. else
  650. state.CombatForm:reset()
  651. end
  652. end
  653.  
  654. function update_melee_groups()
  655. classes.CustomMeleeGroups:clear()
  656.  
  657. if buffactive['hundred fists'] then
  658. classes.CustomMeleeGroups:append('HF')
  659. end
  660.  
  661. if buffactive.impetus then
  662. classes.CustomMeleeGroups:append('Impetus')
  663. end
  664. end
  665.  
  666.  
  667. -- Select default macro book on initial load or subjob change.
  668. function select_default_macro_book()
  669. -- Default macro set/book
  670. if player.sub_job == 'DNC' then
  671. set_macro_page(1, 16)
  672. elseif player.sub_job == 'NIN' then
  673. set_macro_page(1, 16)
  674. elseif player.sub_job == 'THF' then
  675. set_macro_page(1, 16)
  676. elseif player.sub_job == 'RUN' then
  677. set_macro_page(1, 16)
  678. else
  679. set_macro_page(1, 16)
  680. end
  681. end
  682.  
  683.  
  684. -------------------------------------------------------------------------------------------------------------------
  685. -- Custom event hooks.
  686. -------------------------------------------------------------------------------------------------------------------
  687.  
  688. switched_impetus = 0
  689. unswitched_impetus = 1
  690. -- Keep track of the current hit count while Impetus is up.
  691. function on_action_for_impetus(action)
  692. if state.Buff.Impetus then
  693. -- count melee hits by player
  694. if action.actor_id == player.id then
  695. if action.category == 1 then
  696. for _,target in pairs(action.targets) do
  697. for _,action in pairs(target.actions) do
  698. -- Reactions (bitset):
  699. -- 1 = evade
  700. -- 2 = parry
  701. -- 4 = block/guard
  702. -- 8 = hit
  703. -- 16 = JA/weaponskill?
  704. -- If action.reaction has bits 1 or 2 set, it missed or was parried. Reset count.
  705. if (action.reaction % 4) > 0 then
  706. info.impetus_hit_count = 0
  707. switched_impetus = 0
  708. else
  709. info.impetus_hit_count = info.impetus_hit_count + 1
  710. end
  711. end
  712. end
  713. elseif action.category == 3 then
  714. -- Missed weaponskill hits will reset the counter. Can we tell?
  715. -- Reaction always seems to be 24 (what does this value mean? 8=hit, 16=?)
  716. -- Can't tell if any hits were missed, so have to assume all hit.
  717. -- Increment by the minimum number of weaponskill hits: 2.
  718. for _,target in pairs(action.targets) do
  719. for _,action in pairs(target.actions) do
  720. -- This will only be if the entire weaponskill missed or was parried.
  721. if (action.reaction % 4) > 0 then
  722. info.impetus_hit_count = 0
  723. switched_impetus = 0
  724. else
  725. info.impetus_hit_count = info.impetus_hit_count + 2
  726. end
  727. end
  728. end
  729. end
  730. elseif action.actor_id ~= player.id and action.category == 1 then
  731. -- If mob hits the player, check for counters.
  732. for _,target in pairs(action.targets) do
  733. if target.id == player.id then
  734. for _,action in pairs(target.actions) do
  735. -- Spike effect animation:
  736. -- 63 = counter
  737. -- ?? = missed counter
  738. if action.has_spike_effect then
  739. -- spike_effect_message of 592 == missed counter
  740. if action.spike_effect_message == 592 then
  741. info.impetus_hit_count = 0
  742. switched_impetus = 0
  743. elseif action.spike_effect_animation == 63 then
  744. info.impetus_hit_count = info.impetus_hit_count + 1
  745. end
  746. end
  747. end
  748. end
  749. end
  750. end
  751.  
  752. --add_to_chat(123,'Current Impetus hit count = ' .. tostring(info.impetus_hit_count))
  753. if info.impetus_hit_count > 6 and switched_impetus == 0 then
  754. --switched_impetus = 1
  755. --add_to_chat(225,"Chugging Impetus Koolaid")
  756. --handle_equipping_gear(player.status)
  757. --switched_impetus = 1
  758. send_command('gs c equip_impetus_body')
  759. elseif info.impetus_hit_count < 7 then
  760. send_command('gs c unequip_impetus_body')
  761. end
  762. else
  763. info.impetus_hit_count = 0
  764. switched_impetus = 0
  765. end
  766. end
  767.  
  768. function job_self_command(cmdParams, eventArgs)
  769. command = cmdParams[1]:lower()
  770. if command =='equip_impetus_body' then
  771. add_to_chat(225,"Equipping Impetus Body")
  772. switched_impetus = 1
  773. unswitched_impetus = 0
  774. equip(sets.impetus_body)
  775. elseif command =='unequip_impetus_body' then
  776. if unswitched_impetus == 0 then
  777. add_to_chat(225,"Removing Impetus Body")
  778. handle_equipping_gear(player.status)
  779. unswitched_impetus = 1
  780. end
  781. switched_impetus = 0
  782. end
  783. end
  784.  
  785. -- Select default macro book on initial load or subjob change.
  786. function select_default_macro_book()
  787. -- Default macro set/book
  788. if player.sub_job == 'WAR' then
  789. set_macro_page(1, 16)
  790. else
  791. set_macro_page(1, 16)
  792. end
  793. end
  794.  
  795. function gearinfo(cmdParams, eventArgs)
  796. if cmdParams[1] == 'gearinfo' then
  797. if type(cmdParams[4]) == 'string' then
  798. if cmdParams[4] == 'true' then
  799. moving = true
  800. elseif cmdParams[4] == 'false' then
  801. moving = false
  802. end
  803. end
  804. if not midaction() then
  805. job_update()
  806. end
  807. end
  808. end
  809.  
  810. function check_moving()
  811. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  812. if state.Auto_Kite.value == false and moving then
  813. state.Auto_Kite:set(true)
  814. elseif state.Auto_Kite.value == true and moving == false then
  815. state.Auto_Kite:set(false)
  816. end
  817. end
  818. end
  819.  
  820. function check_gear()
  821. if no_swap_gear:contains(player.equipment.left_ring) then
  822. disable("left_ring")
  823. else
  824. enable("left_ring")
  825. end
  826. if no_swap_gear:contains(player.equipment.right_ring) then
  827. disable("right_ring")
  828. else
  829. enable("right_ring")
  830. end
  831. end
  832.  
  833. windower.register_event('zone change',
  834. function()
  835. if no_swap_gear:contains(player.equipment.left_ring) then
  836. enable("left_ring")
  837. equip(sets.idle)
  838. end
  839. if no_swap_gear:contains(player.equipment.right_ring) then
  840. enable("right_ring")
  841. equip(sets.idle)
  842. end
  843. end
  844.  
  845.  
  846. )
Advertisement
Add Comment
Please, Sign In to add comment