bongarippa

RUN

Apr 3rd, 2017 (edited)
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.66 KB | None | 0 0
  1. -- Setup functions for this job. Generally should not be modified.
  2. -------------------------------------------------------------------------------------------------------------------
  3.  
  4. Enmity_Spells = S{"Foil","Flash","Blank Gaze","Geist Wall","Jettatura","Stun","Sheep Song","Soporific"}
  5.  
  6. -- Initialization function for this job file.
  7. function get_sets()
  8. include('organizer-lib')
  9. mote_include_version = 2
  10.  
  11. -- Load and initialize the include file.
  12. include('Mote-Include.lua')
  13. end
  14.  
  15.  
  16. -- Setup vars that are user-independent.
  17. function job_setup()
  18. -- Table of entries
  19. rune_timers = T{}
  20. -- entry = rune, index, expires
  21.  
  22. if player.main_job_level >= 65 then
  23. max_runes = 3
  24. elseif player.main_job_level >= 35 then
  25. max_runes = 2
  26. elseif player.main_job_level >= 5 then
  27. max_runes = 1
  28. else
  29. max_runes = 0
  30. end
  31.  
  32. state.Buff['Aftermath'] = buffactive['Aftermath: Lv.1'] or
  33. buffactive['Aftermath: Lv.2'] or
  34. buffactive['Aftermath: Lv.3'] or false
  35.  
  36. no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  37. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring"}
  38.  
  39. --include('Mote-TreasureHunter')
  40. --state.TreasureMode:set('Tag')
  41. end
  42.  
  43. -------------------------------------------------------------------------------------------------------------------
  44. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  45. -------------------------------------------------------------------------------------------------------------------
  46.  
  47. function user_setup()
  48. state.OffenseMode:options('Normal', 'AccLow', 'AccHigh')
  49. state.RangedMode:options('Normal')
  50. state.HybridMode:options('Normal', 'PDT', 'Resist')
  51. state.WeaponskillMode:options('Normal', 'AccLow', 'AccHigh', 'Attack')
  52. state.CastingMode:options('Normal')
  53. state.IdleMode:options('Normal', 'Regen', 'Refresh', 'Dyna')
  54. state.RestingMode:options('Normal')
  55. state.PhysicalDefenseMode:options('PDT', 'Reraise')
  56. state.MagicalDefenseMode:options('MDT')
  57.  
  58. update_combat_weapon()
  59. update_melee_groups()
  60. select_default_macro_book()
  61.  
  62. send_command('lua l gearinfo')
  63. end
  64.  
  65. function user_unload()
  66. send_command('lua u gearinfo')
  67. end
  68.  
  69. function init_gear_sets()
  70. sets.enmity = {ammo="Aqreqaq Bomblet",
  71. head="Rabid Visor",
  72. body="Emet Harness +1",
  73. hands="Kurys Gloves",
  74. legs="Eri. Leg Guards +3",
  75. feet="Erilaz Greaves +3",
  76. neck={ name="Unmoving Collar +1", augments={'Path: A',}},
  77. waist="Goading Belt",
  78. left_ear="Cryptic Earring",
  79. right_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  80. left_ring="Gelatinous Ring +1",
  81. right_ring="Eihwaz Ring",
  82. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Phys. dmg. taken-10%',}}}
  83.  
  84. sets.Battuta = {hands="Turms Mittens +1",feet="Futhark Boots +3 +1"}
  85.  
  86. sets.cure = {ammo="Sapience Orb",
  87. head={ name="Nyame Helm", augments={'Path: B',}},
  88. body="Nyame Mail",
  89. hands="Agwu's Gages",
  90. legs="Eri. Leg Guards +3",
  91. feet="Erilaz Greaves +3",
  92. neck="Sacro Gorget",
  93. waist="Sroda Belt",
  94. left_ear="Cryptic Earring",
  95. right_ear="Roundel Earring",
  96. left_ring="Eihwaz Ring",
  97. right_ring="Moonlight Ring",
  98. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Phys. dmg. taken-10%',}}}
  99.  
  100. sets.sird = {ammo="Staunch Tathlum +1",
  101. head="Erilaz Galea +3",
  102. body={ name="Taeon Tabard", augments={'Pet: Accuracy+17 Pet: Rng. AccLow.+17','Spell interruption rate down -9%','Phalanx +3',}},
  103. hands="Regal Gauntlets",
  104. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  105. neck="Moonlight Necklace",
  106. right_ring="Supershear Ring",
  107. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Spell interruption rate down-10%',}}}
  108.  
  109. sets.TreasureHunter = {head="Volte Cap",
  110. body="Volte Jupon",
  111. feet="Volte Boots"}
  112.  
  113. --------------------------------------
  114. -- Precast sets
  115. --------------------------------------
  116.  
  117. -- Precast sets to enhance JAs
  118. sets.precast.JA['Vallation'] = set_combine(sets.enmity, {body="Runeist's coat +3", legs="Futhark trousers +3"})
  119. sets.precast.JA['Valiance'] = sets.precast.JA['Vallation']
  120. sets.precast.JA['Pflug'] = set_combine(sets.enmity, {feet="Runeist Bottes +3"})
  121. sets.precast.JA['Battuta'] = set_combine(sets.enmity, {head="Fu. Bandeau +3"})
  122. sets.precast.JA['Liement'] = set_combine(sets.enmity, {body="Futhark Coat +3"})
  123. sets.precast.JA['Lunge'] = {ammo="Seeth. Bomblet +1",
  124. head="Agwu's Cap",
  125. body="Agwu's Robe",
  126. hands="Agwu's Gages",
  127. legs="Agwu's Slops",
  128. feet="Agwu's Pigaches",
  129. neck="Baetyl Pendant",
  130. waist="Orpheus's Sash",
  131. left_ear="Friomisi Earring",
  132. right_ear="Crep. Earring",
  133. left_ring="Shiva Ring +1",
  134. right_ring="Fenrir Ring +1",
  135. back={ name="Ogma's Cape", augments={'HP+60','Mag. Acc+20 /Mag. Dmg.+20','Magic Damage +10','"Mag.Atk.Bns."+10','Occ. inc. resist. to stat. ailments+10',}}}
  136. sets.precast.JA['Swipe'] = sets.precast.JA['Lunge']
  137. sets.precast.JA['Gambit'] = {hands="Runeist Mitons +2"}
  138. sets.precast.JA['Rayke'] = {feet="Futhark Boots +3"}
  139. sets.precast.JA['Elemental Sforzo'] = {body="Futhark Coat +3"}
  140. sets.precast.JA['Swordplay'] = {hands="Futhark Mitons +3"}
  141. sets.precast.JA['Embolden'] = {back={ name="Evasionist's Cape", augments={'Enmity+3','"Embolden"+15',}}}
  142. sets.precast.JA['Vivacious Pulse'] = set_combine(sets.enmity, {
  143. head="Erilaz Galea +3"})
  144. sets.precast.JA['One For All'] = set_combine(sets.enmity)
  145. sets.precast.JA['Provoke'] = sets.enmity
  146.  
  147.  
  148.  
  149. -- Fast cast sets for spells
  150. sets.precast.FC = {
  151. ammo="Sapience Orb",
  152. head="Rune. Bandeau +3",
  153. body="Erilaz Surcoat +3",
  154. hands="Leyline Gloves",
  155. legs="Agwu's Slops",
  156. feet={ name="Carmine Greaves +1", augments={'HP+80','MP+80','Phys. dmg. taken -4',}},
  157. neck="Orunmila's Torque",
  158. waist="Oneiros Belt",
  159. left_ear="Loquac. Earring",
  160. right_ear="Etiolation Earring",
  161. left_ring="Kishar Ring",
  162. right_ring="Moonlight Ring",
  163. back={ name="Ogma's cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','"Fast Cast"+10',}}}
  164. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {legs="Futhark trousers +3"})
  165. sets.precast.FC['Utsusemi: Ichi'] = set_combine(sets.precast.FC, {neck='Magoraga beads', back="Mujin Mantle"})
  166. sets.precast.FC['Utsusemi: Ni'] = set_combine(sets.precast.FC['Utsusemi: Ichi'], {})
  167.  
  168.  
  169. -- Weaponskill sets
  170. sets.precast.WS['Resolution'] = {ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  171. head={ name="Nyame Helm", augments={'Path: B',}},
  172. body="Nyame Mail",
  173. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  174. legs="Nyame Flanchard",
  175. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  176. neck="Fotia Gorget",
  177. waist="Fotia Belt",
  178. left_ear="Sherida Earring",
  179. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  180. left_ring="Niqmaddu Ring",
  181. right_ring="Regal Ring",
  182. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  183.  
  184. sets.precast.WS['Resolution'].AccLow = {}
  185.  
  186. sets.precast.WS['Dimidiation'] = {ammo="Knobkierrie",
  187. head={ name="Nyame Helm", augments={'Path: B',}},
  188. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  189. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  190. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  191. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  192. neck="Fotia Gorget",
  193. waist={ name="Kentarch Belt +1", augments={'Path: A',}},
  194. left_ear="Sherida Earring",
  195. right_ear="Ishvara Earring",
  196. left_ring="Cornelia's Ring",
  197. right_ring="Epaminondas's Ring",
  198. back={ name="Ogma's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}}
  199.  
  200. sets.precast.WS['Dimidiation'].AccLow = set_combine(sets.precast.WS['Dimidiation'],{})
  201.  
  202. sets.precast.WS['Ground Strike'] = set_combine(sets.precast.WS['Dimidiation'], {})
  203.  
  204. sets.precast.WS['Herculean Slash'] = set_combine(sets.precast['Lunge'])
  205. sets.precast.WS['Herculean Slash'].AccLow = set_combine(sets.precast.WS['Herculean Slash'].Normal, {})
  206.  
  207. sets.precast.WS['Weapon Break'] = {ammo="Pemphredo Tathlum",
  208. head="Sakpata's Helm",
  209. body="Sakpata's Plate",
  210. hands={ name="Sakpata's Gauntlets", augments={'Path: A',}},
  211. legs="Sakpata's Cuisses",
  212. feet="Sakpata's Leggings",
  213. neck="Sanctity Necklace",
  214. waist="Eschan Stone",
  215. left_ear="Digni. Earring",
  216. right_ear={ name="Boii Earring +1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+13','Mag. AccLow.+13','Crit.hit rate+4',}},
  217. left_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  218. right_ring="Stikini Ring +1",
  219. back={ name="Ogma's Cape", augments={'STR+20','Mag. AccLow+20 /Mag. Dmg.+20','Mag. AccLow.+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}}
  220.  
  221. sets.precast.WS['Armor Break'] = set_combine(sets.precast.WS['Weapon Break'], {})
  222.  
  223.  
  224. --------------------------------------
  225. -- Midcast sets
  226. --------------------------------------
  227.  
  228. sets.midcast.FastRecast = {}
  229. sets.midcast['Enhancing Magic'] = {head="Erilaz Galea +3",
  230. hands="Runeist Mitons +2",
  231. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  232. neck="Incanter's Torque",
  233. left_ear="Andoaa Earring",
  234. right_ear="Mimir Earring",
  235. left_ring="Stikini Ring +1"}
  236. sets.midcast['Phalanx'] = set_combine(sets.midcast['Enhancing Magic'], {head={ name="Fu. Bandeau +3", augments={'Enhances "Battuta" effect',}},
  237. body={ name="Herculean Vest", augments={'Crit. hit damage +1%','Weapon skill damage +2%','Phalanx +4','Accuracy+11 Attack+11',}},
  238. hands={ name="Herculean Gloves", augments={'MND+9','Crit. hit damage +2%','Phalanx +4','Accuracy+16 Attack+16',}},
  239. legs={ name="Herculean Trousers", augments={'Pet: STR+8','CHR+3','Phalanx +5','Accuracy+18 Attack+18',}},
  240. feet={ name="Herculean Boots", augments={'Magic dmg. taken -1%','CHR+9','Phalanx +4','Accuracy+1 Attack+1',}}})
  241. sets.midcast['Regen'] = set_combine(sets.midcast['Enhancing Magic'], {head="Runeist Bandeau +3", hands="Regal Gauntlets", legs="Futhark trousers +3"})
  242. sets.midcast['Foil'] = set_combine(sets.enmity, {ammo="Staunch Tathlum +1",
  243. head="Erilaz Galea +3",
  244. body="Nyame Mail",
  245. hands="Regal Gauntlets",
  246. neck="Moonlight Necklace",
  247. waist="Audumbla Sash",
  248. left_ear="Magnetic Earring",
  249. left_ring="Supershear Ring",
  250. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Spell interruption rate down-10%',}}})
  251. sets.midcast['Stoneskin'] = set_combine(sets.midcast['Enhancing Magic'], sets.midcast['Foil'])
  252. sets.midcast['Flash'] = set_combine(sets.midcast['Foil'])
  253. sets.midcast['Stun'] = set_combine(sets.midcast['Foil'])
  254. sets.midcast['Poisonga'] = set_combine(sets.midcast['Foil'])
  255. sets.midcast['Blank Gaze'] = set_combine(sets.midcast['Foil'], {})
  256. sets.midcast['Jettatura'] = set_combine(sets.midcast['Foil'], {})
  257. sets.midcast['Soporific'] = {ammo="Staunch Tathlum +1",
  258. head="Erilaz Galea +3",
  259. body="Nyame Mail",
  260. hands="Regal Gauntlets",
  261. legs="Carmine Cuisses +1",
  262. feet="Erilaz Greaves +3",
  263. neck="Moonlight Necklace",
  264. waist="Plat. Mog. Belt",
  265. left_ear="Magnetic Earring",
  266. right_ear="Odnowa Earring +1",
  267. left_ring="Defending Ring",
  268. right_ring="Gelatinous Ring +1",
  269. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Spell interruption rate down-10%',}}}
  270. sets.midcast['Sheep Song'] = set_combine(sets.midcast['Foil'])
  271. sets.midcast['Geist Wall'] = set_combine(sets.midcast['Foil'])
  272. sets.midcast['Cocoon'] = set_combine(sets.midcast['Foil'], {})
  273. sets.midcast['Wild Carrot'] = set_combine(sets.cure)
  274. sets.midcast['Healing Breeze'] = set_combine(sets.cure)
  275. sets.midcast['Magic Fruit'] = set_combine(sets.cure)
  276. sets.midcast['Crusade'] = set_combine(sets.midcast['Regen'])
  277. sets.midcast['Cure']= set_combine(sets.cure)
  278. sets.midcast['Cure II']= set_combine(sets.cure)
  279. sets.midcast['Cure III']= set_combine(sets.cure)
  280. sets.midcast['Cure IV']= set_combine(sets.cure)
  281. sets.midcast['Cursna']= set_combine(sets.cure, {neck="Debilis Medallion",
  282. left_ring="Menelaus's Ring",
  283. right_ring="Haoma's Ring"})
  284.  
  285.  
  286. --------------------------------------
  287. -- Idle/resting/defense/etc sets
  288. --------------------------------------
  289.  
  290. sets.idle = {ammo="Staunch Tathlum +1",
  291. head="Nyame Helm",
  292. body="Erilaz Surcoat +3",
  293. hands="Erilaz Gauntlets +3",
  294. legs="Carmine Cuisses +1",
  295. feet="Erilaz Greaves +3",
  296. neck="Futhark Torque +2",
  297. waist="Null Belt",
  298. left_ear="Eabani Earring",
  299. right_ear="Erilaz Earring +2",
  300. left_ring="Gelatinous Ring +1",
  301. right_ring="Moonlight Ring",
  302. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Phys. dmg. taken-10%',}}}
  303.  
  304. sets.idle.Refresh = set_combine(sets.idle, {ammo="Homiliary",
  305. body="Runeist Coat +3",
  306. hands="Nyame Gauntlets",
  307. neck="Sibyl Scarf",
  308. right_ring="Stikini Ring +1",})
  309.  
  310. sets.idle.Regen = set_combine(sets.idle, {body={ name="Futhark Coat +3", augments={'Enhances "Elemental Sforzo" effect',}},
  311. hands="Regal Gauntlets",
  312. feet="Turms Leggings +1",
  313. neck="Bathy Choker +1"})
  314.  
  315. sets.idle.Dyna= set_combine(sets.idle, {legs="Eri. Leg Guards +3"})
  316.  
  317. sets.defense.PDT = {}
  318.  
  319.  
  320.  
  321. sets.defense.MDT = set_combine(sets.defense.PDT, {})
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330. --------------------------------------
  331. -- Engaged sets
  332. --------------------------------------
  333.  
  334. sets.engaged = {ammo="Yamarang",
  335. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  336. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  337. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  338. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  339. feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  340. neck="Anu Torque",
  341. waist="Windbuffet Belt +1",
  342. left_ear="Telos Earring",
  343. right_ear="Sherida Earring",
  344. left_ring="Niqmaddu Ring",
  345. right_ring="Epona's Ring",
  346. back={ name="Ogma's cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%'}}}
  347.  
  348. sets.engaged.AccLow = set_combine(sets.engaged, {
  349. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  350. feet={name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','MND+8','Attack+15',}},
  351. legs="Rune. Trousers +3",
  352. neck="Lissome Necklace",
  353. waist="Kentarch Belt +1",
  354. lear="Telos Earring",
  355. rear="Digni. Earring",
  356. ring1="Ilabrat Ring",
  357. back={name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%'}}})
  358.  
  359. sets.engaged.AccHigh = set_combine(sets.engaged.AccLow,
  360. {head={name="Carmine Mask +1", augments={'Accuracy+20','Mag. AccLow.+12','"Fast Cast"+4',}},
  361. body="Runeist's Coat +3",
  362. ring2="Regal Ring",
  363. back={name="Ogma's cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%'}}})
  364.  
  365. sets.engaged.PDT = {ammo="Staunch Tathlum +1",
  366. head={ name="Nyame Helm", augments={'Path: B',}},
  367. body="Erilaz Surcoat +3",
  368. hands="Turms Mittens +1",
  369. legs="Eri. Leg Guards +3",
  370. feet="Erilaz Greaves +3",
  371. neck="Futhark Torque +2",
  372. waist="Ioskeha Belt +1",
  373. left_ear="Telos Earring",
  374. right_ear="Erilaz Earring +2",
  375. left_ring="Chirich Ring +1",
  376. right_ring="Moonlight Ring",
  377. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  378.  
  379. sets.engaged.PDT.AccLow = {ammo="Yamarang",
  380. head={ name="Nyame Helm", augments={'Path: B',}},
  381. body="Nyame Mail",
  382. hands="Turms Mittens +1",
  383. legs="Eri. Leg Guards +3",
  384. feet="Erilaz Greaves +3",
  385. neck={ name="Futhark Torque +2", augments={'Path: A',}},
  386. waist="Ioskeha Belt +1",
  387. left_ear="Sherida Earring",
  388. right_ear="Erilaz Earring +2",
  389. left_ring="Niqmaddu Ring",
  390. right_ring="Chirich Ring +1",
  391. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  392.  
  393. sets.engaged.Epeolatry = {ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  394. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  395. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  396. hands="Turms Mittens +1",
  397. legs="Eri. Leg Guards +3",
  398. feet="Turms Leggings +1",
  399. neck="Lissome Necklace",
  400. waist="Ioskeha Belt +1",
  401. left_ear="Telos Earring",
  402. right_ear="Sherida Earring",
  403. left_ring="Niqmaddu Ring",
  404. right_ring="Epona's Ring",
  405. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  406. sets.engaged.Epeolatry.AccLow = set_combine(sets.engaged.Epeolatry, {})
  407. sets.engaged.Epeolatry.AccHigh = set_combine(sets.engaged.Epeolatry.AccLow, {})
  408. sets.engaged.Epeolatry.PDT = {ammo="Staunch Tathlum +1",
  409. head={ name="Nyame Helm", augments={'Path: B',}},
  410. body="Erilaz Surcoat +3",
  411. hands="Turms Mittens +1",
  412. legs="Eri. Leg Guards +3",
  413. feet="Erilaz Greaves +3",
  414. neck="Futhark Torque +2",
  415. waist="Ioskeha Belt +1",
  416. left_ear="Telos Earring",
  417. right_ear="Erilaz Earring +2",
  418. left_ring="Chirich Ring +1",
  419. right_ring="Moonlight Ring",
  420. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  421. sets.engaged.Epeolatry.AccLow.PDT = set_combine(sets.engaged.Epeolatry.PDT, {})
  422. sets.engaged.Epeolatry.Resist = set_combine(sets.engaged.Epeolatry.PDT, {head="Volte Cap",
  423. body="Runeist Coat +3",
  424. hands="Volte Bracers",
  425. legs="Rune. Trousers +3",
  426. feet="Erilaz Greaves +3",
  427. left_ear="Hearty Earring",
  428. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Phys. dmg. taken-10%',}}})
  429. -- Epeolatry Aftermath Lv.3 sets
  430. sets.engaged.Epeolatry.AM3 = {ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  431. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  432. body="Ashera Harness",
  433. hands="Turms Mittens +1",
  434. legs="Volte Tights",
  435. feet="Volte Spats",
  436. neck="Lissome Necklace",
  437. waist={ name="Kentarch Belt +1", augments={'Path: A',}},
  438. left_ear="Dedition Earring",
  439. right_ear="Sherida Earring",
  440. left_ring="Niqmaddu Ring",
  441. right_ring="Epona's Ring",
  442. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  443. sets.engaged.Epeolatry.AccLow.AM3 = set_combine(sets.engaged.Epeolatry.AM3, {})
  444. sets.engaged.Epeolatry.AccHigh.AM3 = set_combine(sets.engaged.Epeolatry.AccLow.AM3, {})
  445. sets.engaged.Epeolatry.PDT.AM3 = set_combine(sets.engaged.Epeolatry.PDT, {ammo="Yamarang",
  446. body="Ashera Harness",
  447. left_ear="Dedition Earring",
  448. back={ name="Ogma's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%',}}})
  449. sets.engaged.Epeolatry.AccLow.PDT.AM3 = set_combine(sets.engaged.Epeolatry.PDT.AM3, {})
  450. sets.engaged.Epeolatry.Resist.AM3 = set_combine(sets.engaged.Epeolatry.AM3, {head="Volte Cap",
  451. body="Runeist Coat +3",
  452. hands="Volte Bracers",
  453. legs="Rune. Trousers +3",
  454. feet="Erilaz Greaves +3",
  455. left_ear="Hearty Earring",
  456. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Phys. dmg. taken-10%',}}})
  457.  
  458. sets.engaged.Lionheart = {ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  459. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  460. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  461. hands="Turms Mittens +1",
  462. legs="Eri. Leg Guards +3",
  463. feet="Turms Leggings +1",
  464. neck="Lissome Necklace",
  465. waist="Ioskeha Belt +1",
  466. left_ear="Telos Earring",
  467. right_ear="Sherida Earring",
  468. left_ring="Niqmaddu Ring",
  469. right_ring="Epona's Ring",
  470. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  471. sets.engaged.Lionheart.AccLow = set_combine(sets.engaged.Lionheart, {})
  472. sets.engaged.Lionheart.Resist = set_combine(sets.engaged.Lionheart.Resist, {head="Volte Cap",
  473. body="Runeist Coat +3",
  474. hands="Volte Bracers",
  475. legs="Rune. Trousers +3",
  476. feet="Erilaz Greaves +3",
  477. left_ear="Hearty Earring",
  478. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Phys. dmg. taken-10%',}}})
  479. sets.engaged.Lionheart.PDT = {ammo="Staunch Tathlum +1",
  480. head={ name="Nyame Helm", augments={'Path: B',}},
  481. body="Erilaz Surcoat +3",
  482. hands="Turms Mittens +1",
  483. legs="Eri. Leg Guards +3",
  484. feet="Erilaz Greaves +3",
  485. neck="Futhark Torque +2",
  486. waist="Ioskeha Belt +1",
  487. left_ear="Telos Earring",
  488. right_ear="Erilaz Earring +2",
  489. left_ring="Chirich Ring +1",
  490. right_ring="Moonlight Ring",
  491. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  492. sets.engaged.Lionheart.SubtleBlow = {}
  493. sets.engaged.Lionheart.AccLow.PDT = {ammo="Yamarang",
  494. head={ name="Nyame Helm", augments={'Path: B',}},
  495. body="Nyame Mail",
  496. hands="Turms Mittens +1",
  497. legs="Eri. Leg Guards +3",
  498. feet="Erilaz Greaves +3",
  499. neck={ name="Futhark Torque +2", augments={'Path: A',}},
  500. waist="Ioskeha Belt +1",
  501. left_ear="Sherida Earring",
  502. right_ear="Erilaz Earring +2",
  503. left_ring="Niqmaddu Ring",
  504. right_ring="Chirich Ring +1",
  505. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  506.  
  507. sets.engaged.Lycurgos = {ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  508. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  509. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  510. hands="Turms Mittens +1",
  511. legs="Eri. Leg Guards +3",
  512. feet="Turms Leggings +1",
  513. neck="Lissome Necklace",
  514. waist="Ioskeha Belt +1",
  515. left_ear="Telos Earring",
  516. right_ear="Sherida Earring",
  517. left_ring="Niqmaddu Ring",
  518. right_ring="Epona's Ring",
  519. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  520. sets.engaged.Lycurgos.AccLow = set_combine(sets.engaged.Lycurgos, {})
  521. sets.engaged.Lycurgos.Resist = set_combine(sets.engaged.Lycurgos.Resist, {head="Volte Cap",
  522. body="Runeist Coat +3",
  523. hands="Volte Bracers",
  524. legs="Rune. Trousers +3",
  525. feet="Erilaz Greaves +3",
  526. left_ear="Hearty Earring",
  527. back={ name="Ogma's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Phys. dmg. taken-10%',}}})
  528. sets.engaged.Lycurgos.PDT = {ammo="Yamarang",
  529. head={ name="Nyame Helm", augments={'Path: B',}},
  530. body="Erilaz Surcoat +3",
  531. hands="Turms Mittens +1",
  532. legs="Eri. Leg Guards +3",
  533. feet="Erilaz Greaves +3",
  534. neck="Futhark Torque +2",
  535. waist="Ioskeha Belt +1",
  536. left_ear="Telos Earring",
  537. right_ear="Erilaz Earring +2",
  538. left_ring="Chirich Ring +1",
  539. right_ring="Moonlight Ring",
  540. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  541. sets.engaged.Lycurgos.SubtleBlow = {}
  542. sets.engaged.Lycurgos.AccLow.PDT = {ammo="Yamarang",
  543. head={ name="Nyame Helm", augments={'Path: B',}},
  544. body="Nyame Mail",
  545. hands="Turms Mittens +1",
  546. legs="Eri. Leg Guards +3",
  547. feet="Erilaz Greaves +3",
  548. neck={ name="Futhark Torque +2", augments={'Path: A',}},
  549. waist="Ioskeha Belt +1",
  550. left_ear="Sherida Earring",
  551. right_ear="Erilaz Earring +2",
  552. left_ring="Niqmaddu Ring",
  553. right_ring="Chirich Ring +1",
  554. back={ name="Ogma's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10','Damage taken-5%',}}}
  555.  
  556. sets.engaged.repulse = {back="Repulse Mantle"}
  557.  
  558. end
  559.  
  560. ------------------------------------------------------------------
  561. -- Action events
  562. ------------------------------------------------------------------
  563.  
  564. -- Run after the default midcast() is done.
  565. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  566. function midcast(spell,act)
  567. if spell.action_type == 'Magic' then
  568. if spell.english == 'Phalanx' then
  569. equip({head="Fu. bandeau +3"})
  570. elseif Enmity_Spells:contains(spell.name) then
  571. equip(sets.enmity)
  572. send_command('@input /echo Enmity Set')
  573. else
  574. equip(sets.precast.FC)
  575. end
  576. end
  577. end
  578.  
  579.  
  580. function job_aftercast(spell, action, spellMap, eventArgs)
  581. if not spell.interrupted then
  582. if spell.type == 'Rune' then
  583. update_timers(spell)
  584. elseif spell.name == "Lunge" or spell.name == "Gambit" or spell.name == 'Rayke' then
  585. reset_timers()
  586. elseif spell.name == "Swipe" then
  587. send_command(trim(1))
  588. end
  589. end
  590. if spell.name == 'Phalanx' and not spell.interrupted then
  591. send_command('wait 205;input /echo Phalanx wearing off soon!;')
  592. end
  593. if spell.name == 'Crusade' and not spell.interrupted then
  594. send_command('wait 530;input /echo Crusade wearing off soon!;')
  595. end
  596. end
  597.  
  598.  
  599. function status_change(new,old)
  600.  
  601. if buffactive['Battuta'] then
  602. equip(sets.Battuta)
  603. end
  604. end
  605.  
  606. function job_buff_change(buff, gain)
  607. if buff == "Aftermath: Lv.3" or buff == "Aftermath" then
  608. classes.CustomMeleeGroups:clear()
  609. if (buff == "Aftermath: Lv.3" and gain) or buffactive["Aftermath: Lv.3"] then
  610. if player.equipment.main == "Epeolatry" then
  611. classes.CustomMeleeGroups:append('AM3')
  612. if gain then
  613. send_command('timers create "Aftermath: Lv.3" 180 down;wait 120;input /echo Aftermath: Lv.3 [WEARING OFF IN 60 SEC.];wait 30;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 20;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
  614. else
  615. send_command('timers delete "Aftermath: Lv.3"')
  616. add_to_chat(123,'AM3: [OFF]')
  617. end
  618. end
  619. end
  620. end
  621. if buff == "Aftermath: Lv.3" or buff == "Aftermath" then
  622. handle_equipping_gear(player.status)
  623. end
  624. end
  625.  
  626.  
  627.  
  628.  
  629.  
  630. -------------------------------------------------------------------------------------------------------------------
  631. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  632. -------------------------------------------------------------------------------------------------------------------
  633.  
  634. function job_update(cmdParams, eventArgs)
  635. handle_equipping_gear(player.status)
  636. end
  637.  
  638. function display_current_job_state(eventArgs)
  639. local msg = '[ Melee'
  640.  
  641. if state.CombatForm.has_value then
  642. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  643. end
  644.  
  645. msg = msg .. ': '
  646.  
  647. msg = msg .. state.OffenseMode.value
  648. if state.HybridMode.value ~= 'Normal' then
  649. msg = msg .. '/' .. state.HybridMode.value
  650. end
  651. msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
  652.  
  653. if state.DefenseMode.value ~= 'None' then
  654. msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
  655. end
  656.  
  657. if state.IdleMode.value ~= 'None' then
  658. msg = msg .. '[ Idle: ' .. state.IdleMode.value .. ' ]'
  659. end
  660.  
  661. if state.Kiting.value then
  662. msg = msg .. '[ Kiting Mode: ON ]'
  663. end
  664.  
  665. add_to_chat(060, msg)
  666.  
  667. eventArgs.handled = true
  668. end
  669. -------------------------------------------------------------------------------------------------------------------
  670. -- General hooks for other events.
  671. -------------------------------------------------------------------------------------------------------------------
  672.  
  673. -------------------------------------------------------------------------------------------------------------------
  674. -- User code that supplements self-commands.
  675. -------------------------------------------------------------------------------------------------------------------
  676.  
  677. -------------------------------------------------------------------------------------------------------------------
  678. -- Utility functions specific to this job.
  679. -------------------------------------------------------------------------------------------------------------------
  680.  
  681. -- Select default macro book on initial load or subjob change.
  682. function select_default_macro_book()
  683. -- Default macro set/book
  684. if player.sub_job == 'WAR' then
  685. set_macro_page(3, 20)
  686. elseif player.sub_job == 'NIN' then
  687. set_macro_page(1, 20)
  688. elseif player.sub_job == 'SAM' then
  689. set_macro_page(2, 20)
  690. else
  691. set_macro_page(5, 20)
  692. end
  693. end
  694.  
  695. function update_combat_weapon()
  696. state.CombatWeapon:set(player.equipment.main)
  697. end
  698.  
  699. function update_melee_groups()
  700. classes.CustomMeleeGroups:clear()
  701. if buffactive['Aftermath: Lv.3'] and player.equipment.main == "Epeolatry" then
  702. classes.CustomMeleeGroups:append('AM3')
  703. end
  704. if buffactive.Aftermath and player.equipment.main == "Bravura" and state.HybridMode.value == 'PDT' then
  705. classes.CustomMeleeGroups:append('AM')
  706. end
  707. end
  708.  
  709. function get_rune_obi_element()
  710. weather_rune = buffactive[elements.rune_of[world.weather_element] or '']
  711. day_rune = buffactive[elements.rune_of[world.day_element] or '']
  712.  
  713. local found_rune_element
  714.  
  715. if weather_rune and day_rune then
  716. if weather_rune > day_rune then
  717. found_rune_element = world.weather_element
  718. else
  719. found_rune_element = world.day_element
  720. end
  721. elseif weather_rune then
  722. found_rune_element = world.weather_element
  723. elseif day_rune then
  724. found_rune_element = world.day_element
  725. end
  726.  
  727. return found_rune_element
  728. end
  729.  
  730. function get_obi(element)
  731. if element and elements.obi_of[element] then
  732. return (player.inventory[elements.obi_of[element]] or player.wardrobe[elements.obi_of[element]]) and elements.obi_of[element]
  733. end
  734. end
  735.  
  736. function job_self_command(cmdParams, eventArgs)
  737. if cmdParams[1]:lower() == 'scholar' then
  738. handle_strategems(cmdParams)
  739. eventArgs.handled = true
  740. elseif cmdParams[1]:lower() == 'nuke' then
  741. handle_nuking(cmdParams)
  742. eventArgs.handled = true
  743. end
  744.  
  745. gearinfo(cmdParams, eventArgs)
  746. end
  747.  
  748. function gearinfo(cmdParams, eventArgs)
  749. if cmdParams[1] == 'gearinfo' then
  750. if type(tonumber(cmdParams[2])) == 'number' then
  751. if tonumber(cmdParams[2]) ~= DW_needed then
  752. DW_needed = tonumber(cmdParams[2])
  753. DW = true
  754. end
  755. elseif type(cmdParams[2]) == 'string' then
  756. if cmdParams[2] == 'false' then
  757. DW_needed = 0
  758. DW = false
  759. end
  760. end
  761. if type(tonumber(cmdParams[3])) == 'number' then
  762. if tonumber(cmdParams[3]) ~= Haste then
  763. Haste = tonumber(cmdParams[3])
  764. end
  765. end
  766. if type(cmdParams[4]) == 'string' then
  767. if cmdParams[4] == 'true' then
  768. moving = true
  769. elseif cmdParams[4] == 'false' then
  770. moving = false
  771. end
  772. end
  773. if type(tonumber(cmdParams[5])) == 'number' then
  774. if tonumber(cmdParams[5]) ~= MA_needed then
  775. MA_needed = tonumber(cmdParams[5])
  776. H2H = true
  777. end
  778. elseif type(cmdParams[5]) == 'string' then
  779. if cmdParams[5] == 'false' then
  780. MA_needed = 0
  781. H2H = false
  782. end
  783. end
  784. if not midaction() then
  785. job_update()
  786. end
  787. end
  788. end
  789. ------------------------------------------------------------------
  790. -- Timer manipulation
  791. ------------------------------------------------------------------
  792.  
  793. -- Add a new run to the custom timers, and update index values for existing timers.
  794. function update_timers(spell)
  795. local expires_time = os.time() + 300
  796. local entry_index = rune_count(spell.name) + 1
  797.  
  798. local entry = {rune=spell.name, index=entry_index, expires=expires_time}
  799.  
  800. rune_timers:append(entry)
  801. local cmd_queue = create_timer(entry).. ';wait 0.05;'
  802.  
  803. cmd_queue = cmd_queue .. trim()
  804.  
  805. add_to_chat(123,'cmd_queue='..cmd_queue)
  806.  
  807. send_command(cmd_queue)
  808. end
  809.  
  810. -- Get the command string to create a custom timer for the provided entry.
  811. function create_timer(entry)
  812. local timer_name = '"Rune: ' .. entry.rune .. '-' .. tostring(entry.index) .. '"'
  813. local duration = entry.expires - os.time()
  814. return 'timers c ' .. timer_name .. ' ' .. tostring(duration) .. ' down'
  815. end
  816.  
  817. -- Get the command string to delete a custom timer for the provided entry.
  818. function delete_timer(entry)
  819. local timer_name = '"Rune: ' .. entry.rune .. '-' .. tostring(entry.index) .. '"'
  820. return 'timers d ' .. timer_name .. ''
  821. end
  822.  
  823. -- Reset all timers
  824. function reset_timers()
  825. local cmd_queue = ''
  826. for index,entry in pairs(rune_timers) do
  827. cmd_queue = cmd_queue .. delete_timer(entry) .. ';wait 0.05;'
  828. end
  829. rune_timers:clear()
  830. send_command(cmd_queue)
  831. end
  832.  
  833. -- Get a count of the number of runes of a given type
  834. function rune_count(rune)
  835. local count = 0
  836. local current_time = os.time()
  837. for _,entry in pairs(rune_timers) do
  838. if entry.rune == rune and entry.expires > current_time then
  839. count = count + 1
  840. end
  841. end
  842. return count
  843. end
  844.  
  845. -- Remove the oldest rune(s) from the table, until we're below the max_runes limit.
  846. -- If given a value n, remove n runes from the table.
  847. function trim(n)
  848. local cmd_queue = ''
  849.  
  850. local to_remove = n or (rune_timers:length() - max_runes)
  851.  
  852. while to_remove > 0 and rune_timers:length() > 0 do
  853. local oldest
  854. for index,entry in pairs(rune_timers) do
  855. if oldest == nil or entry.expires < rune_timers[oldest].expires then
  856. oldest = index
  857. end
  858. end
  859.  
  860. cmd_queue = cmd_queue .. prune(rune_timers[oldest].rune)
  861. to_remove = to_remove - 1
  862. end
  863.  
  864. return cmd_queue
  865. end
  866.  
  867. -- Drop the index of all runes of a given type.
  868. -- If the index drops to 0, it is removed from the table.
  869. function prune(rune)
  870. local cmd_queue = ''
  871.  
  872. for index,entry in pairs(rune_timers) do
  873. if entry.rune == rune then
  874. cmd_queue = cmd_queue .. delete_timer(entry) .. ';wait 0.05;'
  875. entry.index = entry.index - 1
  876. end
  877. end
  878.  
  879. for index,entry in pairs(rune_timers) do
  880. if entry.rune == rune then
  881. if entry.index == 0 then
  882. rune_timers[index] = nil
  883. else
  884. cmd_queue = cmd_queue .. create_timer(entry) .. ';wait 0.05;'
  885. end
  886. end
  887. end
  888.  
  889. return cmd_queue
  890. end
  891.  
  892.  
  893. ------------------------------------------------------------------
  894. -- Reset events
  895. ------------------------------------------------------------------
  896.  
  897. windower.raw_register_event('zone change',reset_timers)
  898. windower.raw_register_event('logout',reset_timers)
  899. windower.raw_register_event('status change',function(new, old)
  900. if gearswap.res.statuses[new].english == 'Dead' then
  901. reset_timers()
  902. end
  903. end)
  904.  
  905. function gearinfo(cmdParams, eventArgs)
  906. if cmdParams[1] == 'gearinfo' then
  907. if type(cmdParams[4]) == 'string' then
  908. if cmdParams[4] == 'true' then
  909. moving = true
  910. elseif cmdParams[4] == 'false' then
  911. moving = false
  912. end
  913. end
  914. if not midaction() then
  915. job_update()
  916. end
  917. end
  918. end
  919.  
  920. function check_moving()
  921. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  922. if state.Auto_Kite.value == false and moving then
  923. state.Auto_Kite:set(true)
  924. elseif state.Auto_Kite.value == true and moving == false then
  925. state.Auto_Kite:set(false)
  926. end
  927. end
  928. end
  929.  
  930. function check_gear()
  931. if no_swap_gear:contains(player.equipment.left_ring) then
  932. disable("ring1")
  933. else
  934. enable("ring1")
  935. end
  936. if no_swap_gear:contains(player.equipment.right_ring) then
  937. disable("ring2")
  938. else
  939. enable("ring2")
  940. end
  941. end
  942.  
  943. windower.register_event('zone change',
  944. function()
  945. if no_swap_gear:contains(player.equipment.left_ring) then
  946. enable("ring1")
  947. equip(sets.idle)
  948. end
  949. if no_swap_gear:contains(player.equipment.right_ring) then
  950. enable("ring2")
  951. equip(sets.idle)
  952. end
  953. end
  954. )
Advertisement
Add Comment
Please, Sign In to add comment