Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.96 KB | None | 0 0
  1. --Table of Contents
  2. --You can search the file for the #'s to aid in search, Ctrl + F #()
  3.  
  4. --#1 Random Use
  5. --#2 Idle Sets
  6. --#3 Precast Sets
  7. --#4 Midcast Sets
  8. --#5 Melee Sets
  9. --#6 WS sets
  10. --#7 Aftercast Sets
  11. --#8 Setup Functions
  12. --#9 Sub jobs Sets
  13. --#10 Haste Group
  14. --#11 Sub Job Functions
  15. --#12 Job-specific hooks for standard casting events.
  16. --#13 Stratagems
  17.  
  18.  
  19. function init_gear_sets()
  20.  
  21. -----------------------------------------------------------------------------------------------------------
  22. ---------------------------------------------- # Random Sets -------------------------------------------
  23. -----------------------------------------------------------------------------------------------------------
  24.  
  25. -- Custom buff sets
  26.  
  27. -- Job-specific buff sets
  28. sets.buff.ComposureOther = {
  29. head="Leth. Chappel +1",
  30. body="Lethargy Sayon +1",
  31. hands="Leth. Gantherots +1",
  32. legs="Leth. Fuseau +1",
  33. feet="Leth. Houseaux +1",}
  34.  
  35. sets.Kiting = {legs="Carmine Cuisses +1"}
  36. sets.latent_refresh = {waist="Fucho-no-obi"}
  37. sets.precast.JA['Chainspell'] = {body="Viti. Tabard +1"}
  38.  
  39. sets.Reive = {neck="Ygnas's Resolve +1"}
  40. sets.buff.Doom = {ring1="Saida Ring", ring2="Saida Ring", waist="Gishdubar Sash"}
  41. sets.Obi = {waist="Hachirin-no-Obi"}
  42.  
  43. sets.weapons = {sub="Murgleis",main="Almace",ammo="Mandau"}
  44.  
  45. sets.buff.Saboteur = {hands="Leth. Gantherots +1"}
  46.  
  47. sets.genmei = {sub={name="Genmei Shield"}}
  48. sets.sors = {sub={name="Sors Shield"}}
  49. sets.beat = {sub={name="Beatific Shield"}}
  50. current_shield = {name="Genmei Shield"}
  51.  
  52. --[[sets.weapons = {sub="Burtgang",main="Xiutleato",ammo="Excalibur"}
  53.  
  54. sets.aegis = {sub={name="Aegis"}}
  55. sets.ochain = {sub={name="Ochain"}}
  56. sets.priwen = {sub={name="Priwen"}}
  57. current_shield = {name="Ochain"}]]
  58.  
  59. --Enmity + Set
  60.  
  61. sets.Enmity = {}
  62.  
  63. sets.midcast.WS_Day = {}
  64.  
  65. -- Initializes trusts at iLvl 119
  66. sets.midcast.Trust = sets.precast.FC
  67.  
  68. sets.TreasureHunter = {
  69. waist="Chaac Belt",
  70. }
  71.  
  72. -------------------------------------------------------------------------------------------------------------
  73. ------------------------------------------------ #2 Idle Sets --------------------------------------------
  74. -------------------------------------------------------------------------------------------------------------
  75.  
  76. sets.idle = {
  77. main={ name="Colada", augments={'"Refresh"+2','INT+5','Mag. Acc.+15','DMG:+10',}},
  78. sub="Forfend",
  79. ammo="Homiliary",
  80. head={ name="Viti. Chapeau +1", augments={'Enhances "Dia III" effect','Enhances "Slow II" effect',}},
  81. body={ name="Amalric Doublet +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  82. hands={ name="Kaykaus Cuffs +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  83. legs={ name="Lengo Pants", augments={'INT+5','Mag. Acc.+4','"Mag.Atk.Bns."+1','"Refresh"+1',}},
  84. feet={ name="Amalric Nails +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  85. neck="Sanctity Necklace",
  86. waist="Yamabuki-no-Obi",
  87. left_ear="Etiolation Earring",
  88. right_ear="Mache Earring",
  89. left_ring="Etana Ring",
  90. right_ring="Mephitas's Ring +1",
  91. back="Xucau Mantle"}
  92.  
  93. sets.idle.DT = set_combine(sets.idle, {
  94. main="Mafic Cudgel", --10/0
  95. --sub="Beatific Shield +1", --4/29
  96. ammo="Staunch Tathlum", --2/2
  97. head="Aya. Zucchetto +1", --4/4
  98. body="Ayanmo Corazza +1", --6/0
  99. hands="Aya. Manopolas +1", --4/3
  100. legs="Aya. Cosciales +1", --4/4
  101. neck="Twilight Torque", --5/5
  102. --ear1="Genmei Earring", --2/0
  103. ring1="Gelatinous Ring +1", --7/(-1)
  104. ring2="Defending Ring", --10/10
  105. back="Solemnity Cape", --4/4
  106. waist="Flume Belt +1",}) --4/0)
  107.  
  108.  
  109. sets.idle.Town = set_combine(sets.idle, {
  110. main="Murgleis",
  111. sub="Genmei Shield",
  112. body="Councilor's Garb",
  113. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6'}},
  114. neck="Mizu. Kubikazari",
  115. waist="Flume Belt +1",
  116. left_ear="Static Earring",
  117. right_ear="Friomisi Earring",
  118. left_ring="Levia. Ring +1",
  119. right_ring="Shiva Ring +1",
  120. back="Solemnity Cape"})
  121.  
  122. sets.idle.Weak = sets.idle.DT
  123.  
  124. sets.resting = set_combine(sets.idle, {
  125. main="Chatoyant Staff",
  126. waist="Shinjutsu-no-Obi +1",})
  127.  
  128. sets.defense.PDT = sets.idle.DT
  129. sets.defense.MDT = sets.idle.DT
  130.  
  131. ----------------------------------------------------------------------------------------------------------------------------------------------
  132. ---------------------------------------------------------#3 Precast --------------------------------------------------------------------------
  133. ----------------------------------------------------------------------------------------------------------------------------------------------
  134.  
  135. --Cap 80% Fast-Cast Native +38% with Gifts
  136.  
  137. sets.precast.FC = {
  138. main={ name="Nibiru Cudgel", augments={'MP+50','INT+10','"Mag.Atk.Bns."+15',}},
  139. sub="Forfend",
  140. ammo="Impatiens", --(2)
  141. head={ name="Amalric Coif +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}}, --11
  142. body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}}, --13
  143. hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}}, --8
  144. legs={ name="Amalric Slops +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  145. feet={ name="Amalric Nails +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  146. neck="Orunmila's Torque", --5
  147. waist="Witful Belt", --3(3)
  148. left_ear="Etiolation Earring", --1
  149. right_ear="Loquac. Earring", --2
  150. left_ring="Etana Ring",
  151. right_ring="Lebeche Ring", --(2)
  152. back="Perimede Cape"} --(4)
  153. --43/(11) total
  154.  
  155. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash", head="Carmine Mask +1" })
  156. sets.precast.FC['Enfeebling Magic'] = set_combine(sets.precast.FC, {head="Leth. Chappel +1"})
  157. sets.precast.FC["Healing Magic"] = set_combine(sets.precast.FC, {main="Vejovis Wand +1"})
  158.  
  159. sets.precast.JA['Convert'] = {
  160. main="Murgleis", --Convert--
  161. sub="Forfend",
  162. ammo="Ghastly Tathlum +1",
  163. head={ name="Kaykaus Mitra +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  164. body={ name="Amalric Doublet +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  165. hands={ name="Kaykaus Cuffs +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  166. legs={ name="Kaykaus Tights +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  167. feet={ name="Kaykaus Boots +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  168. neck="Sanctity Necklace",
  169. waist="Yamabuki-no-Obi",
  170. left_ear="Etiolation Earring",
  171. right_ear="Gifted Earring",
  172. left_ring="Etana Ring",
  173. right_ring="Sangoma Ring",
  174. back="Xucau Mantle"}
  175. ---------------------------------------------------------------------------------------------------------------------------------------------
  176. ---------------------------------------------------- #4 Magic Sets Mid Cast -------------------------------------------------------------
  177. ---------------------------------------------------------------------------------------------------------------------------------------------
  178. sets.midcast = {}
  179. sets.midcast.FastRecast = sets.precast.FC
  180.  
  181. sets.midcast.Cure = {
  182. main="Septoptic +1",
  183. sub="Forfend",
  184. ammo="Impatiens", --(2)
  185. head={ name="Kaykaus Mitra +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}}, --11
  186. body={ name="Kaykaus Bliaut +1", augments={'MP+80','Spell interruption rate down +12%','"Cure" spellcasting time -7%',}}, --11
  187. hands={ name="Kaykaus Cuffs +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  188. legs={ name="Kaykaus Tights +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}}, --11
  189. feet={ name="Kaykaus Boots +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}}, --11
  190. neck="Incanter's Torque",
  191. waist="Austerity Belt +1",
  192. left_ear="Mendi. Earring", --5
  193. right_ear="Gifted Earring",
  194. ring1="Etana Ring",
  195. ring2="Lebeche Ring", --3
  196. back="Solemnity Cape",} --For Conserve MP --7
  197.  
  198. sets.midcast.CureWeather = set_combine(sets.midcast.Cure, {
  199. main="Chatoyant Staff",
  200. back="Twilight Cape",
  201. waist="Hachirin-no-Obi",})
  202.  
  203. sets.midcast.Curaga = set_combine(sets.midcast.Cure, {
  204. ring2="Levia. Ring +1",
  205. waist="Luminary Sash",})
  206.  
  207. sets.midcast.StatusRemoval = {
  208. main="Murgleis",
  209. sub="Forfend",
  210. ammo="Impatiens",
  211. head={ name="Kaykaus Mitra +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  212. body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
  213. hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
  214. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  215. feet={ name="Vanya Clogs", augments={'"Cure" potency +5%','"Cure" spellcasting time -15%','"Conserve MP"+6',}},
  216. neck="Incanter's Torque",
  217. waist="Siegel Sash",
  218. left_ear="Etiolation Earring",
  219. right_ear="Friomisi Earring",
  220. left_ring="Levia. Ring +1",
  221. right_ring="Lebeche Ring",
  222. back="Solemnity Cape",}
  223.  
  224. sets.midcast.Cursna = set_combine(sets.midcast.StatusRemoval, {
  225. feet="Vanya Clogs",
  226. neck="Malison Medallion",
  227. ear1="Beatific Earring",
  228. back="Oretan. Cape +1",})
  229.  
  230. sets.midcast['Enhancing Magic'] = {
  231. main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
  232. sub="Enki Strap",
  233. ammo="Pemphredo Tathlum",
  234. head={ name="Carmine Mask +1", augments={'Accuracy+20','Mag. Acc.+12','"Fast Cast"+4',}},
  235. body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
  236. hands={ name="Viti. Gloves +1", augments={'Enhances "Phalanx II" effect',}},
  237. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  238. feet="Leth. Houseaux +1",
  239. neck="Incanter's Torque",
  240. waist="Luminary Sash",
  241. left_ear="Etiolation Earring",
  242. right_ear="Stikini Ring",
  243. left_ring="Stikini Ring",
  244. right_ring="Lebeche Ring",
  245. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},} --"Ghostfyre Cape
  246.  
  247. sets.midcast.EnhancingDuration = {
  248. main="Murgleis",
  249. sub="Forfend",
  250. head="Telchine Cap",
  251. body="Telchine Chas.",
  252. hands="Atrophy Gloves +1",
  253. legs="Telchine Braconi",
  254. feet="Leth. Houseaux +1",
  255. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},} --Mnd one to Make
  256.  
  257. sets.midcast.Spikes = set_combine(sets.midcast.EnhancingDuration, { legs= "Mrc. Trousers"}) --Add more.
  258.  
  259. sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {
  260. main="Bolelabunga",
  261. sub="Beatific Shield +1",}) -- To get
  262.  
  263. sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {
  264. head="Amalric Coif +1",
  265. --body="Atrophy Tabard +2",
  266. legs="Leth. Fuseau +1",
  267. waist="Gishdubar Sash",
  268. back="Grapevine Cape",}) --Ghostfyre
  269.  
  270. sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {
  271. neck="Nodens Gorget",
  272. waist="Siegel Sash",}) --To work on set
  273.  
  274. sets.midcast['Phalanx'] = sets.midcast['Enhancing Magic']
  275.  
  276. sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {
  277. head="Amalric Coif +1",
  278. waist="Emphatikos Rope",})
  279.  
  280.  
  281. -- Custom spell classes
  282.  
  283. sets.midcast.MndEnfeebles = {
  284. main="Murgleis",
  285. sub="Forfend",
  286. ammo="Quartz Tathlum +1",
  287. head="Carmine Mask +1",
  288. --body="Atrophy Tabard +2",
  289. body="Lethargy Sayon +1",
  290. hands="Kaykaus Cuffs +1",
  291. legs="Chironic Hose",
  292. feet="Skaoi Boots",
  293. neck="Imbodla Necklace",
  294. ear1="Gwati Earring",
  295. ear2="Digni. Earring",
  296. ring1="Stikini Ring",
  297. ring2="Stikini Ring",
  298. back="Sucellos's Cape", --Mnd one to Make
  299. waist="Luminary Sash",}
  300.  
  301. sets.midcast['MndEnfeebles'].Resistant = set_combine(sets.midcast['MndEnfeebles'], {
  302. body= "Vanya Robe"})
  303.  
  304. sets.midcast.IntEnfeebles = set_combine(sets.midcast["MndEnfeebles"],{
  305. ammo="Pemphredo Tathlum",
  306. back={name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},
  307. waist="Channeler's Stone"})
  308.  
  309. sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  310.  
  311.  
  312. sets.midcast['Dia III'] = set_combine(sets.midcast.MndEnfeebles, {head="Viti. Chapeau +1"})
  313. sets.midcast['Paralyze II'] = set_combine(sets.midcast.MndEnfeebles, {head="Vitivation Boots +1"})
  314. sets.midcast['Slow II'] = set_combine(sets.midcast.MndEnfeebles, {head="Viti. Chapeau +1"})
  315.  
  316. sets.midcast['Dark Magic'] = {
  317. main="Murgleis",
  318. sub="Forfend",
  319. ammo="Pemphredo Tathlum",
  320. head="Amalric Coif +1",
  321. body="Shango Robe",
  322. hands="Jhakri Cuffs +1",
  323. legs="Chironic Hose",
  324. feet="Merlinic Crackows",
  325. neck="Incanter's Torque",
  326. ear1="Hermetic Earring",
  327. ear2="Digni. Earring",
  328. ring1="Stikini Ring",
  329. ring2="Stikini Ring",
  330. back={name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},
  331. waist="Casso Sash",}
  332.  
  333. sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  334. head="Pixie Hairpin +1",
  335. feet="Merlinic Crackows",
  336. ear2="Hirudinea Earring",
  337. ring2="Archon Ring",
  338. waist="Fucho-no-obi",
  339. hands="Chironic Gloves"}) --to type augment or export
  340.  
  341. sets.midcast.Aspir = sets.midcast.Drain
  342. sets.midcast.Stun = set_combine(sets.midcast['Dark Magic'], {waist="Luminary Sash"})
  343.  
  344. sets.midcast['Elemental Magic'] = {
  345. main={ name="Grioavolr", augments={'Magic burst mdg.+10%','INT+7','Mag. Acc.+8','"Mag.Atk.Bns."+12',}},
  346. sub="Enki Strap",
  347. ammo="Pemphredo Tathlum",
  348. head={ name="Merlinic Hood", augments={'Mag. Acc.+22 "Mag.Atk.Bns."+22','Magic burst mdg.+10%','Mag. Acc.+3',}},
  349. body={ name="Amalric Doublet +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}}, --(6)
  350. hands={ name="Amalric Gages +1", augments={'INT+12','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  351. legs={ name="Amalric Slops +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  352. feet={ name="Amalric Nails +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  353. neck="Mizu. Kubikazari",
  354. waist="Yamabuki-no-Obi", --Refoccilation Stone
  355. left_ear="Friomisi Earring",
  356. right_ear="Hecate's Earring",
  357. left_ring="Shiva Ring +1",
  358. right_ring="Mujin Band",
  359. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}}}
  360.  
  361. sets.magic_burst = {
  362. main={ name="Grioavolr", augments={'Magic burst mdg.+10%','INT+7','Mag. Acc.+8','"Mag.Atk.Bns."+12',}}, --10
  363. head={ name="Merlinic Hood", augments={'Mag. Acc.+22 "Mag.Atk.Bns."+22','Magic burst mdg.+10%','Mag. Acc.+3',}}, --10
  364. neck="Mizu. Kubikazari", --10
  365. ring1="Mujin Band", --(5)
  366. right_ear="Static Earring", --5
  367. left_ring="Locus Ring",} --5
  368.  
  369. sets.midcast['Elemental Magic'].Seidr = set_combine(sets.midcast['Elemental Magic'], {
  370. body="Seidr Cotehardie",
  371. neck="Sanctity Necklace",})
  372.  
  373. sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {
  374. main="Murgleis",
  375. neck="Sanctity Necklace",
  376. ear2="Hermetic Earring",
  377. waist="Yamabuki-no-Obi",})
  378.  
  379. sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {
  380. main="",
  381. sub="Niobid Strap",
  382. head=empty,
  383. body="Twilight Cloak",
  384. ring1="Archon Ring",})
  385.  
  386. sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
  387.  
  388.  
  389. ------------------------------------------------------------------------------------------------
  390. ---------------------------------------- #5 Melee Sets -----------------------------------------
  391. ------------------------------------------------------------------------------------------------
  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. -- RDM DW Trait: 25% DW /NIN, 15% /DNC
  399.  
  400. -- No Magic Haste (74% DW to cap) -- 71%
  401.  
  402. sets.engaged = {
  403. ammo="Ginsen",
  404. head={ name="Taeon Chapeau", augments={'Accuracy+18 Attack+18','"Dual Wield"+5','DEX+7',}}, --5
  405. body={ name="Taeon Tabard", augments={'Mag. Evasion+7','"Triple Atk."+2','Phalanx +2',}}, --5
  406. hands={ name="Taeon Gloves", augments={'Mag. Acc.+1','"Triple Atk."+2',}}, --5
  407. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}}, --6
  408. feet={ name="Taeon Boots", augments={'Accuracy+17 Attack+17','"Dual Wield"+5','DEX+9',}}, --9
  409. neck="Asperity Necklace",
  410. waist="Reiki Yotai", --7
  411. left_ear="Suppanomimi", --5
  412. right_ear="Eabani Earring", --4
  413. left_ring="Petrov Ring",
  414. right_ring="Hetairoi Ring",
  415. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},}
  416.  
  417. sets.engaged.LowAcc = set_combine(sets.engaged, {
  418. neck="Combatant's Torque",
  419. ring1="Cacoethic Ring +1",
  420. })
  421.  
  422. sets.engaged.MidAcc = set_combine(sets.engaged.LowAcc, {
  423. head="Carmine Mask +1",
  424. })
  425.  
  426. sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {
  427. ear1="Digni. Earring",
  428. waist="Olseni Belt",
  429. })
  430.  
  431. sets.engaged.STP = set_combine(sets.engaged, {
  432. ammo="Ginsen",
  433. head="Aya. Zucchetto +1",
  434. body="Ayanmo Corazza +1",
  435. hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},
  436. legs="Aya. Cosciales +1",
  437. feet={ name="Carmine Greaves +1", augments={'Accuracy+10','DEX+10','MND+15',}},
  438. neck="Caro Necklace",
  439. waist="Windbuffet Belt +1",
  440. left_ear="Brutal Earring",
  441. right_ear="Mache Earring",
  442. left_ring="Etana Ring",
  443. right_ring="Mephitas's Ring +1",
  444. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','MND+1','"Fast Cast"+4',}},
  445. })
  446.  
  447.  
  448. -- 15% Magic Haste (67% DW to cap) --67 Cap
  449. sets.engaged.LowHaste = {
  450. ammo="Ginsen",
  451. head={ name="Taeon Chapeau", augments={'Accuracy+18 Attack+18','"Dual Wield"+5','DEX+7',}}, --5
  452. body={ name="Taeon Tabard", augments={'Mag. Evasion+7','"Triple Atk."+2','Phalanx +2',}}, --5
  453. hands={ name="Taeon Gloves", augments={'Mag. Acc.+1','"Triple Atk."+2',}}, --5
  454. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}}, --6
  455. feet={ name="Taeon Boots", augments={'Accuracy+17 Attack+17','"Dual Wield"+5','DEX+9',}}, --9
  456. neck="Asperity Necklace",
  457. waist="Reiki Yotai", --7
  458. left_ear="Suppanomimi", --5
  459. right_ear="Brutal Earring",
  460. left_ring="Petrov Ring",
  461. right_ring="Hetairoi Ring",
  462. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},}
  463.  
  464. sets.engaged.LowAcc.LowHaste = set_combine(sets.engaged.LowHaste, {
  465. neck="Combatant's Torque",
  466. ring1="Cacoethic Ring +1",
  467. })
  468.  
  469. sets.engaged.MidAcc.LowHaste = set_combine(sets.engaged.LowAcc.LowHaste, {
  470. head="Carmine Mask +1",
  471. right_ear="Eabani Earring",
  472. })
  473.  
  474. sets.engaged.HighAcc.LowHaste = set_combine(sets.engaged.MidAcc.LowHaste, {
  475. ear1="Cessance Earring",
  476. ear2="Telos Earring",
  477. ring1="Ramuh Ring +1",
  478. waist="Olseni Belt",
  479. })
  480.  
  481. sets.engaged.STP.LowHaste = set_combine(sets.engaged.STP, {})
  482.  
  483. -- 30% Magic Haste (56% DW to cap) --57
  484. sets.engaged.MidHaste = {
  485. ammo="Ginsen",
  486. head={ name="Taeon Chapeau", augments={'Accuracy+18 Attack+18','"Dual Wield"+5','DEX+7',}}, --5
  487. body="Ayanmo Corazza +1",
  488. hands={ name="Taeon Gloves", augments={'Mag. Acc.+1','"Triple Atk."+2',}}, --5
  489. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}}, --6
  490. feet={ name="Taeon Boots", augments={'Accuracy+17 Attack+17','"Dual Wield"+5','DEX+9',}}, --9
  491. neck="Asperity Necklace",
  492. waist="Reiki Yotai", --7
  493. left_ear="Trux Earring",
  494. right_ear="Brutal Earring",
  495. left_ring="Petrov Ring",
  496. right_ring="Hetairoi Ring",
  497. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},}
  498.  
  499. sets.engaged.LowAcc.MidHaste = set_combine(sets.engaged.MidHaste, {
  500. neck="Combatant's Torque",
  501. ring1="Cacoethic Ring +1",
  502. })
  503.  
  504. sets.engaged.MidHaste.MidAcc = set_combine(sets.engaged.LowAcc.MidHaste, {
  505. head="Carmine Mask +1",
  506. })
  507.  
  508. sets.engaged.HighAcc.MidHaste = set_combine(sets.engaged.MidHaste.MidAcc, {
  509. ear2="Digni. Earring",
  510. ring2="Cacoethic Ring",
  511. waist="Olseni Belt",
  512. })
  513.  
  514. sets.engaged.STP.MidHaste = set_combine(sets.engaged.STP, {})
  515.  
  516. -- 35% Magic Haste (51% DW to cap) 50
  517. sets.engaged.HighHaste = {
  518. ammo="Ginsen",
  519. head={ name="Taeon Chapeau", augments={'Accuracy+18 Attack+18','"Dual Wield"+5','DEX+7',}}, --5
  520. body="Ayanmo Corazza +1",
  521. hands={ name="Taeon Gloves", augments={'Mag. Acc.+1','"Triple Atk."+2',}}, --5
  522. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}}, --6
  523. feet={ name="Taeon Boots", augments={'Accuracy+17 Attack+17','"Dual Wield"+5','DEX+9',}}, --9
  524. neck="Asperity Necklace",
  525. waist="Windbuffet Belt +1",
  526. left_ear="Trux Earring",
  527. right_ear="Brutal Earring",
  528. left_ring="Petrov Ring",
  529. right_ring="Hetairoi Ring",
  530. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},}
  531.  
  532. sets.engaged.LowAcc.HighHaste = set_combine(sets.engaged.HighHaste, {
  533. neck="Combatant's Torque",
  534. ring1="Cacoethic Ring +1",
  535. })
  536.  
  537. sets.engaged.MidAcc.HighHaste = set_combine(sets.engaged.LowAcc.HighHaste, {
  538. head="Carmine Mask +1",
  539. waist="Reiki Yotai",
  540. })
  541.  
  542. sets.engaged.HighAcc.HighHaste = set_combine(sets.engaged.MidAcc.HighHaste, {
  543. ear2="Telos Earring",----Digni
  544. ring2="Cacoethic Ring",
  545. waist="Olseni Belt",})
  546.  
  547. sets.engaged.STP.HighHaste = set_combine(sets.engaged.STP, {})
  548.  
  549. -- 47% Magic Haste (36% DW to cap)
  550. sets.engaged.MaxHaste = {
  551. ammo="Ginsen",
  552. head="Carmine Mask +1",
  553. body="Ayanmo Corazza +1",
  554. hands={ name="Taeon Gloves", augments={'Mag. Acc.+1','"Triple Atk."+2',}}, --5
  555. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}}, --6
  556. feet="Carmine Greaves +1",
  557. neck="Asperity Necklace",
  558. waist="Windbuffet Belt +1",
  559. left_ear="Trux Earring",
  560. right_ear="Brutal Earring",
  561. left_ring="Petrov Ring",
  562. right_ring="Hetairoi Ring",
  563. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},}
  564.  
  565. sets.engaged.LowAcc.MaxHaste = set_combine(sets.engaged.MaxHaste, {
  566. neck="Combatant's Torque",
  567. ring1="Cacoethic Ring +1",
  568. })
  569.  
  570. sets.engaged.MidAcc.MaxHaste = set_combine(sets.engaged.LowAcc.MaxHaste, {
  571. })
  572.  
  573. sets.engaged.HighAcc.MaxHaste = set_combine(sets.engaged.MidAcc.MaxHaste, {
  574. ear2="Telos Earring",----Digni
  575. ring2="Cacoethic Ring",
  576. waist="Olseni Belt",})
  577.  
  578. sets.engaged.STP.MaxHaste = set_combine(sets.engaged.STP, {})
  579.  
  580. sets.aftercast = {}
  581.  
  582. sets.aftercast.DT = {
  583. sub=current_shield,
  584. ammo="Homiliary",
  585. head="Aya. Zucchetto +1",
  586. body="Ayanmo Corazza +1",
  587. hands="Aya. Manopolas +1",
  588. legs="Aya. Cosciales +1",
  589. feet="Aya. Gambieras +1",
  590. neck="Twilight Torque",
  591. waist="Flume Belt +1",
  592. left_ear="Etiolation Earring",
  593. right_ear="Odnowa Earring +1",
  594. left_ring="Defending Ring",
  595. right_ring="Patricius Ring",
  596. back="Reiki Cloak"}
  597.  
  598. -------------------------------------------------------------------------------------------------------------------------------------
  599. ---------------------------------------------------------#6 WS Sets -----------------------------------------------------------------
  600. -------------------------------------------------------------------------------------------------------------------------------------
  601.  
  602.  
  603. sets.midcast['Chant du Cygne']= {
  604. ammo="Yetshila",
  605. head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
  606. body="Ayanmo Corazza +1",
  607. hands="Jhakri Cuff +1",
  608. legs="Aya. Cosciales +1",
  609. feet="Aya. Gambieras +1",
  610. neck="Fotia Gorget",
  611. waist="Fotia Belt",
  612. left_ear="Mache Earring",
  613. right_ear={ name="Moonshade Earring", augments={'"Mag.Atk.Bns."+4','TP Bonus +25',}},
  614. left_ring="Begrudging Ring",
  615. right_ring="Apate Ring",
  616. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},}
  617. sets.midcast= {}
  618.  
  619. end
  620.  
  621.  
  622. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  623. function display_current_job_state(eventArgs)
  624. display_current_caster_state()
  625. eventArgs.handled = true
  626. end
  627. -------------------------------------------------------------------------------------------------------------------
  628. --------------------------------#12 Job-specific hooks for standard casting events.--------------------------------
  629. -------------------------------------------------------------------------------------------------------------------
  630.  
  631. -- Run after the default midcast() is done.
  632. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  633.  
  634. function job_post_midcast(spell, action, spellMap, eventArgs)
  635. if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
  636. equip(sets.buff.Saboteur)
  637. elseif spell.skill == 'Enhancing Magic' and classes.NoSkillSpells:contains(spell.english) then
  638. equip(sets.midcast.EnhancingDuration)
  639. elseif spell.skill == 'Enhancing Magic' and spell.target.type == 'PLAYER' then
  640. if buffactive.composure then
  641. equip(sets.buff.ComposureOther)
  642. end
  643. elseif spellMap == 'Cure' and spell.target.type == 'SELF' then
  644. equip(sets.midcast.CureSelf)
  645. elseif spell.skill == 'Elemental Magic' then
  646. if spell.english == "Impact" then
  647. equip(sets.midcast.Impact)
  648. end
  649. end
  650. if (spell.element == world.day_element or spell.element == world.weather_element) then
  651. equip(sets.Obi)
  652. end
  653. if default_spell_map == 'Spike' then
  654. equip(sets.midcast.spike)
  655. end
  656. end
  657.  
  658. function job_aftercast(spell, action, spellMap, eventArgs)
  659.  
  660. if autorun == 1 then
  661. windower.ffxi.run()
  662. autorun = 0
  663. end
  664.  
  665. end
  666.  
  667.  
  668. -------------------------------------------------------------------------------------------------------------------
  669. -- Job-specific hooks for non-casting events.
  670. -------------------------------------------------------------------------------------------------------------------
  671.  
  672.  
  673. function job_buff_change(buff,gain)
  674.  
  675. if buff == "doom" then
  676. if gain then
  677. equip(sets.buff.Doom)
  678. send_command('@input /p Doomed.')
  679. disable('ring1','ring2','waist')
  680. else
  681. enable('ring1','ring2','waist')
  682. handle_equipping_gear(player.status)
  683. end
  684. end
  685. if buff == "Saboteur" then
  686. if gain then
  687. equip(sets.buff.Saboteur)
  688. send_command('@input /p Saboteur.')
  689. disable('hands')
  690. else
  691. enable('hands')
  692. handle_equipping_gear(player.status)
  693. end
  694. end
  695.  
  696. end
  697.  
  698. -- Called when a player gains or loses a buff.
  699. -- buff == buff gained or lost
  700. -- gain == true if the buff was gained, false if it was lost.
  701. function job_buff_change(buff,gain)
  702. -- If we gain or lose any haste buffs, adjust which gear set we target.
  703. if S{'haste', 'march', 'mighty guard', 'embrava', 'haste samba', 'geo-haste', 'indi-haste'}:contains(buff:lower()) then
  704. determine_haste_group()
  705. if not midaction() then
  706. handle_equipping_gear(player.status)
  707. end
  708. end
  709.  
  710. if buffactive['Reive Mark'] then
  711. equip(sets.Reive)
  712. disable('neck')
  713. else
  714. enable('neck')
  715. end
  716.  
  717. if buff == "doom" then
  718. if gain then
  719. equip(sets.buff.Doom)
  720. send_command('@input /p Doomed.')
  721. disable('ring1','ring2','waist')
  722. else
  723. enable('ring1','ring2','waist')
  724. handle_equipping_gear(player.status)
  725. end
  726. end
  727.  
  728. end
  729. -------------------------------------------------------------------------------------------------------------------
  730. ------------------------- User code that supplements standard library decisions. ----------------------------------
  731. -------------------------------------------------------------------------------------------------------------------
  732.  
  733. -- Called for direct player commands.
  734.  
  735. function job_self_command(cmdParams, eventArgs)
  736. if cmdParams[1]:lower() == 'scholar' then
  737. handle_strategems(cmdParams)
  738. eventArgs.handled = true
  739. elseif cmdParams[1]:lower() == 'nuke' then
  740. handle_nuking(cmdParams)
  741. eventArgs.handled = true
  742. end
  743. end
  744.  
  745. -- Custom spell mapping.
  746. function job_get_spell_map(spell, default_spell_map)
  747. if spell.action_type == 'Magic' then
  748. if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  749. if (world.weather_element == 'Light' or world.day_element == 'Light') then
  750. return 'CureWeather'
  751. end
  752. elseif spell.skill == 'Enfeebling Magic' then
  753. if spell.type == 'WhiteMagic' then
  754. return 'MndEnfeebles'
  755. else
  756. return 'IntEnfeebles'
  757. end
  758. end
  759. end
  760. end
  761.  
  762.  
  763. -------------------------------------------------------------------------------------------------------------------
  764. --#10 Utility functions specific to this job for Haste calculation when Sub NIN, Sub DNC needs 10% more DW.
  765. -------------------------------------------------------------------------------------------------------------------
  766.  
  767. function determine_haste_group()
  768.  
  769. -- Gearswap can't detect the difference between Haste I and Haste II
  770. -- so use winkey-H to manually set Haste spell level.
  771.  
  772. -- Haste (buffactive[33]) - 15%
  773. -- Haste II (buffactive[511]) - 30%
  774. -- Haste Samba - 5%/10%
  775. -- Victory March +0/+3/+4/+5 9.4%/14%/15.6%/17.1%
  776. -- Advancing March +0/+3/+4/+5 6.3%/10.9%/12.5%/14%
  777. -- Honor March +0/+1 (Spell id[417])
  778. -- Embrava - 30%
  779. -- Mighty Guard (buffactive[604]) - 15%
  780. -- Geo-Haste (buffactive[580]) - 40%
  781.  
  782.  
  783.  
  784. classes.CustomMeleeGroups:clear()
  785.  
  786. if state.HasteMode.value == 'Haste II' then
  787. if(((buffactive[33] or buffactive[580] or buffactive.embrava) and (buffactive.march or buffactive[604])) or
  788. (buffactive[33] and (buffactive[580] or buffactive.embrava)) or
  789. (buffactive.march == 2 and buffactive[604])) then
  790. --add_to_chat(215, '---------- <<<< | Magic Haste Level: 43% | >>>> ----------')
  791. classes.CustomMeleeGroups:append('MaxHaste')
  792. elseif ((buffactive[33] or buffactive.march == 2 or buffactive[580]) and buffactive['haste samba']) then
  793. --add_to_chat(004, '---------- <<<< | Magic Haste Level: 35% | >>>> ----------')
  794. classes.CustomMeleeGroups:append('HighHaste')
  795. elseif ((buffactive[580] or buffactive[33] or buffactive.march == 2) or
  796. (buffactive.march == 1 and buffactive[604])) then
  797. --add_to_chat(008, '---------- <<<< | Magic Haste Level: 30% | >>>> ----------')
  798. classes.CustomMeleeGroups:append('MidHaste')
  799. elseif (buffactive.march == 1 or buffactive[604]) then
  800. --add_to_chat(007, '---------- <<<< | Magic Haste Level: 15% | >>>> ----------')
  801. classes.CustomMeleeGroups:append('LowHaste')
  802. end
  803. else
  804. if (buffactive[580] and ( buffactive.march or buffactive[33] or buffactive.embrava or buffactive[604]) ) or
  805. (buffactive.embrava and (buffactive.march or buffactive[33] or buffactive[604])) or
  806. (buffactive.march == 2 and (buffactive[33] or buffactive[604])) or
  807. (buffactive[33] and buffactive[604] and buffactive.march ) then
  808. --add_to_chat(215, '---------- <<<< | Magic Haste Level: 43% | >>>> ----------')
  809. classes.CustomMeleeGroups:append('MaxHaste')
  810. elseif ((buffactive[604] or buffactive[33]) and buffactive['haste samba'] and buffactive.march == 1) or
  811. (buffactive.march == 2 and buffactive['haste samba']) or
  812. (buffactive[580] and buffactive['haste samba'] ) then
  813. --add_to_chat(004, '---------- <<<< | Magic Haste Level: 35% | >>>> ----------')
  814. classes.CustomMeleeGroups:append('HighHaste')
  815. elseif (buffactive.march == 2 ) or
  816. ((buffactive[33] or buffactive[604]) and buffactive.march == 1 ) or -- MG or haste + 1 march
  817. (buffactive[580] ) or -- geo haste
  818. (buffactive[33] and buffactive[604]) then
  819. --add_to_chat(008, '---------- <<<< | Magic Haste Level: 30% | >>>> ----------')
  820. classes.CustomMeleeGroups:append('MidHaste')
  821. elseif buffactive[33] or buffactive[604] or buffactive.march == 1 then
  822. --add_to_chat(007, '---------- <<<< | Magic Haste Level: 15% | >>>> ----------')
  823. classes.CustomMeleeGroups:append('LowHaste')
  824. end
  825. end
  826. end
  827.  
  828. -- State buff checks that will equip buff gear and mark the event as handled.
  829. function check_buff(buff_name, eventArgs)
  830. if state.Buff[buff_name] then
  831. equip(sets.buff[buff_name] or {})
  832. if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
  833. equip(sets.TreasureHunter)
  834. end
  835. eventArgs.handled = true
  836. end
  837. end
  838.  
  839.  
  840. -- Check for various actions that we've specified in user code as being used with TH gear.
  841. -- This will only ever be called if TreasureMode is not 'None'.
  842. -- Category and Param are as specified in the action event packet.
  843. function th_action_check(category, param)
  844. if category == 2 or -- any ranged attack
  845. --category == 4 or -- any magic action
  846. (category == 3 and param == 30) or -- Aeolian Edge
  847. (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
  848. (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
  849. then return true
  850. end
  851. end
  852.  
  853.  
  854. -- Function to lock the ranged slot if we have a ranged weapon equipped.
  855. function check_range_lock()
  856. if player.equipment.range ~= 'empty' then
  857. disable('range', 'ammo')
  858. else
  859. enable('range', 'ammo')
  860. end
  861. end
  862.  
  863.  
  864. -- Select default macro book on initial load or subjob change.
  865. function select_default_macro_book()
  866. -- Default macro set/book
  867. if player.sub_job == 'DNC' then
  868. set_macro_page(1, 2)
  869. elseif player.sub_job == 'WAR' then
  870. set_macro_page(2, 2)
  871. elseif player.sub_job == 'NIN' then
  872. set_macro_page(3, 2)
  873. elseif player.sub_job == 'BLM' then
  874. set_macro_page(4, 2)
  875. elseif player.sub_job == 'WHM' then
  876. set_macro_page(5, 2)
  877. elseif player.sub_job == 'SCH' then
  878. set_macro_page(7, 2)
  879. elseif player.sub_job == 'THF' then
  880. set_macro_page(6, 2)
  881. else
  882. set_macro_page(4, 2)
  883. end
  884. end
  885.  
  886. function set_lockstyle()
  887. send_command('wait 2; input /lockstyleset 56')
  888. end
  889.  
  890. -------------------------------------------------------------------------------------------------------------------
  891. --#6-- Setup functions for this job. Generally should not be modified.
  892. -------------------------------------------------------------------------------------------------------------------
  893.  
  894. -- Initialization function for this job file.
  895. function get_sets()
  896. mote_include_version = 2
  897.  
  898. -- Load and initialize the include file.
  899. include('Mote-Include.lua')
  900. end
  901.  
  902.  
  903. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  904.  
  905. function user_setup()
  906. state.OffenseMode:options('STP', 'Normal', 'LowAcc', 'MidAcc', 'HighAcc')
  907. state.CastingMode:options('Normal', 'Seidr', 'Resistant')
  908. state.IdleMode:options('Normal', 'DT')
  909.  
  910.  
  911. state.WeaponLock = M(false, 'Weapon Lock')
  912. state.MagicBurst = M(false, 'Magic Burst')
  913.  
  914. -- Additional local binds
  915.  
  916. send_command('bind !` gs c toggle MagicBurst')
  917. send_command('bind ^- gs c scholar light')
  918. send_command('bind ^= gs c scholar dark')
  919. send_command('bind !- gs c scholar addendum')
  920. send_command('bind != gs c scholar addendum')
  921. send_command('bind ^; gs c scholar speed')
  922. send_command('bind ![ gs c scholar aoe')
  923. send_command('bind !; gs c scholar cost')
  924. send_command('bind ^, input /ma Sneak <stpc>')
  925. send_command('bind ^. input /ma Invisible <stpc>')
  926. send_command('bind @z gs c toggle WeaponLock')
  927. send_command('bind @h gs c cycle HasteMode')
  928.  
  929. select_default_macro_book()
  930. set_lockstyle()
  931.  
  932. end
  933.  
  934. -- Called when this job file is unloaded (eg: job change)
  935. function user_unload()
  936.  
  937. send_command('unbind !`')
  938. send_command('unbind ^-')
  939. send_command('unbind ^=')
  940. send_command('unbind !-')
  941. send_command('unbind !=')
  942. send_command('unbind ^;')
  943. send_command('unbind ![')
  944. send_command('unbind !;')
  945. send_command('unbind ^,')
  946. send_command('unbind !.')
  947. send_command('unbind ^.')
  948. end
  949.  
  950. function customize_melee_set(meleeSet)
  951. if state.TreasureMode.value == 'Fulltime' then
  952. meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  953. end
  954.  
  955. return meleeSet
  956. end
  957.  
  958. function job_setup() --Sub THF
  959. state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
  960. state.Buff['Trick Attack'] = buffactive['trick attack'] or false
  961.  
  962. --Sub BLM
  963. state.Buff['Elemental Seal'] = buffactive['Elemental Seal'] or false
  964.  
  965. --Sub WHM
  966. state.Buff['Divine Seal'] = buffactive['Divine Seal'] or false
  967.  
  968.  
  969. --Main
  970. state.Buff['Composure'] = buffactive['Composure'] or false
  971. state.Buff['Chainspell'] = buffactive['Chainspell'] or false
  972. state.Buff['Stymie'] = buffactive['Stymie'] or false
  973. state.Buff['Spontaneity'] = buffactive['Spontaneity'] or false
  974. state.Buff['Saboteur'] = buffactive['Saboteur'] or false
  975.  
  976. state.Buff[''] = buffactive[''] or false
  977. state.Buff[''] = buffactive[''] or false
  978. state.Buff[''] = buffactive[''] or false
  979.  
  980. include('Mote-TreasureHunter')
  981.  
  982. -- For th_action_check():
  983. -- JA IDs for actions that always have TH: Provoke, Animated Flourish
  984. info.default_ja_ids = S{35, 204}
  985. -- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
  986. info.default_u_ja_ids = S{201, 202, 203, 205, 207}
  987.  
  988. state.HasteMode = M{['description']='Haste Mode', 'Haste II', 'Haste I'}
  989. end
  990. -- Called by the 'update' self-command.
  991.  
  992. function job_update(cmdParams, eventArgs)
  993. th_update(cmdParams, eventArgs)
  994. end
  995.  
  996. function job_update(cmdParams, eventArgs)
  997. determine_haste_group()
  998. end
  999.  
  1000.  
  1001. -- Function to display the current relevant user state when doing an update.
  1002. -- Return true if display was handled, and you don't want the default info shown.
  1003. function display_current_job_state(eventArgs)
  1004. local msg = '[ Melee'
  1005.  
  1006. if state.CombatForm.has_value then
  1007. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  1008. end
  1009.  
  1010. msg = msg .. ': '
  1011.  
  1012. msg = msg .. state.OffenseMode.value
  1013. if state.HybridMode.value ~= 'Normal' then
  1014. msg = msg .. '/' .. state.HybridMode.value
  1015. end
  1016. msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value
  1017.  
  1018. if state.DefenseMode.value ~= 'None' then
  1019. msg = msg .. ' ][ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
  1020. end
  1021.  
  1022. if state.Kiting.value then
  1023. msg = msg .. ' ][ Kiting Mode: ON'
  1024. end
  1025.  
  1026. msg = msg .. ' ][ TH: ' .. state.TreasureMode.value
  1027.  
  1028. msg = msg .. ' ]'
  1029.  
  1030. add_to_chat(060, msg)
  1031.  
  1032. eventArgs.handled = true
  1033. end
  1034. ------------------------------------------------------------------------------------------------------------
  1035. -----------------------------------------------#13 Stratagems --------------------------------------------
  1036. ------------------------------------------------------------------------------------------------------------
  1037. --[[ Addendum Commands:
  1038. Shorthand versions for each strategem type that uses the version appropriate for
  1039. the current Arts.
  1040. Light Arts Dark Arts
  1041.  
  1042. gs c scholar light Light Arts/Addendum
  1043. gs c scholar dark Dark Arts/Addendum
  1044. gs c scholar cost Penury Parsimony
  1045. gs c scholar speed Celerity Alacrity
  1046. gs c scholar aoe Accession Manifestation
  1047. gs c scholar addendum Addendum: White Addendum: Black
  1048. --]]
  1049.  
  1050. function update_active_strategems()
  1051. state.Buff['Accession'] = buffactive['Accession'] or false
  1052. state.Buff['Manifestation'] = buffactive['Manifestation'] or false
  1053. state.Buff['Penury'] = buffactive['Penury'] or false
  1054. state.Buff['Parsimony'] = buffactive['Parsimony'] or false
  1055. state.Buff['Celerity'] = buffactive['Celerity'] or false
  1056. state.Buff['Alacrity'] = buffactive['Alacrity'] or false
  1057. state.Buff['Klimaform'] = buffactive['Klimaform'] or false
  1058. end
  1059.  
  1060. function update_sublimation()
  1061. state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  1062. end
  1063.  
  1064. function job_state_change(stateField, newValue, oldValue)
  1065. if state.WeaponLock.value == true then
  1066. disable('main','sub')
  1067. else
  1068. enable('main','sub')
  1069. end
  1070. end
  1071. --------------------------------------------------------------------------------------------------
  1072. ---------------------------- General handling of strategems in an Arts-agnostic way. -------------
  1073. -------------------------------------- Format: gs c scholar <strategem> --------------------------
  1074. --------------------------------------------------------------------------------------------------
  1075.  
  1076. function handle_strategems(cmdParams)
  1077. --cmdParams[1] == 'scholar'
  1078. --cmdParams[2] == 'strategem to use'
  1079.  
  1080. if not cmdParams[2] then
  1081. add_to_chat(123,'Error: No strategem command given.')
  1082. return
  1083. end
  1084. local strategem = cmdParams[2]:lower()
  1085.  
  1086. if strategem == 'light' then
  1087. if buffactive['light arts'] then
  1088. send_command('input /ja "Addendum: White" <me>')
  1089. elseif buffactive['addendum: white'] then
  1090. add_to_chat(122,'Error: Addendum: White is already active.')
  1091. else
  1092. send_command('input /ja "Light Arts" <me>')
  1093. end
  1094. elseif strategem == 'dark' then
  1095. if buffactive['dark arts'] then
  1096. send_command('input /ja "Addendum: Black" <me>')
  1097. elseif buffactive['addendum: black'] then
  1098. add_to_chat(122,'Error: Addendum: Black is already active.')
  1099. else
  1100. send_command('input /ja "Dark Arts" <me>')
  1101. end
  1102. elseif buffactive['light arts'] or buffactive['addendum: white'] then
  1103. if strategem == 'cost' then
  1104. send_command('input /ja Penury <me>')
  1105. elseif strategem == 'speed' then
  1106. send_command('input /ja Celerity <me>')
  1107. elseif strategem == 'aoe' then
  1108. send_command('input /ja Accession <me>')
  1109. elseif strategem == 'addendum' then
  1110. send_command('input /ja "Addendum: White" <me>')
  1111. else
  1112. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  1113. end
  1114. elseif buffactive['dark arts'] or buffactive['addendum: black'] then
  1115. if strategem == 'cost' then
  1116. send_command('input /ja Parsimony <me>')
  1117. elseif strategem == 'speed' then
  1118. send_command('input /ja Alacrity <me>')
  1119. elseif strategem == 'aoe' then
  1120. send_command('input /ja Manifestation <me>')
  1121. elseif strategem == 'addendum' then
  1122. send_command('input /ja "Addendum: Black" <me>')
  1123. else
  1124. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  1125. end
  1126. else
  1127. add_to_chat(123,'No arts has been activated yet.')
  1128. end
  1129. end
  1130. -----------------------------------------------------------------------------------------------------------------------------
  1131. -----------------------------------------------------Dual Wield or Not Dual Wield...-----------------------------------------
  1132. -----------------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement