Advertisement
Guest User

rdm.lua Boq

a guest
Jul 4th, 2023
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 62.39 KB | None | 0 0
  1. (Global-Binds.lua contains additional non-job-related keybinds)
  2.  
  3.  
  4. -- Setup functions for this job. Generally should not be modified.
  5. --
  6.  
  7. -- Initialization function for this job file.
  8. function get_sets()
  9. mote_include_version = 2
  10. include('organizer-lib')
  11. include('Mote-Include.lua')
  12. end
  13.  
  14. function job_setup()
  15.  
  16. state.CP = M(false, "CP Mode")
  17. state.Buff.Composure = buffactive.Composure or false
  18. state.Buff.Saboteur = buffactive.Saboteur or false
  19. state.Buff.Stymie = buffactive.Stymie or false
  20.  
  21. no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  22. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring", "Endorsement Ring", "Caliber Ring", "Signal Pearl", "Tactics Pearl", "Cumulus Masque +1", "Maat's Cap", "Treat Staff II"}
  23.  
  24. enfeebling_magic_acc = S{'Bind', 'Break', 'Dispel', 'Distract', 'Distract II', 'Frazzle',
  25. 'Frazzle II', 'Gravity', 'Gravity II', 'Silence'}
  26. enfeebling_magic_skill = S{'Distract III', 'Frazzle III', 'Poison II'}
  27. enfeebling_magic_effect = S{'Dia', 'Dia II', 'Dia III', 'Diaga', 'Blind', 'Blind II'}
  28. enfeebling_magic_sleep = S{'Sleep', 'Sleep II', 'Sleepga'}
  29.  
  30. skill_spells = S{
  31. 'Temper', 'Temper II', 'Enfire', 'Enfire II', 'Enblizzard', 'Enblizzard II', 'Enaero', 'Enaero II',
  32. 'Enstone', 'Enstone II', 'Enthunder', 'Enthunder II', 'Enwater', 'Enwater II'}
  33.  
  34. lockstyleset = 6
  35. end
  36.  
  37.  
  38. --
  39. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  40. --
  41.  
  42. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  43. function user_setup()
  44. state.OffenseMode:options('Normal', 'MidAcc', 'HighAcc')
  45. state.HybridMode:options('Normal', 'DT')
  46. state.WeaponskillMode:options('Normal', 'Acc')
  47. state.CastingMode:options('Normal', 'Seidr', 'Resistant')
  48. state.IdleMode:options('DWIdle', 'DT', 'Normal')
  49.  
  50. state.EnSpell = M{['description']='EnSpell', 'Enfire', 'Enblizzard', 'Enaero', 'Enstone', 'Enthunder', 'Enwater'}
  51. state.BarElement = M{['description']='BarElement', 'Barfire', 'Barblizzard', 'Baraero', 'Barstone', 'Barthunder', 'Barwater'}
  52. state.BarStatus = M{['description']='BarStatus', 'Baramnesia', 'Barvirus', 'Barparalyze', 'Barsilence', 'Barpetrify', 'Barpoison', 'Barblind', 'Barsleep'}
  53. state.GainSpell = M{['description']='GainSpell', 'Gain-STR', 'Gain-INT', 'Gain-AGI', 'Gain-VIT', 'Gain-DEX', 'Gain-MND', 'Gain-CHR'}
  54.  
  55. state.WeaponLock = M(false, 'Weapon Lock')
  56. state.MagicBurst = M(false, 'Magic Burst')
  57. state.SleepMode = M{['description']='Sleep Mode', 'Normal', 'MaxDuration'}
  58. state.EnspellMode = M(false, 'Enspell Melee Mode')
  59. state.NM = M(false, 'NM?')
  60. state.CP = M(false, "AutoWS Mode")
  61.  
  62. -- Additional local binds
  63. include('Global-Binds.lua') -- OK to remove this line
  64. --include('Global-WHM-Binds.lua') -- OK to remove this line
  65.  
  66. send_command('lua l gearinfo')
  67.  
  68. send_command('bind ^` input /ja "Composure" <me>')
  69. send_command('bind !` gs c toggle MagicBurst')
  70.  
  71. if player.sub_job == 'SCH' then
  72. send_command('bind ^- gs c scholar light')
  73. send_command('bind ^= gs c scholar dark')
  74. send_command('bind !- gs c scholar addendum')
  75. send_command('bind != gs c scholar addendum')
  76. send_command('bind ^; gs c scholar speed')
  77. send_command('bind ![ gs c scholar aoe')
  78. send_command('bind !; gs c scholar cost')
  79. end
  80.  
  81. send_command('bind !q input /ma "Temper II" <me>')
  82. send_command('bind !w input /ma "Flurry II" <stpc>')
  83. send_command('bind !e input /ma "Haste II" <stpc>')
  84. send_command('bind !r input /ma "Refresh III" <stpc>')
  85. send_command('bind !y input /ma "Phalanx II" <stpc>')
  86. send_command('bind !o input /ma "Regen II" <stpc>')
  87. send_command('bind !p input /ma "Blaze Spikes" <me>')
  88.  
  89. send_command('bind !insert gs c cycleback EnSpell')
  90. send_command('bind !delete gs c cycle EnSpell')
  91. send_command('bind ^insert gs c cycleback GainSpell')
  92. send_command('bind ^delete gs c cycle GainSpell')
  93. send_command('bind ^home gs c cycleback BarElement')
  94. send_command('bind ^end gs c cycle BarElement')
  95. send_command('bind ^pageup gs c cycleback BarStatus')
  96. send_command('bind ^pagedown gs c cycle BarStatus')
  97.  
  98. send_command('bind @s gs c cycle SleepMode')
  99. send_command('bind @e gs c cycle EnspellMode')
  100. send_command('bind @d gs c toggle NM')
  101. send_command('bind @w gs c toggle WeaponLock')
  102. send_command('bind @c gs c toggle CP')
  103. --send_command('bind @e gs c cycleback WeaponSet')
  104. send_command('bind @r gs c cycle WeaponSet')
  105.  
  106. send_command('bind ^numpad7 input /ws "Savage Blade" <t>')
  107. send_command('bind ^numpad9 input /ws "Chant du Cygne" <t>')
  108. send_command('bind ^numpad4 input /ws "Requiescat" <t>')
  109. send_command('bind ^numpad1 input /ws "Sanguine Blade" <t>')
  110. send_command('bind ^numpad2 input /ws "Seraph Blade" <t>')
  111.  
  112. select_default_macro_book()
  113. set_lockstyle()
  114.  
  115. state.Auto_Kite = M(false, 'Auto_Kite')
  116. Haste = 0
  117. DW_needed = 0
  118. DW = false
  119. moving = false
  120. update_combat_form()
  121. determine_haste_group()
  122. end
  123.  
  124. -- Called when this job file is unloaded (eg: job change)
  125. function user_unload()
  126. send_command('unbind ^`')
  127. send_command('unbind !`')
  128. send_command('unbind ^-')
  129. send_command('unbind ^=')
  130. send_command('unbind !-')
  131. send_command('unbind !=')
  132. send_command('unbind ^;')
  133. send_command('unbind ![')
  134. send_command('unbind !;')
  135. send_command('unbind !q')
  136. send_command('unbind !w')
  137. send_command('bind !e input /ma "Haste" <stpc>')
  138. send_command('bind !r input /ma "Refresh" <stpc>')
  139. send_command('bind !y input /ma "Phalanx" <me>')
  140. send_command('unbind !o')
  141. send_command('unbind !p')
  142. send_command('unbind @s')
  143. send_command('unbind @e')
  144. send_command('unbind @d')
  145. send_command('unbind @w')
  146. -- send_command('unbind @c')
  147. send_command('unbind @r')
  148. send_command('unbind !insert')
  149. send_command('unbind !delete')
  150. send_command('unbind ^insert')
  151. send_command('unbind ^delete')
  152. send_command('unbind ^home')
  153. send_command('unbind ^end')
  154. send_command('unbind ^pageup')
  155. send_command('unbind ^pagedown')
  156. send_command('unbind ^numpad7')
  157. send_command('unbind ^numpad9')
  158. send_command('unbind ^numpad4')
  159. send_command('unbind ^numpad1')
  160. send_command('unbind ^numpad2')
  161.  
  162. send_command('unbind #`')
  163. send_command('unbind #1')
  164. send_command('unbind #2')
  165. send_command('unbind #3')
  166. send_command('unbind #4')
  167. send_command('unbind #5')
  168. send_command('unbind #6')
  169. send_command('unbind #7')
  170. send_command('unbind #8')
  171. send_command('unbind #9')
  172. send_command('unbind #0')
  173. send_command('unbind ^n')
  174.  
  175. send_command('lua u gearinfo')
  176. end
  177.  
  178. -- Define sets and vars used by this job file.
  179. function init_gear_sets()
  180.  
  181. --Precast Sets
  182. sets.precast.JA['Chainspell'] = {body="Viti. Tabard +1"}
  183. sets.precast.FC = {
  184. head="Atrophy Chapeau +2", --14
  185. neck="Orunmila's Torque", --5
  186. body="Viti. Tabard +1", --13
  187. hands="Leyline Gloves", --8
  188. legs="Malignance Tights",
  189. --legs="Aya. Cosciales +2", --6
  190. feet={ name="Merlinic Crackows", augments={'VIT+2','Accuracy+14','Accuracy+10 Attack+10','Mag. Acc.+20 "Mag.Atk.Bns."+20',}}, --5
  191. --waist="Embla Sash", --5
  192. --back="Swith Cape", --3
  193. back="Ogapepo Cape", --2QC
  194. ear1="Malignance Earring", --4
  195. ear2="Loquacious Earring", --2
  196. --ring2="Weather. Ring +1", --5
  197.  
  198. ring1="Lebeche Ring", --2QC
  199. ammo="Impatiens", --2QC
  200. waist="Witful Belt" --3QC
  201. }
  202.  
  203. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {})
  204.  
  205. sets.precast.FC.Cure = set_combine(sets.precast.FC, {
  206. ammo="Impatiens", --(2)
  207. --legs="Kaykaus Tights +1", --7
  208. ring1="Lebeche Ring", --(2)
  209. --ring2="Weather. Ring +1", --5/(4)
  210. back="Ogapepo Cape", --(2)
  211. waist="Witful Belt", --(3)
  212. })
  213.  
  214. sets.precast.FC.Curaga = sets.precast.FC.Cure
  215. sets.precast.FC['Healing Magic'] = sets.precast.FC.Cure
  216. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {})
  217.  
  218. sets.precast.FC.Impact = set_combine(sets.precast.FC, {
  219. --ammo="Sapience Orb", --2
  220. head=empty,
  221. body="Twilight Cloak",
  222. --hands="Gende. Gages +1", --7
  223. neck="Orunmila's Torque", --5
  224. ear1="Malignance Earring",
  225. ear2="Loquacious Earring", --2
  226. --ear2="Enchntr. Earring +1", --2
  227. --ring1="Kishar Ring", --4
  228. back="Swith Cape", --3
  229. --waist="Shinjutsu-no-Obi +1", --5
  230. })
  231.  
  232. sets.precast.FC.Dispelga = set_combine(sets.precast.FC, {
  233. main="Daybreak",
  234. sub="Sacro Bulwark",
  235. })
  236.  
  237. sets.precast.Storm = set_combine(sets.precast.FC)
  238. sets.precast.FC.Utsusemi = sets.precast.FC.Cure
  239.  
  240.  
  241. --Weaponskill Sets
  242.  
  243. sets.precast.WS = {
  244. ammo="Oshasha's Treatise",
  245. head="Viti. Chapeau +1",
  246. body="Viti. Tabard +1",
  247. hands="Atrophy Gloves +3",
  248. legs="Malignance Tights",
  249. feet="Malignance Boots",
  250. neck="Fotia Gorget",
  251. ear1="Brutal Earring",
  252. ear2="Moonshade Earring",
  253. ring1="Rufescent Ring",
  254. ring2="Karieyh Ring +1",
  255. back={ name="Sucellos's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+2','Weapon skill damage +10%',}},
  256. waist="Fotia Belt",
  257. }
  258.  
  259. sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {
  260. --ammo="Yetshila +1",
  261. head="Malignance Chapeau",
  262. body="Ayanmo Corazza +2",
  263. hands="Malignance Gloves",
  264. --legs="Zoar Subligar +1",
  265. feet="Thereoid Greaves",
  266. --ear1="Sherida Earring",
  267. ring1="Begrudging Ring",
  268. --ring2="Ilabrat Ring",
  269. --back=gear.RDM_WS2_Cape,
  270. })
  271.  
  272. sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {
  273. --ammo="Voluspa Tathlum",
  274. head="Malignance Chapeau",
  275. neck="Combatant's Torque",
  276. ear2="Mache Earring +1",
  277. })
  278.  
  279. sets.precast.WS['Vorpal Blade'] = sets.precast.WS['Chant du Cygne']
  280. sets.precast.WS['Vorpal Blade'].Acc = sets.precast.WS['Chant du Cygne'].Acc
  281.  
  282. sets.precast.WS['Savage Blade'] = set_combine(sets.precast.WS, {
  283. --head="Cath Palug Crown",
  284. head="Merlinic Hood",
  285. body="Shamash Robe",
  286. --hands="Malignance Gloves",
  287. legs="Jhakri Slops +2",
  288. feet="Jhakri Pigaches +2",
  289. --waist="Sailfi Belt +1",
  290. })
  291.  
  292. sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {
  293. --ammo="Voluspa Tathlum",
  294. body="Jhakri Robe +2",
  295. neck="Combatant's Torque",
  296. hands="Malignance Gloves",
  297. waist="Kentarch Belt +1",
  298. })
  299.  
  300. sets.precast.WS['Sanguine Blade'] = {
  301. --ammo="Pemphredo Tathlum",
  302. head="Cath Palug Crown",
  303. body="Jhakri Robe +2",
  304. hands="Jhakri Cuffs +2",
  305. legs="Jhakri Slops +2",
  306. feet="Jhakri Pigaches +2",
  307. neck="Sanctity Necklace",
  308. ear1="Malignance Earring",
  309. ear2="Friomisi Earring",
  310. ring1="Diamond Ring",
  311. ring2="Freke Ring",
  312. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  313. waist="Sacro Cord",
  314. }
  315.  
  316. sets.precast.WS['Seraph Blade'] = set_combine(sets.precast.WS['Sanguine Blade'], {
  317. --head="Merlinic Hood",
  318. ear2="Moonshade Earring",
  319. --ring1="Weather. Ring +1",
  320. })
  321.  
  322. sets.precast.WS['Aeolian Edge'] = set_combine(sets.precast.WS['Seraph Blade'], {
  323. --head="Merlinic Hood",
  324. ear2="Moonshade Earring",
  325. --ring1="Shiva Ring +1",
  326. --waist="Orpheus's Sash",
  327. })
  328.  
  329. sets.precast.WS['Black Halo'] = set_combine(sets.precast.WS['Savage Blade'], {
  330. --ear2="Sherida Earring",
  331. ring1="Rufescent Ring",
  332. })
  333.  
  334. sets.precast.WS['Black Halo'].Acc = set_combine(sets.precast.WS['Black Halo'], {
  335. --ammo="Voluspa Tathlum",
  336. neck="Combatant's Torque",
  337. --ear2="Telos Earring",
  338. --waist="Grunfeld Rope",
  339. })
  340.  
  341.  
  342. --Midcast Sets
  343.  
  344. sets.midcast.FastRecast = sets.precast.FC
  345.  
  346. sets.midcast.SpellInterrupt = {
  347. --sub="Sacro Bulwark", --7
  348. ammo="Impatiens", --10
  349. legs="Carmine Cuisses +1", --20
  350. --ring1="Evanescence Ring", --5
  351. --waist="Rumination Sash", --10
  352. }
  353.  
  354. sets.midcast.Cure = {
  355. main="Daybreak", --30
  356. --sub="Sors Shield", --3/(-5)
  357. sub="Sacro Bulwark",
  358. ammo="Kalboron Stone",
  359. head="Vitiation Chapeau +1",
  360. body="Vitiation Tabard +1",
  361. hands="Telchine Gloves", --10
  362. legs="Atrophy Tights +2", --11
  363. feet="Chironic Slippers",
  364. neck="Incanter's Torque",
  365. ear1="Malignance Earring",
  366. ear2="Loquacious Earring",
  367. ring1="Lebeche Ring",
  368. ring2="Haoma's Ring",
  369. back="Solemnity Cape", --7
  370. waist="Latria Sash",
  371. }
  372.  
  373. sets.midcast.CureWeather = set_combine(sets.midcast.Cure, {
  374. main="Chatoyant Staff",
  375. --sub="Enki Strap",
  376. back="Twilight Cape",
  377. waist="Hachirin-no-Obi",
  378. })
  379.  
  380. sets.midcast.CureSelf = set_combine(sets.midcast.Cure, {
  381. neck="Phalaina Locket", -- 4(4)
  382. --ring2="Asklepian Ring", -- (3)
  383. waist="Gishdubar Sash", -- (10)
  384. })
  385.  
  386. sets.midcast.Curaga = set_combine(sets.midcast.Cure, {
  387. --ammo="Regal Gem",
  388. --ring1={name="Stikini Ring +1", bag="wardrobe3"},
  389. --ring2={name="Stikini Ring +1", bag="wardrobe4"},
  390. --waist="Luminary Sash",
  391. })
  392.  
  393. sets.midcast.StatusRemoval = {
  394. --head="Vanya Hood",
  395. --body="Vanya Robe",
  396. legs="Atrophy Tights +2",
  397. feet="Lethargy Houseaux +1",
  398. neck="Incanter's Torque",
  399. ear1="Malignance Earring",
  400. ear2="Loquacious Earring",
  401. ring1="Haoma's Ring",
  402. ring2="Haoma's Ring",
  403. back="Swith Cape",
  404. waist="Embla Sash",
  405. }
  406.  
  407. sets.midcast.Cursna = set_combine(sets.midcast.StatusRemoval, {
  408. --hands="Hieros Mittens",
  409. body="Viti. Tabard +1",
  410. neck="Debilis Medallion",
  411. legs="Carmine Cuisses +1",
  412. feet="Vanya Clogs",
  413. --ear1="Beatific Earring",
  414. ring1="Haoma's Ring",
  415. ring2="Haoma's Ring",
  416. back="Oretan. Cape +1",
  417. })
  418.  
  419.  
  420. sets.midcast['Enhancing Magic'] = {
  421. main="Pukulatmuj +1", --11
  422. sub="Pukulatmuj", --10
  423. --ammo="Regal Gem",
  424. head="Befouled Crown", --16
  425. body="Viti. Tabard +1", --19
  426. hands="Viti. Gloves +2", --22
  427. legs="Atrophy Tights +2", --19
  428. feet="Leth. Houseaux +1", --25
  429. neck="Incanter's Torque", --10
  430. ear1="Mimir Earring", --10
  431. ear2="Andoaa Earring", --5
  432. ring1={name="Stikini Ring +1", bag="wardrobe"}, --8
  433. ring2={name="Stikini Ring +1", bag="wardrobe"}, --8
  434. back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +3','Enha.mag. skill +10','Mag. Acc.+5','Enh. Mag. eff. dur. +19',}}, --10
  435. waist="Olympus Sash", --5
  436. }
  437.  
  438. sets.midcast.EnhancingDuration = set_combine(sets.midcast['Enhancing Magic'], {
  439. main={ name="Colada", augments={'Enh. Mag. eff. dur. +4','Mag. Acc.+3','"Mag.Atk.Bns."+17',}},
  440. sub="Ammurapi Shield",
  441. head="Telchine Cap",
  442. --body="Viti. Tabard +1",
  443. body="Telchine Chasuble",
  444. hands="Atrophy Gloves +3",
  445. legs="Telchine Braconi",
  446. feet="Leth. Houseaux +1",
  447. neck="Orunmila's Torque",
  448. back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +3','Enha.mag. skill +10','Mag. Acc.+5','Enh. Mag. eff. dur. +19',}},
  449. --back="Sucellos's Cape",
  450. waist="Embla Sash",
  451. ear1="Malignance Earring",
  452. ear2="Loquacious Earring",
  453. })
  454.  
  455. sets.buff.ComposureOther = set_combine(sets.midcast.EnhancingDuration, {
  456. head="Leth. Chappel +1",
  457. body="Lethargy Sayon +1",
  458. hands="Atrophy Gloves +3",
  459. legs="Leth. Fuseau +1",
  460. feet="Leth. Houseaux +1",
  461. waist="Embla Sash",
  462. })
  463.  
  464. sets.midcast.EnhancingSkill = set_combine(sets.midcast['Enhancing Magic'], {
  465. main="Pukulatmuj +1",
  466. sub="Pukulatmuj",
  467. hands="Viti. Gloves +2",
  468. })
  469.  
  470. sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {
  471. main="Bolelabunga",
  472. sub="Ammurapi Shield",
  473. })
  474.  
  475. sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {
  476. --head="Amalric Coif +1", -- +1
  477. --body="Atrophy Tabard +3", -- +1
  478. body="Atrophy Tabard +3",
  479. legs="Leth. Fuseau +1", -- +2
  480. })
  481.  
  482. sets.midcast.RefreshOtherComposure = set_combine(sets.buff.ComposureOther, {
  483. body="Atrophy Tabard +3", -- +1
  484. legs="Leth. Fuseau +1", -- +2
  485. })
  486.  
  487. sets.midcast.RefreshSelf = {
  488. --waist="Gishdubar Sash",
  489. --back="Grapevine Cape"
  490. body="Atrophy Tabard +3",
  491. legs="Leth. Fuseau +1",
  492. }
  493.  
  494. sets.midcast.Stoneskin = set_combine(sets.midcast.EnhancingDuration, {
  495. waist="Siegel Sash",
  496. })
  497.  
  498. sets.midcast['Phalanx'] = set_combine(sets.midcast.EnhancingDuration, { --caps at 500 enh skill
  499. main={ name="Colada", augments={'Enh. Mag. eff. dur. +4','Mag. Acc.+3','"Mag.Atk.Bns."+17',}},
  500. sub="Ammurapi Shield",
  501. ear2="Mimir Earring", --10 enh
  502. neck="Incanter's Torque", -- 10 enh
  503. hands="Atrophy Gloves +3",
  504. ring1="Stikini Ring +1", --8 enh
  505. ring2="Stikini Ring +1", --8 enh
  506. back="Ghostfyre Cape", --10 enh
  507. })
  508.  
  509. sets.midcast.Aquaveil = set_combine(sets.midcast.EnhancingSkill, sets.midcast.EnhancingDuration, {
  510. head="Chironic Hat",
  511. })
  512.  
  513. sets.midcast.Storm = sets.midcast.EnhancingDuration
  514. sets.midcast['Flurry II'] = sets.midcast.EnhancingDuration
  515. sets.midcast['Flurry'] = sets.midcast.EnhancingDuration
  516.  
  517. sets.midcast.GainSpell = set_combine(sets.midcast.EnhancingDuration, {
  518. main={ name="Colada", augments={'Enh. Mag. eff. dur. +4','Mag. Acc.+3','"Mag.Atk.Bns."+17',}},
  519. sub="Ammurapi Shield",
  520. --hands="Atrophy Gloves +3",
  521. hands="Vitiation Gloves +2",
  522. back="Ghostfyre Cape",
  523. })
  524.  
  525. sets.midcast.SpikesSpell = {
  526. main="Maxentius",
  527. sub="Pukulatmuj +1",
  528. head="Cath Palug Crown",
  529. body="Jhakri Robe +2",
  530. hands="Vitiation Gloves +2",
  531. legs="Chironic Hose",
  532. feet="Lethargy Houseaux +1",
  533. back="Ghostfyre Cape",
  534. neck="Sibyl Scarf",
  535. ear1="Malignance Earring",
  536. --ear2="Friomisi Earring",
  537. ring1="Diamond Ring",
  538. ring2="Freke Ring",
  539. waist="Sacro Cord"
  540. }
  541.  
  542.  
  543. sets.midcast.Protect = set_combine(sets.midcast.EnhancingDuration, {ring2="Sheltered Ring"})
  544. sets.midcast.Protectra = sets.midcast.Protect
  545. sets.midcast.Shell = sets.midcast.Protect
  546. sets.midcast.Shellra = sets.midcast.Shell
  547.  
  548.  
  549. -- Custom spell classes
  550.  
  551. sets.midcast.MndEnfeebles = {
  552. main="Daybreak",
  553. sub="Ammurapi Shield",
  554. --sub="Maxentius",
  555. range="Ullr",
  556. head="Cath Palug Crown",
  557. body="Lethargy Sayon +1",
  558. hands="Malignance Gloves",
  559. legs={name="Chironic Hose", augments={'Accuracy+9 Attack+9','CHR+8','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
  560. feet="Malignance Boots",
  561. neck="Duelist's Torque +1",
  562. ear1="Malignance Earring",
  563. ear2="Snotra Earring",
  564. ring1="Stikini Ring +1",
  565. ring2="Stikini Ring +1",
  566. --back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +2','Enha.mag. skill +9','Mag. Acc.+9',}},
  567. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  568. waist="Sacro Cord",
  569. }
  570.  
  571. sets.midcast.MndEnfeeblesAcc = set_combine(sets.midcast.MndEnfeebles, {
  572. main="Daybreak",
  573. sub="Ammurapi Shield",
  574. range="Ullr",
  575. --ammo=empty,
  576. head="Cath Palug Crown",
  577. body="Atrophy Tabard +3",
  578. hands="Malignance Gloves",
  579. legs={name="Chironic Hose", augments={'Accuracy+9 Attack+9','CHR+8','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
  580. feet="Malignance Boots",
  581. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  582. --ring1={name="Stikini Ring +1", bag="wardrobe3"},
  583. waist="Sacro Cord",
  584. })
  585.  
  586. sets.midcast.MndEnfeeblesEffect = set_combine(sets.midcast.MndEnfeebles, {
  587. --ammo="Regal Gem",
  588. body="Lethargy Sayon +1",
  589. feet="Vitiation Boots +1",
  590. neck="Dls. Torque +1",
  591. --back=gear.RDM_MND_Cape,
  592. })
  593.  
  594. sets.midcast.IntEnfeebles = set_combine(sets.midcast.MndEnfeebles, {
  595. --main="Maxentius",
  596. --sub="Ammurapi Shield",
  597. --back=gear.RDM_INT_Cape,
  598. --waist="Acuity Belt +1",
  599. ring2="Freke Ring",
  600. })
  601.  
  602. sets.midcast.IntEnfeeblesAcc = set_combine(sets.midcast.IntEnfeebles, {
  603. --main="Crocea Mors",
  604. --sub="Ammurapi Shield",
  605. range="Ullr",
  606. --ammo=empty,
  607. head="Cath Palug Crown",
  608. body="Atrophy Tabard +3",
  609. hands="Malignance Gloves",
  610. legs={name="Chironic Hose", augments={'Accuracy+9 Attack+9','CHR+8','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
  611. feet="Malignance Boots",
  612. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  613. ring1={name="Stikini Ring +1", bag="wardrobe2"},
  614. ring2={name="Stikini Ring +1", bag="wardrobe"},
  615. waist="Sacro Cord",
  616. })
  617.  
  618. sets.midcast.IntEnfeeblesEffect = set_combine(sets.midcast.IntEnfeebles, {
  619. --ammo="Regal Gem",
  620. body="Lethargy Sayon +1",
  621. feet="Vitiation Boots +1",
  622. neck="Dls. Torque +1",
  623. --back=gear.RDM_INT_Cape,
  624. })
  625.  
  626. sets.midcast.SkillEnfeebles = set_combine(sets.midcast.MndEnfeebles, { --477 base enf
  627. main="Daybreak",
  628. sub="Ammurapi Shield",
  629. --sub="Maxentius",
  630. range="Ullr",
  631. --head="Cath Palug Crown",
  632. head="Vitiation Chapeau +1",--22
  633. body="Atrophy Tabard +3", --21
  634. hands="Lethargy Gantherots +1", --19
  635. legs={name="Chironic Hose", augments={'Accuracy+9 Attack+9','CHR+8','Mag. Acc.+20 "Mag.Atk.Bns."+20',}}, --13
  636. --legs="Psycloth Lappas", --18
  637. --feet="Malignance Boots",
  638. feet="Vitiation Boots +1", --12
  639. neck="Incanter's Torque", --10
  640. ear1="Vor Earring", --10
  641. ear2="Snotra Earring",
  642. ring1="Stikini Ring +1", --8
  643. ring2="Stikini Ring +1", --8
  644. --back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +2','Enha.mag. skill +9','Mag. Acc.+9',}},
  645. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  646. waist="Sacro Cord",
  647. })
  648.  
  649. sets.midcast.Sleep = set_combine(sets.midcast.IntEnfeeblesAcc, {
  650. --head="Viti. Chapeau +3",
  651. --neck="Dls. Torque +2",
  652. --ear2="Snotra Earring",
  653. --ring1="Kishar Ring",
  654. })
  655.  
  656. sets.midcast.SleepMaxDuration = set_combine(sets.midcast.Sleep, {
  657. --head="Leth. Chappel +1",
  658. --body="Lethargy Sayon +1",
  659. --hands="Regal Cuffs",
  660. --legs="Leth. Fuseau +1",
  661. --feet="Leth. Houseaux +1",
  662. })
  663.  
  664. sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  665. sets.midcast.Dispelga = set_combine(sets.midcast.IntEnfeeblesAcc, {
  666. main="Daybreak",
  667. --sub="Ammurapi Shield",
  668. --waist="Shinjutsu-no-Obi +1"
  669. })
  670.  
  671. sets.midcast['Dark Magic'] = {
  672. main="Naegling",
  673. sub="Tauret",
  674. --sub="Genbu's Shield",
  675. range="Ullr",
  676. head="Cath Palug Crown",
  677. body="Malignance Tabard",
  678. hands="Malignance Gloves",
  679. legs={name="Chironic Hose", augments={'Accuracy+9 Attack+9','CHR+8','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
  680. feet="Malignance Boots",
  681. neck="Erra Pendant",
  682. ear1="Malignance Earring",
  683. ear2="Snotra Earring",
  684. ring1={name="Stikini Ring +1", bag="wardrobe2"},
  685. ring2={name="Stikini Ring +1", bag="wardrobe"},
  686. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  687. waist="Sacro Cord",
  688. }
  689.  
  690. sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  691. --head="Pixie Hairpin +1",
  692. feet={ name="Merlinic Crackows", augments={'VIT+2','Accuracy+14','Accuracy+10 Attack+10','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
  693. --ear2="Hirudinea Earring",
  694. ring1={name="Stikini Ring +1", bag="wardrobe2"},
  695. ring2="Excelsis Ring",
  696. --back="Perimede Cape",
  697. waist="Fucho-no-obi",
  698. })
  699.  
  700. sets.midcast.Aspir = sets.midcast.Drain
  701. sets.midcast.Stun = set_combine(sets.midcast['Dark Magic'], {waist="Luminary Sash"})
  702. sets.midcast['Bio III'] = set_combine(sets.midcast['Dark Magic'], {
  703. --legs="Viti. Tights +1"
  704. })
  705.  
  706. sets.midcast.Dia = {
  707. main="Daybreak",
  708. neck="Duelist's Torque +1",
  709. ear1="Snotra Earring",
  710. head="Lethargy Chappel +1",
  711. body="Lethargy Sayon +1",
  712. hands="Lethargy Gantherots +1",
  713. legs="Lethargy Fuseau +1",
  714. feet="Lethargy Houseaux +1",
  715. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  716. }
  717.  
  718.  
  719. sets.midcast['Elemental Magic'] = {
  720. sub="Ammurapi Shield",
  721. main="Maxentius",
  722. ammo="Ghastly Tathlum",
  723. head="Cath Palug Crown",
  724. body="Jhakri Robe +2",
  725. hands="Jhakri Cuffs +2",
  726. legs="Jhakri Slops +2",
  727. feet="Jhakri Pigaches +2",
  728. neck="Sanctity Necklace",
  729. ear1="Malignance Earring",
  730. ear2="Friomisi Earring",
  731. ring1="Freke Ring",
  732. ring2="Diamond Ring",
  733. back={ name="Sucellos's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10',}},
  734. waist="Sacro Cord",
  735. }
  736.  
  737. sets.midcast['Elemental Magic'].Seidr = set_combine(sets.midcast['Elemental Magic'], {
  738. body="Seidr Cotehardie",
  739. legs="Merlinic Shalwar",
  740. feet={ name="Merlinic Crackows", augments={'VIT+2','Accuracy+14','Accuracy+10 Attack+10','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
  741. neck="Erra Pendant",
  742. waist="Acuity Belt +1",
  743. })
  744.  
  745. sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {
  746. range="Ullr",
  747. head="Atrophy Chapeau +2",
  748. ammo=empty,
  749. legs="Merlinic Shalwar",
  750. feet={ name="Merlinic Crackows", augments={'VIT+2','Accuracy+14','Accuracy+10 Attack+10','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
  751. neck="Erra Pendant",
  752. ear2="Crepuscular Earring",
  753. ring1="Stikini Ring +1",
  754. ring2="Stikini Ring +1",
  755. waist="Sacro Cord",
  756. })
  757.  
  758. sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {
  759. head=empty,
  760. body="Twilight Cloak",
  761. ammo="Ullr",
  762. ring1={name="Stikini Ring +1", bag="wardrobe2"},
  763. ring2={name="Stikini Ring +1", bag="wardrobe"},
  764. waist="Shinjutsu-no-Obi +1",
  765. })
  766.  
  767. sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
  768.  
  769. -- Initializes trusts at iLvl 119
  770. sets.midcast.Trust = sets.precast.FC
  771.  
  772. -- Job-specific buff sets
  773.  
  774.  
  775. sets.buff.Saboteur = {hands="Leth. Gantherots +1"}
  776.  
  777.  
  778. --Idle Sets
  779. sets.idle = {
  780. main={ name="Colada", augments={'"Refresh"+2','INT+1',}},
  781. --main="Bolelabunga",
  782. sub="Sacro Bulwark",
  783. --sub="Daybreak",
  784. ammo="Homiliary",
  785. head="Viti. Chapeau +1",
  786. body="Jhakri Robe +2",
  787. hands="Chironic Gloves",
  788. legs="Malignance Tights",
  789. feet="Chironic Slippers",
  790. neck="Sibyl Scarf",
  791. ear2="Infused Earring",
  792. ear1="Eabani Earring",
  793. ring1="Stikini Ring +1",
  794. ring2="Stikini Ring +1",
  795. --ring2= "Karieyh Ring +1",
  796. back="Moonbeam Cape",
  797. waist="Fucho-no-obi",
  798. }
  799.  
  800. sets.idle.DWIdle = {
  801. main={ name="Colada", augments={'"Refresh"+2','INT+1',}},
  802. sub="Bolelabunga",
  803. --sub="Daybreak",
  804. --sub="Daybreak",
  805. ammo="Homiliary",
  806. head="Viti. Chapeau +1",
  807. body="Jhakri Robe +2",
  808. hands="Chironic Gloves",
  809. legs="Malignance Tights",
  810. feet="Chironic Slippers",
  811. neck="Sibyl Scarf",
  812. ear2="Infused Earring",
  813. ear1="Eabani Earring",
  814. ring1="Stikini Ring +1",
  815. ring2="Stikini Ring +1",
  816. --ring2= "Karieyh Ring +1",
  817. back="Moonbeam Cape",
  818. waist="Fucho-no-obi",
  819. }
  820.  
  821. sets.idle.DT = set_combine(sets.idle, {
  822. main={ name="Colada", augments={'"Refresh"+2','INT+1',}},
  823. sub="Sacro Bulwark", --10/10
  824. ammo="Crepuscular Pebble", --3/3
  825. head="Malignance Chapeau", --6/6
  826. neck="Loricate Torque +1", --6/6
  827. --body="Malignance Tabard", --9/9
  828. back="Moonbeam Cape", --5/5
  829. hands="Malignance Gloves", --5/5
  830. --legs="Malignance Tights", --7/7
  831. legs="Carmine Cuisses +1",
  832. --feet="Malignance Boots", --4/4
  833. --neck="Warder's Charm +1",
  834. ear1="Eabani Earring",
  835. ear2="Infused Earring",
  836. ring1= "Defending Ring", --10/10
  837. ring2= { name="Dark Ring", augments={'Magic dmg. taken -6%','Phys. dmg. taken -5%','Breath dmg. taken -3%',}}, --5/6
  838. --ring2= { name="Dark Ring", augments={'Phys. dmg. taken -6%','Magic dmg. taken -3%',}}, --6/3
  839. --back=gear.RDM_INT_Cape,
  840. --waist="Carrier's Sash",
  841. })
  842. --Treasure Hunter gear set to trigger when casting Slow I spell.
  843. sets.TH = {
  844. ammo="Perfect Lucky Egg", --1
  845. waist="Chaac Belt", --1
  846. legs="Merlinic Shalwar" --2
  847. }
  848.  
  849. --Defense Sets
  850.  
  851. sets.defense.PDT = sets.idle.DT
  852. sets.defense.MDT = set_combine(sets.idle.DT, { --set for Charm at the moment
  853. ear1="Eabani Earring",
  854. back="Solemnity Cape",
  855. --neck="Mizukage-no-Kubikazari"
  856. })
  857.  
  858. sets.magic_burst = {
  859. --head="Ea Hat +1", --7/(7)
  860. --body="Ea Houppe. +1", --9/(9)
  861. --hands="Amalric Gages +1", --(6)
  862. --legs="Ea Slops +1", --8/(8)
  863. --feet="Ea Pigaches +1", --5/(5)
  864. neck="Mizu. Kubikazari", --10
  865. --ring2="Mujin Band", --(5)
  866. }
  867.  
  868. sets.Kiting = set_combine(sets.idle.DT, {legs="Carmine Cuisses +1"})
  869. sets.latent_refresh = {waist="Fucho-no-obi"}
  870.  
  871. --Engaged Sets
  872. sets.engaged = { --1175 accuracy capped gear haste
  873. main="Naegling",
  874. sub="Sacro Bulwark",
  875. ammo="Ginsen",
  876. head="Malignance Chapeau", --6hst
  877. body="Ayanmo Corazza +2", --4hst
  878. hands="Malignance Gloves", --4hst
  879. legs="Malignance Tights", --9hst
  880. feet="Malignance Boots", --3hst
  881. neck="Lissome Necklace",
  882. ear1="Brutal Earring",
  883. ear2="Cessance Earring",
  884. ring1="Pernicious Ring",
  885. ring2="Karieyh Ring +1",
  886. --back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  887. back="Relucent Cape",
  888. waist="Kentarch Belt +1",
  889. }
  890.  
  891. sets.engaged.MidAcc = set_combine(sets.engaged, { --1216 accuracy
  892. main="Naegling",
  893. sub="Sacro Bulwark",
  894. ammo="Ginsen",
  895. head="Malignance Chapeau", --6hst
  896. body="Ayanmo Corazza +2", --4hst
  897. hands="Malignance Gloves", --4hst
  898. legs="Malignance Tights", --9hst
  899. feet="Malignance Boots", --3hst
  900. --neck="Lissome Necklace",
  901. neck="Combatant's Torque",
  902. ear1="Brutal Earring",
  903. ear2="Cessance Earring",
  904. ring1="Pernicious Ring",
  905. --ring1="Begruding Ring",
  906. ring2="Karieyh Ring +1",
  907. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  908. --back="Relucent Cape",
  909. waist="Kentarch Belt +1",
  910. })
  911.  
  912. sets.engaged.HighAcc = set_combine(sets.engaged, { --1254 accuracy
  913. ammo="Ginsen",
  914. head="Malignance Chapeau", --6hst
  915. body="Malignance Tabard", --4hst
  916. --hands="Malignance Gloves", --4hst
  917. hands="Atrophy Gloves +3", --3hst
  918. legs="Malignance Tights", --9hst
  919. --legs="Carmine Cuisses +1", --6hst
  920. feet="Malignance Boots", --3hst
  921. neck="Combatant's Torque",
  922. ring1="Begrudging Ring",
  923. ring2="Etana Ring",
  924. ear1="Mache Earring +1",
  925. ear2="Mache Earring +1",
  926. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  927. waist="Kentarch Belt +1",
  928. --waist="Cetl Belt",
  929. })
  930.  
  931. -- No Magic Haste (74% DW to cap)
  932. sets.engaged.DW = set_combine(sets.engaged, { --34DW+25DW = 59DW total 1195 accuracy 1144 with Thibron
  933. main="Naegling",
  934. --sub="Tauret",
  935. sub="Crepuscular Knife",
  936. --main="Rusty Dagger",
  937. --sub="Rusty Dagger",
  938. ammo="Ginsen",
  939. head="Malignance Chapeau", --6hst
  940. body="Ayanmo Corazza +2", --4hst
  941. hands="Malignance Gloves", --4hst
  942. legs="Carmine Cuisses +1", --6hst --6DW
  943. --feet="Malignance Boots", --3hst
  944. feet={ name="Taeon Boots", augments={'"Dual Wield"+5',}}, --4hst --9DW
  945. neck="Lissome Necklace",
  946. ear1="Eabani Earring", --4DW
  947. --ear1="Brutal Earring",
  948. ear2="Suppanomimi", --5DW
  949. ring1="Pernicious Ring",
  950. ring2="Karieyh Ring +1",
  951. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, --10DW
  952. --back="Relucent Cape",1
  953. --waist="Kentarch Belt +1",
  954. waist="Cetl Belt" --5hst
  955. })
  956.  
  957. sets.engaged.DW.MidAcc = set_combine(sets.engaged.DW, { --1251 accuracy 1200 with Thibron
  958. main="Naegling",
  959. sub="Crepuscular Knife",
  960. ammo="Ginsen",
  961. head="Malignance Chapeau", --6hst
  962. body="Ayanmo Corazza +2", --4hst
  963. --body="Malignance Tabard",
  964. hands="Malignance Gloves", --4hst
  965. legs="Carmine Cuisses +1", --6hst --6DW
  966. --legs="Malignance Tights",
  967. feet="Malignance Boots", --3hst
  968. --feet={ name="Taeon Boots", augments={'"Dual Wield"+5',}}, --4hst --9DW
  969. --neck="Combatant's Torque",
  970. --neck="Sanctity Necklace",
  971. ear1="Eabani Earring", --4DW
  972. --ear1="Brutal Earring",
  973. --ear1="Zennaroi Earring",
  974. ear2="Suppanomimi", --5DW
  975. --ring1="Begrudging Ring",
  976. ring2="Karieyh Ring +1",
  977. ring1="Pernicious Ring",
  978. --ring2="Etana Ring",
  979. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, --10DW
  980. --back="Relucent Cape",
  981. --waist="Kentarch Belt +1",
  982. waist="Cetl Belt" --5hst
  983. })
  984.  
  985. sets.engaged.DW.HighAcc = set_combine(sets.engaged.HighAcc, { --1306 accuracy 1255 with Thibron
  986. main="Naegling",
  987. sub="Tauret",
  988. --sub="Crepuscular Knife",
  989. ammo="Ginsen",
  990. head="Malignance Chapeau", --6hst
  991. body="Malignance Tabard", --4hst
  992. hands="Atrophy Gloves +3", --3hst
  993. legs="Carmine Cuisses +1", --6hst --6DW
  994. --legs="Malignance Tights",
  995. --feet={ name="Taeon Boots", augments={'"Dual Wield"+5',}}, --4hst --9DW
  996. feet="Malignance Boots",
  997. --ear1="Eabani Earring", --4DW
  998. --ear2="Suppanomimi", --5DW
  999. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, --10DW
  1000. waist="Kentarch Belt +1",
  1001. })
  1002.  
  1003. -- 15% Magic Haste (67% DW to cap)
  1004. sets.engaged.DW.LowHaste = set_combine(sets.engaged.DW, {
  1005.  
  1006. }) --59
  1007.  
  1008. sets.engaged.DW.MidAcc.LowHaste = set_combine(sets.engaged.DW.MidAcc, {
  1009. --ring1={name="Chirich Ring +1", bag="wardrobe3"},
  1010. })
  1011.  
  1012. sets.engaged.DW.HighAcc.LowHaste = set_combine(sets.engaged.DW.HighAcc, {
  1013.  
  1014. })
  1015.  
  1016. -- 30% Magic Haste (56% DW to cap)
  1017. sets.engaged.DW.MidHaste = set_combine(sets.engaged.DW, {
  1018.  
  1019. }) --31
  1020.  
  1021. sets.engaged.DW.MidAcc.MidHaste = set_combine(sets.engaged.DW.MidAcc, {
  1022. --neck="Combatant's Torque",
  1023.  
  1024. })
  1025.  
  1026. sets.engaged.DW.HighAcc.MidHaste = set_combine(sets.engaged.DW.HighAcc, {
  1027.  
  1028. })
  1029.  
  1030. -- 35% Magic Haste (51% DW to cap)
  1031. sets.engaged.DW.HighHaste = set_combine(sets.engaged.DW, {
  1032.  
  1033. ear2="Brutal Earring",
  1034.  
  1035. }) --26
  1036.  
  1037. sets.engaged.DW.MidAcc.HighHaste = set_combine(sets.engaged.DW.MidAcc, {
  1038. --legs="Carmine Cuisses +1", --6
  1039. --neck="Combatant's Torque",
  1040. --ring1={name="Chirich Ring +1", bag="wardrobe3"},
  1041. })
  1042.  
  1043. --sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, {
  1044. sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, {
  1045.  
  1046. })
  1047.  
  1048. -- 45% Magic Haste (36% DW to cap)
  1049. sets.engaged.DW.MaxHaste = set_combine(sets.engaged, { --1291 accuracy 1240 with Thibron
  1050. main="Naegling",
  1051. sub="Crepuscular Knife",
  1052. legs="Malignance Tights", --9hst
  1053. feet="Malignance Boots", --3hst
  1054. waist="Kentarch Belt +1",
  1055. --ear1="Brutal Earring",
  1056. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  1057. }) --10
  1058.  
  1059. sets.engaged.DW.MidAcc.MaxHaste = set_combine(sets.engaged.DW.HighHaste, {
  1060. --neck="Combatant's Torque",
  1061. --ring1={name="Chirich Ring +1", bag="wardrobe3"},
  1062. --waist="Kentarch Belt +1",
  1063. })
  1064.  
  1065. sets.engaged.DW.HighAcc.MaxHaste = set_combine(sets.engaged.HighAcc, { --1335 accuracy 1284 with Thibron
  1066. main="Naegling",
  1067. sub="Crepuscular Knife",
  1068. body="Malignance Tabard", --4hst
  1069. hands="Atrophy Gloves +3", --3hst
  1070. --legs="Carmine Cuisses +1", --6hst
  1071. legs="Malignance Tights",
  1072. feet="Malignance Boots", --3hst
  1073. neck="Combatant's Torque",
  1074. ear1="Mache Earring +1",
  1075. ear2="Mache Earring +1",
  1076. ring1="Begrudging Ring",
  1077. ring2="Etana Ring",
  1078. waist="Kentarch Belt +1",
  1079. --waist="Cetl Belt", --5hst
  1080. --back="Relucent Cape",
  1081. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  1082. })
  1083.  
  1084.  
  1085. --Hybrid sets
  1086.  
  1087. sets.engaged.Hybrid = set_combine(sets.engaged, {
  1088. main="Naegling",
  1089. sub="Sacro Bulwark", --10/10
  1090. head="Malignance Chapeau", --6/6
  1091. neck="Loricate Torque +1", --6/6
  1092. --body="Malignance Tabard", --9/9
  1093. body="Ayanmo Corazza +2", --6/6
  1094. hands="Malignance Gloves", --5/5
  1095. legs="Malignance Tights", --7/7
  1096. feet="Malignance Boots", --4/4
  1097. --back="Moonbeam Cape", --5/5
  1098. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  1099. ring1= "Defending Rnig", --10/10
  1100. --ring2= { name="Dark Ring", augments={'Phys. dmg. taken -6%','Magic dmg. taken -3%',}}, --6/3
  1101. ring2="Karieyh Ring +1",
  1102. ear1="Cessance Earring",
  1103. ear2="Brutal Earring"
  1104. })
  1105.  
  1106. sets.engaged.DT = set_combine(sets.engaged, sets.engaged.Hybrid, { --49PDT 50MDT
  1107. main="Naegling",
  1108. sub="Sacro Bulwark", --10/10
  1109.  
  1110. head="Malignance Chapeau", --6/6
  1111. neck="Loricate Torque +1", --6/6
  1112. --body="Malignance Tabard", --9/9
  1113. body="Ayanmo Corazza +2", --6/6
  1114. hands="Malignance Gloves", --5/5
  1115. legs="Malignance Tights", --7/7
  1116. feet="Malignance Boots", --4/4
  1117. --back="Moonbeam Cape", --5/5
  1118. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  1119. ring1= "Defending Ring", --10/10
  1120. --ring2= { name="Dark Ring", augments={'Phys. dmg. taken -6%','Magic dmg. taken -3%',}}, --6/3
  1121. ring2="Karieyh Ring +1"
  1122. })
  1123.  
  1124. sets.engaged.MidAcc.DT = set_combine(sets.engaged.DT, sets.engaged.MidAcc, sets.engaged.Hybrid)
  1125. sets.engaged.HighAcc.DT = set_combine(sets.engaged.DT, sets.engaged.HighAcc, sets.engaged.Hybrid, {
  1126. ear1="Mache Earring +1",
  1127. ear2="Mache Earring +1",
  1128. })
  1129.  
  1130. sets.engaged.DW.DT = set_combine(sets.engaged.DW, sets.engaged.Hybrid, { --50+PDT 50+MDT
  1131. main="Naegling",
  1132. --sub="Tauret",
  1133. --sub="Maxentius",
  1134. sub="Crepuscular Knife",
  1135. head="Malignance Chapeau", --6/6
  1136. neck="Loricate Torque +1", --6/6
  1137. body="Malignance Tabard", --9/9
  1138. hands="Malignance Gloves", --5/5
  1139. legs="Malignance Tights", --7/7
  1140. feet="Malignance Boots", --4/4
  1141. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  1142. --back="Moonbeam Cape", --5/5
  1143. ring2= { name="Dark Ring", augments={'Magic dmg. taken -6%','Phys. dmg. taken -5%','Breath dmg. taken -3%',}}, --5/6
  1144. ring1= "Defending Ring", --10/10
  1145. })
  1146.  
  1147. sets.engaged.DW.MidAcc.DT = set_combine(sets.engaged.DW.DT, sets.engaged.DW.MidAcc, sets.engaged.Hybrid)
  1148. sets.engaged.DW.HighAcc.DT = set_combine(sets.engaged.DW.DT, sets.engaged.DW.HighAcc, sets.engaged.Hybrid)
  1149.  
  1150. sets.engaged.DW.DT.LowHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.LowHaste, sets.engaged.Hybrid)
  1151. sets.engaged.DW.MidAcc.DT.LowHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.MidAcc.LowHaste, sets.engaged.Hybrid)
  1152. sets.engaged.DW.HighAcc.DT.LowHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.HighAcc.LowHaste, sets.engaged.Hybrid)
  1153.  
  1154. sets.engaged.DW.DT.MidHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.MidHaste, sets.engaged.Hybrid)
  1155. sets.engaged.DW.MidAcc.DT.MidHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.MidAcc.MidHaste, sets.engaged.Hybrid)
  1156. sets.engaged.DW.HighAcc.DT.MidHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.HighAcc.MidHaste, sets.engaged.Hybrid)
  1157.  
  1158. sets.engaged.DW.DT.HighHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.HighHaste, sets.engaged.Hybrid)
  1159. sets.engaged.DW.MidAcc.DT.HighHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.MidAcc.HighHaste, sets.engaged.Hybrid)
  1160. sets.engaged.DW.HighAcc.DT.HighHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.HighAcc.HighHaste, sets.engaged.Hybrid)
  1161.  
  1162. sets.engaged.DW.DT.MaxHaste = set_combine(sets.engaged.DW.DT, sets.engaged.DW.MaxHaste, sets.engaged.Hybrid, {
  1163. main="Naegling",
  1164. sub="Tauret",
  1165. --sub="Maxentius",
  1166. head="Malignance Chapeau", --6/6
  1167. neck="Loricate Torque +1", --6/6
  1168. body="Malignance Tabard", --9/9
  1169. hands="Malignance Gloves", --5/5
  1170. legs="Malignance Tights", --7/7
  1171. feet="Malignance Boots", --4/4
  1172. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  1173. --back="Moonbeam Cape", --5/5
  1174. ring1= { name="Dark Ring", augments={'Magic dmg. taken -6%','Phys. dmg. taken -5%','Breath dmg. taken -3%',}}, --5/6
  1175. ring2= "Defending Ring", --10/10
  1176. })
  1177.  
  1178. sets.engaged.DW.MidAcc.DT.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.Hybrid)
  1179. sets.engaged.DW.HighAcc.DT.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.Hybrid)
  1180.  
  1181. sets.engaged.Enspell = {
  1182. hands="Aya. Manopolas +1",
  1183. neck="Dls. Torque +1",
  1184. --waist="Orpheus's Sash",
  1185. }
  1186. --Special Sets
  1187.  
  1188. sets.Obi = {
  1189. waist="Hachirin-no-Obi",
  1190. back="Twilight Cape",
  1191. ring2="Zodiac Ring"
  1192.  
  1193. }
  1194. sets.CP = {
  1195. ammo="Perfect Lucky Egg", --1
  1196. waist="Chaac Belt", --1
  1197. legs="Merlinic Shalwar" --2}
  1198. }
  1199. end
  1200.  
  1201. -------------------------------------------------------------------------------------------------------------------
  1202. -- Job-specific hooks for standard casting events.
  1203. -------------------------------------------------------------------------------------------------------------------
  1204.  
  1205. function job_precast(spell, action, spellMap, eventArgs)
  1206. if spell.en:startswith("En") then
  1207. local slist={Dark="blizzard",Water="water",Earth="stone",Ice="blizzard",Fire="fire",Wind="aero",Lightning="thunder",Light="fire"}
  1208. if spell.en ~= 'En'..slist[world.day_element]..''..(spell.en:endswith(' II') and ' II' or '') then
  1209. cancel_spell()
  1210. windower.send_command('@input /ma "En'..slist[world.day_element]..''..(spell.en:endswith(' II') and ' II' or '')..'" <me>')
  1211. return
  1212. end
  1213. end
  1214. end
  1215.  
  1216. function job_precast(spell, action, spellMap, eventArgs)
  1217. if spellMap == 'Utsusemi' then
  1218. if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
  1219. cancel_spell()
  1220. add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
  1221. eventArgs.handled = true
  1222. return
  1223. elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
  1224. send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
  1225. end
  1226. end
  1227. end
  1228.  
  1229. function job_post_precast(spell, action, spellMap, eventArgs)
  1230. if spell.name == 'Impact' then
  1231. equip(sets.precast.FC.Impact)
  1232. end
  1233. if spell.english == "Phalanx II" and spell.target.type == 'SELF' then
  1234. cancel_spell()
  1235. send_command('@input /ma "Phalanx" <me>')
  1236. end
  1237. end
  1238.  
  1239. -- Run after the default midcast() is done.
  1240. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  1241. function job_post_midcast(spell, action, spellMap, eventArgs)
  1242.  
  1243. if spell.skill == 'Enfeebling Magic' and player.sub_job == 'NIN' or 'DNC' then
  1244. equip({main="Daybreak", sub="Maxentius"})
  1245. end
  1246.  
  1247. if spell.skill == 'Elemental Magic' and player.sub_job == 'NIN' or 'DNC' then
  1248. equip({main="Daybreak", sub="Maxentius"})
  1249. end
  1250.  
  1251. if spell.skill == 'Dark Magic' and player.sub_job == 'NIN' or 'DNC' then
  1252. equip({main="Daybreak", sub="Maxentius"})
  1253. end
  1254.  
  1255. if spell.skill == 'Divine Magic' and player.sub_job == 'NIN' or 'DNC' then
  1256. equip({main="Daybreak", sub="Maxentius"})
  1257. end
  1258.  
  1259. if spell.skill == 'Enhancing Magic' and player.sub_job == 'NIN' or 'DNC' then
  1260. --if classes.NoSkillSpells:contains(spell.english) or classes.NoSkillSpells:contains(spellMap) then
  1261. equip(sets.midcast.EnhancingDuration)
  1262. end
  1263. --end
  1264.  
  1265. if spell.name=="Stoneskin" and buffactive["Stoneskin"] then
  1266. windower.send_command('cancel 37;')
  1267. elseif spell.name=="Sneak" and buffactive["Sneak"] and spell.target.type=="SELF" then
  1268. windower.send_command('cancel 71;')
  1269. elseif spell.name=="Temper" and buffactive["Multi Strikes"] then
  1270. windower.send_command('cancel 432;')
  1271. elseif spell.name=="Spectral Jig" and buffactive["Sneak"] then
  1272. windower.send_command('cancel 71;')
  1273. end
  1274.  
  1275. if spell.name=="Aquaveil" then
  1276. equip (sets.midcast.EnhancingDuration, sets.midcast.Aquaveil)
  1277. end
  1278.  
  1279. if spell.name == 'Dia' then
  1280. equip(sets.midcast.Dia, sets.TH)
  1281. end
  1282.  
  1283. if spell.skill == 'Enhancing Magic' then
  1284. if classes.NoSkillSpells:contains(spell.english) or classes.NoSkillSpells:contains(spellMap) then
  1285. equip(sets.midcast.EnhancingDuration)
  1286. if spellMap == 'Refresh' then
  1287. equip(sets.midcast.Refresh)
  1288. if spell.target.type == 'SELF' then
  1289. equip (sets.midcast.RefreshSelf)
  1290. end
  1291. end
  1292.  
  1293. if spellMap == 'Regen' then
  1294. equip(sets.midcast.Regen)
  1295. end
  1296.  
  1297. elseif skill_spells:contains(spell.english) then
  1298. equip(sets.midcast.EnhancingSkill)
  1299. elseif spell.english:startswith('Gain') then
  1300. equip(sets.midcast.GainSpell)
  1301. elseif spell.english:contains('Spikes') then
  1302. equip(sets.midcast.SpikesSpell)
  1303. end
  1304. if (spell.target.type == 'PLAYER' or spell.target.type == 'NPC') and buffactive.Composure then
  1305. equip(sets.buff.ComposureOther)
  1306. end
  1307. --if spellMap == 'Refresh' and (spell.target.type == 'PLAYER' or spell.target.type == 'NPC') and buffactive.Composure then
  1308. -- equip(sets.midcast.RefreshOtherComposure)
  1309. --end
  1310. end
  1311. if spellMap == 'Cure' and spell.target.type == 'SELF' then
  1312. equip(sets.midcast.CureSelf)
  1313. end
  1314. if spell.skill == 'Elemental Magic' then
  1315. if state.MagicBurst.value and spell.english ~= 'Death' then
  1316. equip(sets.magic_burst)
  1317. if spell.english == "Impact" then
  1318. equip(sets.midcast.Impact)
  1319. end
  1320. end
  1321. if (spell.element == world.day_element or spell.element == world.weather_element) then
  1322. equip(sets.Obi)
  1323. end
  1324. end
  1325. end
  1326.  
  1327.  
  1328.  
  1329. function job_aftercast(spell, action, spellMap, eventArgs)
  1330. if spell.english:contains('Sleep') and not spell.interrupted then
  1331. set_sleep_timer(spell)
  1332. end
  1333. end
  1334.  
  1335. -- Job-specific hooks for non-casting events.
  1336.  
  1337. function job_buff_change(buff,gain)
  1338. if buff == "doom" then
  1339. if gain then
  1340. equip(sets.buff.Doom)
  1341. send_command('@input /p Doomed.')
  1342. disable('ring1','ring2','waist')
  1343. else
  1344. enable('ring1','ring2','waist')
  1345. handle_equipping_gear(player.status)
  1346. end
  1347. end
  1348. end
  1349.  
  1350. -- Handle notifications of general user state change.
  1351. function job_state_change(stateField, newValue, oldValue)
  1352. if state.WeaponLock.value == true then
  1353. disable('main','sub','range')
  1354. else
  1355. enable('main','sub','range')
  1356. end
  1357. end
  1358.  
  1359.  
  1360. -- User code that supplements standard library decisions.
  1361.  
  1362.  
  1363. -- Called by the 'update' self-command, for common needs.
  1364. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  1365. function job_handle_equipping_gear(playerStatus, eventArgs)
  1366. check_gear()
  1367. update_combat_form()
  1368. determine_haste_group()
  1369. check_moving()
  1370. end
  1371.  
  1372. function job_update(cmdParams, eventArgs)
  1373. handle_equipping_gear(player.status)
  1374. end
  1375.  
  1376. function update_combat_form()
  1377. if DW == true then
  1378. state.CombatForm:set('DW')
  1379. elseif DW == false then
  1380. state.CombatForm:reset()
  1381. end
  1382. end
  1383.  
  1384. -- Custom spell mapping.
  1385. function job_get_spell_map(spell, default_spell_map)
  1386. if spell.action_type == 'Magic' then
  1387. if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  1388. if (world.weather_element == 'Light' or world.day_element == 'Light') then
  1389. return 'CureWeather'
  1390. end
  1391. end
  1392. if spell.skill == 'Enfeebling Magic' then
  1393. if enfeebling_magic_skill:contains(spell.english) then
  1394. return "SkillEnfeebles"
  1395. elseif spell.type == "WhiteMagic" then
  1396. if enfeebling_magic_acc:contains(spell.english) and not buffactive.Stymie then
  1397. return "MndEnfeeblesAcc"
  1398. elseif enfeebling_magic_effect:contains(spell.english) then
  1399. return "MndEnfeeblesEffect"
  1400. else
  1401. return "MndEnfeebles"
  1402. end
  1403. elseif spell.type == "BlackMagic" then
  1404. if enfeebling_magic_acc:contains(spell.english) and not buffactive.Stymie then
  1405. return "IntEnfeeblesAcc"
  1406. elseif enfeebling_magic_effect:contains(spell.english) then
  1407. return "IntEnfeeblesEffect"
  1408. elseif enfeebling_magic_sleep:contains(spell.english) and ((buffactive.Stymie and buffactive.Composure) or state.SleepMode.value == 'MaxDuration') then
  1409. return "SleepMaxDuration"
  1410. elseif enfeebling_magic_sleep:contains(spell.english) then
  1411. return "Sleep"
  1412. else
  1413. return "IntEnfeebles"
  1414. end
  1415. else
  1416. return "MndEnfeebles"
  1417. end
  1418. end
  1419. end
  1420. end
  1421.  
  1422. function get_custom_wsmode(spell, action, spellMap)
  1423. local wsmode
  1424. if state.OffenseMode.value == 'MidAcc' or state.OffenseMode.value == 'HighAcc' then
  1425. wsmode = 'Acc'
  1426. end
  1427.  
  1428. return wsmode
  1429. end
  1430.  
  1431. -- Modify the default idle set after it was constructed.
  1432. function customize_idle_set(idleSet)
  1433. if player.mpp < 51 then
  1434. idleSet = set_combine(idleSet, sets.latent_refresh)
  1435. end
  1436. --if state.CP.current == 'on' then
  1437. -- equip(sets.CP)
  1438. -- disable('waist')
  1439. -- disable('ammo')
  1440. -- disable('legs')
  1441. --else
  1442. -- enable('waist')
  1443. -- enable('ammo')
  1444. -- enable('legs')
  1445. -- end
  1446.  
  1447.  
  1448. if state.Auto_Kite.value == true then
  1449. idleSet = set_combine(idleSet, sets.Kiting)
  1450. end
  1451.  
  1452.  
  1453.  
  1454. return idleSet
  1455. end
  1456.  
  1457. function customize_melee_set(meleeSet)
  1458. if state.EnspellMode.value == true then
  1459. meleeSet = set_combine(meleeSet, sets.engaged.Enspell)
  1460. end
  1461. if state.EnspellMode.value == true and player.hpp <= 75 and player.tp < 1000 then
  1462. meleeSet = set_combine(meleeSet, sets.engaged.Enspell.Fencer)
  1463. end
  1464.  
  1465. --if state.CP.current == 'on' then
  1466. -- equip(sets.CP)
  1467. -- disable('waist')
  1468. -- disable('ammo')
  1469. -- disable('legs')
  1470. --else
  1471. -- enable('waist')
  1472. -- enable('ammo')
  1473. -- enable('legs')
  1474. --end
  1475.  
  1476. return meleeSet
  1477. end
  1478. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  1479. function display_current_job_state(eventArgs)
  1480. display_current_caster_state()
  1481. eventArgs.handled = true
  1482. end
  1483.  
  1484. -- Function to display the current relevant user state when doing an update.
  1485. -- Return true if display was handled, and you don't want the default info shown.
  1486. function display_current_job_state(eventArgs)
  1487. local cf_msg = ''
  1488. if state.CombatForm.has_value then
  1489. cf_msg = ' (' ..state.CombatForm.value.. ')'
  1490. end
  1491.  
  1492. local m_msg = state.OffenseMode.value
  1493. if state.HybridMode.value ~= 'Normal' then
  1494. m_msg = m_msg .. '/' ..state.HybridMode.value
  1495. end
  1496.  
  1497. local ws_msg = state.WeaponskillMode.value
  1498.  
  1499. local c_msg = state.CastingMode.value
  1500.  
  1501. local d_msg = 'None'
  1502. if state.DefenseMode.value ~= 'None' then
  1503. d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
  1504. end
  1505.  
  1506. local i_msg = state.IdleMode.value
  1507.  
  1508. local msg = ''
  1509. if state.MagicBurst.value then
  1510. msg = ' Burst: On |'
  1511. end
  1512. if state.Kiting.value then
  1513. msg = msg .. ' Kiting: On |'
  1514. end
  1515.  
  1516. add_to_chat(002, '| ' ..string.char(31,210).. 'Melee' ..cf_msg.. ': ' ..string.char(31,001)..m_msg.. string.char(31,002).. ' |'
  1517. ..string.char(31,207).. ' WS: ' ..string.char(31,001)..ws_msg.. string.char(31,002).. ' |'
  1518. ..string.char(31,060).. ' Magic: ' ..string.char(31,001)..c_msg.. string.char(31,002).. ' |'
  1519. ..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002).. ' |'
  1520. ..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002).. ' |'
  1521. ..string.char(31,002)..msg)
  1522.  
  1523. eventArgs.handled = true
  1524. end
  1525.  
  1526. -- Utility functions specific to this job.
  1527.  
  1528. function determine_haste_group()
  1529. classes.CustomMeleeGroups:clear()
  1530. if DW == true then
  1531. if DW_needed <= 14 then
  1532. classes.CustomMeleeGroups:append('MaxHaste')
  1533. elseif DW_needed > 15 and DW_needed <= 26 then
  1534. classes.CustomMeleeGroups:append('HighHaste')
  1535. elseif DW_needed > 26 and DW_needed <= 32 then
  1536. classes.CustomMeleeGroups:append('MidHaste')
  1537. elseif DW_needed > 32 and DW_needed <= 43 then
  1538. classes.CustomMeleeGroups:append('LowHaste')
  1539. elseif DW_needed > 43 then
  1540. classes.CustomMeleeGroups:append('')
  1541. end
  1542. end
  1543. end
  1544.  
  1545. function gearinfo(cmdParams, eventArgs)
  1546. if cmdParams[1] == 'gearinfo' then
  1547. if type(tonumber(cmdParams[2])) == 'number' then
  1548. if tonumber(cmdParams[2]) ~= DW_needed then
  1549. DW_needed = tonumber(cmdParams[2])
  1550. DW = true
  1551. end
  1552. elseif type(cmdParams[2]) == 'string' then
  1553. if cmdParams[2] == 'false' then
  1554. DW_needed = 0
  1555. DW = false
  1556. end
  1557. end
  1558. if type(tonumber(cmdParams[3])) == 'number' then
  1559. if tonumber(cmdParams[3]) ~= Haste then
  1560. Haste = tonumber(cmdParams[3])
  1561. end
  1562. end
  1563. if type(cmdParams[4]) == 'string' then
  1564. if cmdParams[4] == 'true' then
  1565. moving = true
  1566. elseif cmdParams[4] == 'false' then
  1567. moving = false
  1568. end
  1569. end
  1570. if not midaction() then
  1571. job_update()
  1572. end
  1573. end
  1574. end
  1575.  
  1576. function job_self_command(cmdParams, eventArgs)
  1577. if cmdParams[1]:lower() == 'scholar' then
  1578. handle_strategems(cmdParams)
  1579. eventArgs.handled = true
  1580. elseif cmdParams[1]:lower() == 'nuke' then
  1581. handle_nuking(cmdParams)
  1582. eventArgs.handled = true
  1583. elseif cmdParams[1]:lower() == 'enspell' then
  1584. send_command('@input /ma '..state.EnSpell.value..' <me>')
  1585. elseif cmdParams[1]:lower() == 'barelement' then
  1586. send_command('@input /ma '..state.BarElement.value..' <me>')
  1587. elseif cmdParams[1]:lower() == 'barstatus' then
  1588. send_command('@input /ma '..state.BarStatus.value..' <me>')
  1589. elseif cmdParams[1]:lower() == 'gainspell' then
  1590. send_command('@input /ma '..state.GainSpell.value..' <me>')
  1591. end
  1592.  
  1593. gearinfo(cmdParams, eventArgs)
  1594. end
  1595.  
  1596. -- General handling of strategems in an Arts-agnostic way.
  1597. -- Format: gs c scholar <strategem>
  1598.  
  1599. function handle_strategems(cmdParams)
  1600. -- cmdParams[1] == 'scholar'
  1601. -- cmdParams[2] == strategem to use
  1602.  
  1603. if not cmdParams[2] then
  1604. add_to_chat(123,'Error: No strategem command given.')
  1605. return
  1606. end
  1607. local strategem = cmdParams[2]:lower()
  1608.  
  1609. if strategem == 'light' then
  1610. if buffactive['light arts'] then
  1611. send_command('input /ja "Addendum: White" <me>')
  1612. elseif buffactive['addendum: white'] then
  1613. add_to_chat(122,'Error: Addendum: White is already active.')
  1614. else
  1615. send_command('input /ja "Light Arts" <me>')
  1616. end
  1617. elseif strategem == 'dark' then
  1618. if buffactive['dark arts'] then
  1619. send_command('input /ja "Addendum: Black" <me>')
  1620. elseif buffactive['addendum: black'] then
  1621. add_to_chat(122,'Error: Addendum: Black is already active.')
  1622. else
  1623. send_command('input /ja "Dark Arts" <me>')
  1624. end
  1625. elseif buffactive['light arts'] or buffactive['addendum: white'] then
  1626. if strategem == 'cost' then
  1627. send_command('input /ja Penury <me>')
  1628. elseif strategem == 'speed' then
  1629. send_command('input /ja Celerity <me>')
  1630. elseif strategem == 'aoe' then
  1631. send_command('input /ja Accession <me>')
  1632. elseif strategem == 'addendum' then
  1633. send_command('input /ja "Addendum: White" <me>')
  1634. else
  1635. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  1636. end
  1637. elseif buffactive['dark arts'] or buffactive['addendum: black'] then
  1638. if strategem == 'cost' then
  1639. send_command('input /ja Parsimony <me>')
  1640. elseif strategem == 'speed' then
  1641. send_command('input /ja Alacrity <me>')
  1642. elseif strategem == 'aoe' then
  1643. send_command('input /ja Manifestation <me>')
  1644. elseif strategem == 'addendum' then
  1645. send_command('input /ja "Addendum: Black" <me>')
  1646. else
  1647. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  1648. end
  1649. else
  1650. add_to_chat(123,'No arts has been activated yet.')
  1651. end
  1652. end
  1653.  
  1654. function set_sleep_timer(spell)
  1655. local self = windower.ffxi.get_player()
  1656.  
  1657. if spell.en == "Sleep II" then
  1658. base = 90
  1659. elseif spell.en == "Sleep" or spell.en == "Sleepga" then
  1660. base = 60
  1661. end
  1662.  
  1663. if state.Buff.Saboteur then
  1664. if state.NM.value then
  1665. base = base * 1.25
  1666. else
  1667. base = base * 2
  1668. end
  1669. end
  1670.  
  1671. -- Merit Points Duration Bonus
  1672. base = base + self.merits.enfeebling_magic_duration*6
  1673.  
  1674. -- Relic Head Duration Bonus
  1675. if not ((buffactive.Stymie and buffactive.Composure) or state.SleepMode.value == 'MaxDuration') then
  1676. base = base + self.merits.enfeebling_magic_duration*3
  1677. end
  1678.  
  1679. -- Job Points Duration Bonus
  1680. base = base + self.job_points.rdm.enfeebling_magic_duration
  1681.  
  1682. --Enfeebling duration non-augmented gear total
  1683. gear_mult = 1.40
  1684. --Enfeebling duration augmented gear total
  1685. aug_mult = 1.25
  1686. --Estoquer/Lethargy Composure set bonus
  1687. --2pc = 1.1 / 3pc = 1.2 / 4pc = 1.35 / 5pc = 1.5
  1688. empy_mult = 1 --from sets.midcast.Sleep
  1689.  
  1690. if ((buffactive.Stymie and buffactive.Composure) or state.SleepMode.value == 'MaxDuration') then
  1691. if buffactive.Stymie then
  1692. base = base + self.job_points.rdm.stymie_effect
  1693. end
  1694. empy_mult = 1.35 --from sets.midcast.SleepMaxDuration
  1695. end
  1696.  
  1697. totalDuration = math.floor(base * gear_mult * aug_mult * empy_mult)
  1698.  
  1699. -- Create the custom timer
  1700. if spell.english == "Sleep II" then
  1701. send_command('@timers c "Sleep II ['..spell.target.name..']" ' ..totalDuration.. ' down spells/00259.png')
  1702. elseif spell.english == "Sleep" or spell.english == "Sleepga" then
  1703. send_command('@timers c "Sleep ['..spell.target.name..']" ' ..totalDuration.. ' down spells/00253.png')
  1704. end
  1705. add_to_chat(1, 'Base: ' ..base.. ' Merits: ' ..self.merits.enfeebling_magic_duration.. ' Job Points: ' ..self.job_points.rdm.stymie_effect.. ' Set Bonus: ' ..empy_mult)
  1706.  
  1707. end
  1708.  
  1709. function check_moving()
  1710. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  1711. if state.Auto_Kite.value == false and moving then
  1712. state.Auto_Kite:set(true)
  1713. elseif state.Auto_Kite.value == true and moving == false then
  1714. state.Auto_Kite:set(false)
  1715. end
  1716. end
  1717. end
  1718.  
  1719. function check_gear()
  1720. if no_swap_gear:contains(player.equipment.left_ring) then
  1721. disable("ring1")
  1722. else
  1723. enable("ring1")
  1724. end
  1725. if no_swap_gear:contains(player.equipment.right_ring) then
  1726. disable("ring2")
  1727. else
  1728. enable("ring2")
  1729. end
  1730. if no_swap_gear:contains(player.equipment.head) then
  1731. disable("head")
  1732. else
  1733. enable("head")
  1734. end
  1735. --if no_swap_gear:contains(player.equipment.main) then
  1736. --disable("main")
  1737. --else
  1738. --enable("main")
  1739. --end
  1740. end
  1741.  
  1742. windower.register_event('zone change',
  1743. function()
  1744. if no_swap_gear:contains(player.equipment.left_ring) then
  1745. enable("ring1")
  1746. equip(sets.idle)
  1747. end
  1748. if no_swap_gear:contains(player.equipment.right_ring) then
  1749. enable("ring2")
  1750. equip(sets.idle)
  1751. end
  1752. if no_swap_gear:contains(player.equipment.head) then
  1753. enable("head")
  1754. equip(sets.idle)
  1755. end
  1756. end
  1757. )
  1758.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement