Advertisement
bongarippa

RDM

Nov 16th, 2023
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 83.51 KB | None | 0 0
  1. -- Original: Motenten / Modified: Arislan
  2. -- Haste/DW Detection Requires Gearinfo Addon
  3.  
  4. -------------------------------------------------------------------------------------------------------------------
  5. -- Keybinds
  6. -------------------------------------------------------------------------------------------------------------------
  7.  
  8. -- Modes: [ F9 ] Cycle Offense Mode
  9. -- [ CTRL+F9 ] Cycle Hybrid Modes
  10. -- [ WIN+F9 ] Cycle Weapon Skill Modes
  11. -- [ F10 ] Emergency -PDT Mode
  12. -- [ ALT+F10 ] Toggle Kiting Mode
  13. -- [ F11 ] Emergency -MDT Mode
  14. -- [ CTRL+F11 ] Cycle Casting Modes
  15. -- [ F12 ] Update Current Gear / Report Current Status
  16. -- [ CTRL+F12 ] Cycle Idle Modes
  17. -- [ ALT+F12 ] Cancel Emergency -PDT/-MDT Mode
  18. -- [ ALT+` ] Toggle Magic Burst Mode
  19. -- [ WIN+C ] Toggle Capacity Points Mode
  20. --
  21. -- Abilities: [ CTRL+` ] Composure
  22. -- [ CTRL+- ] Light Arts/Addendum: White
  23. -- [ CTRL+= ] Dark Arts/Addendum: Black
  24. -- [ CTRL+; ] Celerity/Alacrity
  25. -- [ ALT+[ ] Accesion/Manifestation
  26. -- [ ALT+; ] Penury/Parsimony
  27. --
  28. -- Spells: [ CTRL+` ] Stun
  29. -- [ ALT+Q ] Temper
  30. -- [ ALT+W ] Flurry II
  31. -- [ ALT+E ] Haste II
  32. -- [ ALT+R ] Refresh II
  33. -- [ ALT+Y ] Phalanx
  34. -- [ ALT+O ] Regen II
  35. -- [ ALT+P ] Shock Spikes
  36. -- [ WIN+, ] Utsusemi: Ichi
  37. -- [ WIN+. ] Utsusemi: Ni
  38. --
  39. -- Weapons: [ CTRL+W ] Toggles Weapon Lock
  40. --
  41. -- WS: [ CTRL+Numpad7 ] Savage Blade
  42. -- [ CTRL+Numpad9 ] Chant Du Cygne
  43. -- [ CTRL+Numpad4 ] Requiescat
  44. -- [ CTRL+Numpad1 ] Sanguine Blade
  45. --
  46. --
  47. -- (Global-Binds.lua contains additional non-job-related keybinds)
  48.  
  49.  
  50. -------------------------------------------------------------------------------------------------------------------
  51. -- Setup functions for this job. Generally should not be modified.
  52. -------------------------------------------------------------------------------------------------------------------
  53.  
  54. -- Addendum Commands:
  55. -- Shorthand versions for each strategem type that uses the version appropriate for
  56. -- the current Arts.
  57. -- Light Arts Dark Arts
  58. -- ---------- ---------
  59. -- gs c scholar light Light Arts/Addendum
  60. -- gs c scholar dark Dark Arts/Addendum
  61. -- gs c scholar cost Penury Parsimony
  62. -- gs c scholar speed Celerity Alacrity
  63. -- gs c scholar aoe Accession Manifestation
  64. -- gs c scholar addendum Addendum: White Addendum: Black
  65.  
  66.  
  67. -------------------------------------------------------------------------------------------------------------------
  68. -- Setup functions for this job. Generally should not be modified.
  69. -------------------------------------------------------------------------------------------------------------------
  70.  
  71. -- Initialization function for this job file.
  72. function get_sets()
  73. mote_include_version = 2
  74.  
  75. -- Load and initialize the include file.
  76. include('Mote-Include.lua')
  77. end
  78.  
  79.  
  80. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  81. function job_setup()
  82.  
  83. state.CP = M(false, "Capacity Points Mode")
  84. state.Buff.Saboteur = buffactive.Saboteur or false
  85.  
  86. no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  87. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring"}
  88.  
  89. elemental_ws = S{"Sanguine Blade", "Red Lotus Blade", "Burning Blade", "Aeolian Edge", "Flash Nova", "Seraph Strike", "Flaming Arrow"}--ringo
  90.  
  91. enfeebling_magic_acc = S{'Bind', 'Break', 'Dispel', 'Gravity', 'Gravity II', 'Sleep', 'Sleep II', 'Sleepga'}--silence,distract 1-2, frazzle 1-2
  92. enfeebling_magic_skill = S{}--poison,distract3,frazzle3
  93. enfeebling_magic_effect = S{'Dia II', 'Dia III'}--Dia, Diaga
  94.  
  95. skill_spells = S{
  96. 'Temper', 'Temper II', 'Enfire', 'Enfire II', 'Enblizzard', 'Enblizzard II', 'Enaero', 'Enaero II',
  97. 'Enstone', 'Enstone II', 'Enthunder', 'Enthunder II', 'Enwater', 'Enwater II'}
  98.  
  99. lockstyleset = 34
  100.  
  101. end
  102.  
  103.  
  104. -------------------------------------------------------------------------------------------------------------------
  105. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  106. -------------------------------------------------------------------------------------------------------------------
  107.  
  108. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  109. function user_setup()
  110. state.OffenseMode:options('Normal', 'Enspells', 'MidAcc', 'HighAcc')
  111. state.HybridMode:options('Normal', 'Almace', 'SwordEnh', 'Subtle', 'Crit')
  112. state.WeaponskillMode:options('Normal', 'PDL', 'TH')
  113. state.CastingMode:options('Normal','Resistant')
  114. state.IdleMode:options('Normal', 'DTidle', 'HP')
  115. state.PhysicalDefenseMode:options('DualWield','Shield')
  116. state.WeaponLock = M(false, 'Weapon Lock')
  117. state.MagicBurst = M(false, 'Magic Burst')
  118. state.CP = M(false, "Capacity Points Mode")
  119. state.RingLock = M(false, 'Ring Lock')
  120.  
  121. -- Additional local binds
  122. -- include('Global-Binds.lua') -- OK to remove this line
  123. -- include('Global-GEO-Binds.lua') -- OK to remove this line
  124. send_command('lua l gearinfo')
  125. send_command('bind ^` input /ja "Composure" <me>')
  126. -- send_command('bind !` gs c toggle MagicBurst')
  127.  
  128.  
  129. if player.sub_job == 'SCH' then
  130. send_command('bind ^- gs c scholar light')
  131. send_command('bind ^= gs c scholar dark')
  132. send_command('bind !- input /ja "Addendum: White" <me>')
  133. send_command('bind != input /ja "Addendum: Black" <me>')
  134. send_command('bind ![ gs c scholar aoe')
  135. end
  136.  
  137. send_command('bind !q input /ma "Temper II" <me>')
  138. send_command('bind !w input /ma "Flurry II" <stpc>')
  139. send_command('bind !e input /ma "Haste II" <stpc>')
  140. send_command('bind !r input /ma "Refresh III" <stpc>')
  141. send_command('bind !y input /ma "Phalanx II" <stpc>')
  142. send_command('bind !o input /ma "Regen II" <stpc>')
  143. send_command('bind !p gs c toggle MagicBurst')
  144.  
  145. send_command('bind @c gs c toggle CP')
  146. send_command('bind @w gs c toggle WeaponLock')
  147.  
  148. send_command('bind ^numpad7 input /ws "Savage Blade" <t>')
  149. send_command('bind ^numpad9 input /ws "Chant du Cygne" <t>')
  150. send_command('bind ^numpad4 input /ws "Requiescat" <t>')
  151. send_command('bind ^numpad1 input /ws "Sanguine Blade" <t>')
  152. send_command('bind ^numpad2 input /ws "Red Lotus Blade" <t>')
  153. send_command('bind ^numpad3 input /ws "Flat Blade" <t>')
  154.  
  155. select_default_macro_book()
  156. set_lockstyle()
  157.  
  158. state.Auto_Kite = M(false, 'Auto_Kite')
  159. Haste = 0
  160. DW_needed = 0
  161. DW = true
  162. moving = false
  163. update_combat_form()
  164. determine_haste_group()
  165. end
  166.  
  167. -- Called when this job file is unloaded (eg: job change)
  168. function user_unload()
  169. send_command('unbind ^`')
  170. -- send_command('unbind !`')
  171. send_command('unbind ^-')
  172. send_command('unbind ^=')
  173. send_command('unbind !-')
  174. send_command('unbind !=')
  175. send_command('unbind ![')
  176. send_command('unbind !q')
  177. send_command('unbind !w')
  178. send_command('bind !e input /ma "Haste" <stpc>')
  179. send_command('bind !r input /ma "Refresh" <stpc>')
  180. send_command('bind !y input /ma "Phalanx" <me>')
  181. send_command('unbind !o')
  182. send_command('unbind !p')
  183. send_command('unbind @c')
  184. send_command('unbind @w')
  185. send_command('unbind @r')
  186. send_command('unbind ^numpad7')
  187. send_command('unbind ^numpad9')
  188. send_command('unbind ^numpad4')
  189. send_command('unbind ^numpad1')
  190. send_command('unbind ^numpad2')
  191. send_command('unbind ^numpad3')
  192.  
  193. send_command('unbind #`')
  194. send_command('unbind #1')
  195. send_command('unbind #2')
  196. send_command('unbind #3')
  197. send_command('unbind #4')
  198. send_command('unbind #5')
  199. send_command('unbind #6')
  200. send_command('unbind #7')
  201. send_command('unbind #8')
  202. send_command('unbind #9')
  203. send_command('unbind #0')
  204.  
  205. send_command('lua u gearinfo')
  206. end
  207.  
  208. -- Define sets and vars used by this job file.
  209. function init_gear_sets()
  210.  
  211. ------------------------------------------------------------------------------------------------
  212. ---------------------------------------- Precast Sets ------------------------------------------
  213. ------------------------------------------------------------------------------------------------
  214.  
  215. -- Precast sets to enhance JAs
  216. sets.precast.JA['Chainspell'] = {body="Viti. Tabard +3"}
  217. sets.precast.JA['Convert'] = {main="Murgleis"}
  218.  
  219. -- Fast cast sets for spells
  220.  
  221. -- Fast cast sets for spells
  222. sets.precast.FC = {head="Atro. Chapeau +2",
  223. body={ name="Viti. Tabard +3", augments={'Enhances "Chainspell" effect',}},
  224. left_ear="Malignance Earring",
  225. right_ear="Leth. Earring +2",
  226. left_ring="Kishar Ring",
  227. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  228. }--traits 30
  229.  
  230. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  231.  
  232. sets.precast.FC.Cure = set_combine(sets.precast.FC, {
  233.  
  234. })
  235.  
  236. sets.precast.FC.Curaga = sets.precast.FC.Cure
  237. sets.precast.FC['Healing Magic'] = sets.precast.FC.Cure
  238. sets.precast.FC['Elemental Magic'] = sets.precast.FC
  239. sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty, body="Twilight Cloak"})
  240. sets.precast.Storm = sets.precast.FC
  241. sets.precast.FC.Dispelga = set_combine(sets.precast.FC, {})
  242.  
  243. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
  244. ammo="Impatiens",
  245. neck="Magoraga Beads",
  246. left_ring="Lebeche Ring",
  247. waist="Witful Belt",
  248. back="Perimede cape",
  249. })
  250.  
  251. sets.precast.RA = {head="Volte Tiara",
  252. hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},
  253. legs="Volte Tights",
  254. feet="Volte Spats",
  255. waist="Yemaya Belt",
  256. left_ring="Crepuscular Ring",
  257. back={ name="Sucellos's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','Rng.Acc.+10','"Snapshot"+10',}},
  258. }
  259. ------------------------------------------------------------------------------------------------
  260. ------------------------------------- Weapon Skill Sets ----------------------------------------
  261. ------------------------------------------------------------------------------------------------
  262.  
  263. sets.precast.WS = {
  264. ammo={ name="Coiste Bodhar", augments={'Path: A',}},
  265. head={ name="Nyame Helm", augments={'Path: B',}},
  266. body={ name="Nyame Mail", augments={'Path: A',}},
  267. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  268. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  269. feet="Leth. Houseaux +3",
  270. neck="Fotia Gorget",
  271. waist="Fotia Belt",
  272. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  273. right_ear="Ishvara Earring",
  274. left_ring="Epaminondas's Ring",
  275. right_ring="Cornelia's Ring",
  276. back={ name="Sucellos's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  277. }
  278.  
  279. sets.precast.WS.Acc = set_combine(sets.precast.WS, {
  280. ear2="Mache Earring +1",
  281. left_ring="Ramuh Ring +1",
  282. right_ring="Chirich Ring +1",})
  283.  
  284.  
  285. sets.precast.WS['Chant du Cygne'] = {ammo="Yetshila +1",
  286. head="Blistering Sallet +1",
  287. body="Malignance Tabard",
  288. hands="Malignance Gloves",
  289. legs="Nyame Flanchard",
  290. feet="Leth. Houseaux +3",
  291. neck="Fotia Gorget",
  292. waist="Fotia Belt",
  293. left_ear="Sherida Earring",
  294. right_ear="Leth. Earring +2",
  295. left_ring="Ilabrat Ring",
  296. right_ring="Cornelia's Ring",
  297. back={ name="Sucellos's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  298. }
  299.  
  300. sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {
  301. right_ring="Chirich Ring +1",})
  302.  
  303. sets.precast.WS['Vorpal Blade'] = sets.precast.WS['Chant du Cygne']
  304. sets.precast.WS['Vorpal Blade'].Acc = sets.precast.WS['Chant du Cygne'].Acc
  305.  
  306.  
  307. sets.precast.WS['Savage Blade'] = {ammo="Coiste Bodhar",
  308. head="Nyame Helm",
  309. body="Nyame Mail",
  310. hands="Nyame Gauntlets",
  311. legs="Nyame Flanchard",
  312. feet="Leth. Houseaux +3",
  313. neck="Rep. Plat. Medal",
  314. waist="Sailfi Belt +1",
  315. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  316. right_ear="Leth. Earring +2",
  317. left_ring="Sroda Ring",
  318. right_ring="Cornelia's Ring",
  319. back={ name="Sucellos's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}},
  320. }
  321. sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {head="Malignance chapeau",
  322. body="Malignance Tabard",
  323. hands="Malignance gloves",
  324. legs="Malignance Tights",
  325. feet="Malignance Boots",
  326. })
  327.  
  328. sets.precast.WS['Savage Blade'].PDL = set_combine(sets.precast.WS['Savage Blade'], {ammo="Crepuscular Pebble",
  329. })
  330.  
  331. sets.precast.WS['Knights of Round'] = sets.precast.WS['Savage Blade']
  332.  
  333. sets.precast.WS['Knights of Round'].Acc = set_combine(sets.precast.WS['Knights of Round'], {head="Malignance chapeau",
  334. body="Malignance Tabard",
  335. hands="Malignance gloves",
  336. legs="Malignance Tights",
  337. feet="Malignance Boots",
  338. })
  339.  
  340. sets.precast.WS['Knights of Round'].PDL = set_combine(sets.precast.WS['Knights of Round'], {ammo="Crepuscular Pebble",
  341. })
  342.  
  343. sets.precast.WS['Circle Blade'] = set_combine(sets.precast.WS['Savage Blade'], {
  344. ear2="Ishvara earring",
  345. })
  346.  
  347. sets.precast.WS['Death Blossom'] = set_combine(sets.precast.WS['Savage Blade'], {
  348. ear1="Regal Earring",
  349. })
  350. sets.precast.WS['Death Blossom'].Acc = sets.precast.WS['Death Blossom']
  351.  
  352. sets.precast.WS['Requiescat'] = {
  353. ammo="Coiste Bodhar",
  354. head="Nyame Helm",
  355. body="Nyame Mail",
  356. hands="Nyame Gauntlets",
  357. legs="Nyame flanchard",
  358. feet="Nyame Sollerets",
  359. neck="Fotia Gorget",
  360. waist="Fotia Belt",
  361. left_ear="Sherida Earring",
  362. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250'}},
  363. left_ring="Metamorph ring +1",
  364. right_ring="Cornelia's ring",
  365. back={ name="Sucellos's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  366. }
  367.  
  368. sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {head="Malignance chapeau",
  369. body="Malignance Tabard",
  370. hands="Malignance gloves",
  371. legs="Malignance Tights",
  372. feet="Malignance Boots",
  373. })
  374.  
  375. sets.precast.WS['Burning Blade'] = {
  376. ammo="Sroda Tathlum",
  377. head="Leth. Chappel +3",
  378. body="Nyame Mail",
  379. hands="Jhakri Cuffs +2",
  380. legs="Nyame Flanchard",
  381. feet="Leth. Houseaux +3",
  382. neck="Sibyl Scarf",
  383. waist="Orpheus's Sash",
  384. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  385. right_ear="Regal Earring",
  386. left_ring="Freke Ring",
  387. right_ring="Cornelia's Ring",
  388. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  389. }
  390. sets.precast.WS['Red Lotus Blade'] = sets.precast.WS['Burning Blade']
  391.  
  392. sets.precast.WS['Aeolian Edge'] = {ammo="Sroda Tathlum",
  393. head="Leth. Chappel +3",
  394. body="Lethargy Sayon +2",
  395. hands="Jhakri Cuffs +2",
  396. legs="Leth. Fuseau +3",
  397. feet="Leth. Houseaux +3",
  398. neck="Sibyl Scarf",
  399. waist="Orpheus's Sash",
  400. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  401. right_ear="Regal Earring",
  402. left_ring="Freke Ring",
  403. right_ring="Cornelia's Ring",
  404. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}}
  405.  
  406. sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], {body="Volte Jupon",
  407. legs="Volte Hose",
  408. waist="Chaac Belt",})
  409.  
  410.  
  411.  
  412. sets.precast.WS['Seraph Blade'] = {
  413. ammo="Sroda Tathlum",
  414. head="Leth. Chappel +3",
  415. body="Lethargy Sayon +2",
  416. hands="Jhakri Cuffs +2",
  417. legs="Nyame Flanchard",
  418. feet="Leth. Houseaux +3",
  419. neck="Baetyl Pendant",
  420. waist="Orpheus's Sash",
  421. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  422. right_ear="Regal Earring",
  423. left_ring="Metamor. Ring +1",
  424. right_ring="Cornelia's Ring",
  425. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','MND+10','Weapon skill damage +10%','Spell interruption rate down-10%',}}
  426. }
  427. sets.precast.WS['Seraph Blade'].Acc = {}
  428.  
  429. sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS['Seraph Blade'], {
  430. head="Pixie Hairpin +1",
  431. left_ear="Malignance earring",
  432. left_ring="Archon Ring",
  433. })
  434.  
  435. sets.precast.WS['Black Halo'] = set_combine(sets.precast.WS['Savage Blade'], {})
  436.  
  437. sets.precast.WS['Empyreal Arrow'] = {head={ name="Nyame Helm", augments={'Path: B',}},
  438. body={ name="Nyame Mail", augments={'Path: B',}},
  439. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  440. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  441. feet="Leth. Houseaux +3",
  442. neck="Combatant's Torque",
  443. waist="Yemaya Belt",
  444. left_ear="Crep. Earring",
  445. right_ear="Telos Earring",
  446. left_ring="Epaminondas's Ring",
  447. right_ring="Hajduk Ring +1",
  448. back={ name="Sucellos's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}},
  449. }
  450.  
  451. sets.precast.WS['Flaming Arrow'] = {ammo="Demon Arrow",
  452. head="Nyame Helm",
  453. body="Nyame Mail",
  454. hands="Nyame Gauntlets",
  455. legs="Nyame Flanchard",
  456. feet="Leth. Houseaux +3",
  457. neck="Sanctity Necklace",
  458. waist="Skrymir Cord +1",
  459. left_ear="Telos Earring",
  460. right_ear="Malignance Earring",
  461. left_ring="Freke Ring",
  462. right_ring="Epaminondas's Ring",
  463. back={ name="Sucellos's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}},
  464. }
  465.  
  466. sets.precast.WS['Evisceration'] = sets.precast.WS['Chant du Cygne']
  467.  
  468. sets.precast.WS['Asuran Fists'] = {ammo="Aurgelmir Orb +1",
  469. head={ name="Viti. Chapeau +3", augments={'Enfeebling Magic duration','Magic Accuracy',}},
  470. body={ name="Viti. Tabard +3", augments={'Enhances "Chainspell" effect',}},
  471. hands="Atrophy Gloves +3",
  472. legs={ name="Viti. Tights +3", augments={'Enspell Damage','Accuracy',}},
  473. feet="Atro. Boots +3",
  474. neck="Combatant's Torque",
  475. waist={ name="Sailfi Belt +1", augments={'Path: A',}},
  476. left_ear="Mache Earring +1",
  477. right_ear="Mache Earring +1",
  478. left_ring="Chirich Ring +1",
  479. right_ring="Rufescent Ring",
  480. back={ name="Sucellos's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}},
  481. }
  482.  
  483. sets.precast.WS['Flash Nova'] = sets.precast.WS['Seraph Blade']
  484.  
  485. sets.precast.WS['Mercy Stroke'] = set_combine(sets.precast.WS['Savage Blade'], {})
  486.  
  487.  
  488. sets.precast.WS['Mercy Stroke'].PDL = set_combine(sets.precast.WS['Mercy Stroke'], {ammo="Crepuscular Pebble",
  489. })
  490.  
  491.  
  492. sets.precast.WS['Earth Crusher'] = {ammo="Sroda Tathlum",
  493. head={ name="Nyame Helm", augments={'Path: B',}},
  494. body={ name="Nyame Mail", augments={'Path: B',}},
  495. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  496. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  497. feet="Leth. Houseaux +3",
  498. neck="Quanpur Necklace",
  499. waist="Orpheus's Sash",
  500. left_ear="Regal Earring",
  501. right_ear="Malignance Earring",
  502. left_ring="Epaminondas's Ring",
  503. right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  504. back={ name="Sucellos's Cape", augments={'STR+20','Mag. Acc+20 /Mag. Dmg.+20','STR+10','Weapon skill damage +10%',}},
  505. }
  506. ------------------------------------------------------------------------------------------------
  507. ---------------------------------------- Midcast Sets ------------------------------------------
  508. ------------------------------------------------------------------------------------------------
  509.  
  510. sets.midcast.FastRecast = sets.precast.FC
  511.  
  512. sets.midcast.SpellInterrupt = {
  513. ammo="Impatiens", --10
  514. legs="Carmine Cuisses +1", --20
  515. left_ring="Evanescence Ring", --5
  516. waist="Rumination Sash", --10
  517. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','MND+10','Weapon skill damage +10%','Spell interruption rate down-10%',}}, --10
  518. }
  519.  
  520. sets.midcast.Cure = {
  521. ammo="Regal Gem",
  522. head={ name="Kaykaus Mitra +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  523. body="Bunzi's Robe",
  524. hands={ name="Kaykaus Cuffs +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  525. legs={ name="Kaykaus Tights +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  526. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  527. neck={ name="Loricate Torque +1", augments={'Path: A',}},
  528. waist="Luminary Sash",
  529. left_ear="Roundel Earring",
  530. right_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  531. left_ring="Defending Ring",
  532. right_ring="Stikini Ring +1",
  533. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  534. }
  535.  
  536. sets.midcast.CureWeather = set_combine(sets.midcast.Cure, {
  537. main="Chatoyant Staff",
  538. sub="Enki Strap",
  539. waist="Hachirin-no-Obi",
  540. })
  541.  
  542. sets.midcast.CureSelf = set_combine(sets.midcast.Cure, {})
  543.  
  544. sets.midcast.Curaga = sets.midcast.Cure
  545.  
  546. sets.midcast.StatusRemoval = sets.precast.FC
  547.  
  548. sets.midcast.Cursna = {
  549. ammo="Sapience Orb",
  550. head={ name="Kaykaus Mitra +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  551. body={ name="Viti. Tabard +3", augments={'Enhances "Chainspell" effect',}},
  552. hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
  553. legs="Atrophy Tights +3",
  554. feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
  555. neck="Incanter's Torque",
  556. waist="Embla sash",
  557. left_ear="Meili earring",
  558. right_ear="Beatific Earring",
  559. left_ring="Menelaus's Ring",
  560. right_ring="Haoma's Ring",
  561. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  562. }
  563.  
  564. sets.midcast['Enhancing Magic'] = {main="Pukulatmuj +1",
  565. sub="Forfend +1",
  566. ammo="Staunch Tathlum +1",
  567. head={ name="Telchine Cap", augments={'"Cure" potency +8%','Enh. Mag. eff. dur. +10',}},
  568. body={ name="Viti. Tabard +3", augments={'Enhances "Chainspell" effect',}},
  569. hands="Atrophy Gloves +3",
  570. legs="Atrophy Tights +2",
  571. feet="Leth. Houseaux +3",
  572. neck={ name="Dls. Torque +2", augments={'Path: A',}},
  573. waist="Embla Sash",
  574. left_ear="Mimir Earring",
  575. right_ear="Leth. Earring +2",
  576. left_ring="Stikini Ring +1",
  577. right_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  578. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  579. }
  580.  
  581. sets.midcast.EnhancingDuration = {
  582. ammo="Staunch Tathlum +1",
  583. head={ name="Telchine Cap", augments={'"Cure" potency +8%','Enh. Mag. eff. dur. +10',}},
  584. body={ name="Viti. Tabard +3", augments={'Enhances "Chainspell" effect',}},
  585. hands="Atrophy Gloves +3",
  586. legs="Atrophy Tights +2",
  587. feet="Leth. Houseaux +3",
  588. neck={ name="Dls. Torque +2", augments={'Path: A',}},
  589. waist="Embla Sash",
  590. left_ear="Mimir Earring",
  591. right_ear="Leth. Earring +2",
  592. left_ring="Stikini Ring +1",
  593. right_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  594. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  595. }
  596.  
  597. sets.midcast.EnhancingSkill = sets.midcast['Enhancing Magic']
  598.  
  599. sets.midcast.EnhancingSkillDW = {
  600. ammo="Staunch Tathlum +1",
  601. head={ name="Telchine Cap", augments={'"Cure" potency +8%','Enh. Mag. eff. dur. +10',}},
  602. body={ name="Viti. Tabard +3", augments={'Enhances "Chainspell" effect',}},
  603. hands="Atrophy Gloves +3",
  604. legs="Atrophy Tights +2",
  605. feet="Leth. Houseaux +3",
  606. neck={ name="Dls. Torque +2", augments={'Path: A',}},
  607. waist="Embla Sash",
  608. left_ear="Mimir Earring",
  609. right_ear="Leth. Earring +2",
  610. left_ring="Stikini Ring +1",
  611. right_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  612. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  613. }
  614.  
  615. sets.midcast.GainSpell = sets.midcast['Enhancing Magic']
  616.  
  617.  
  618. sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {
  619. head={ name="Telchine Cap", augments={'"Regen" potency+3',}},
  620. body={ name="Telchine Chas.", augments={'"Regen" potency+3',}},
  621. hands={ name="Telchine Gloves", augments={'"Regen" potency+3',}},
  622. legs={ name="Telchine Braconi", augments={'"Regen" potency+3',}},
  623. feet={ name="Telchine Pigaches", augments={'"Regen" potency+3',}},
  624. sub="Ammurapi Shield",
  625. })
  626.  
  627. sets.midcast['Regen II'] = sets.midcast.Regen
  628.  
  629. sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {
  630. head="Amalric Coif +1",
  631. body="Atrophy Tabard +3",
  632. legs="Leth. Fuseau +3",
  633. waist="Embla sash",
  634. })
  635.  
  636. sets.midcast.RefreshSelf = {
  637. waist="Gishdubar Sash",
  638. }
  639.  
  640. sets.midcast.Stoneskin = set_combine(sets.midcast.EnhancingDuration, {
  641. head="Umuthi hat",
  642. neck="Nodens Gorget",
  643. waist="Siegel Sash",
  644. legs="Shedir seraweels",
  645. })
  646.  
  647. sets.midcast['Phalanx'] = {main="Sakpata's Sword",
  648. sub="Ammurapi Shield",
  649. ammo="Staunch Tathlum +1",
  650. head={ name="Taeon Chapeau", augments={'"Snapshot"+5','Phalanx +3',}},
  651. body={ name="Taeon Tabard", augments={'Pet: Accuracy+17 Pet: Rng. Acc.+17','Spell interruption rate down -9%','Phalanx +3',}},
  652. hands={ name="Taeon Gloves", augments={'Pet: Accuracy+21 Pet: Rng. Acc.+21','Spell interruption rate down -6%','Phalanx +3',}},
  653. legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','Phalanx +3',}},
  654. feet={ name="Taeon Boots", augments={'Pet: Accuracy+24 Pet: Rng. Acc.+24','Pet: Crit.hit rate +4','Phalanx +3',}},
  655. neck="Incanter's Torque",
  656. waist="Embla Sash",
  657. left_ear="Mimir Earring",
  658. right_ear={ name="Leth. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+18','Mag. Acc.+18','"Dbl.Atk."+7','STR+11 DEX+11',}},
  659. left_ring="Stikini Ring +1",
  660. right_ring="Stikini Ring +1",
  661. back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +5','Enha.mag. skill +9','Mag. Acc.+2','Enh. Mag. eff. dur. +10',}}}
  662.  
  663. sets.midcast['Phalanx II'] = {main="Sakpata's Sword",
  664. sub="Ammurapi Shield",
  665. ammo="Staunch Tathlum +1",
  666. head={ name="Taeon Chapeau", augments={'"Snapshot"+5','Phalanx +3',}},
  667. body={ name="Taeon Tabard", augments={'Pet: Accuracy+17 Pet: Rng. Acc.+17','Spell interruption rate down -9%','Phalanx +3',}},
  668. hands={ name="Taeon Gloves", augments={'Pet: Accuracy+21 Pet: Rng. Acc.+21','Spell interruption rate down -6%','Phalanx +3',}},
  669. legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','Phalanx +3',}},
  670. feet={ name="Taeon Boots", augments={'Pet: Accuracy+24 Pet: Rng. Acc.+24','Pet: Crit.hit rate +4','Phalanx +3',}},
  671. neck="Incanter's Torque",
  672. waist="Embla Sash",
  673. left_ear="Mimir Earring",
  674. right_ear={ name="Leth. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+18','Mag. Acc.+18','"Dbl.Atk."+7','STR+11 DEX+11',}},
  675. left_ring="Stikini Ring +1",
  676. right_ring="Stikini Ring +1",
  677. back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +5','Enha.mag. skill +9','Mag. Acc.+2','Enh. Mag. eff. dur. +10',}}}
  678.  
  679. sets.midcast.Aquaveil = set_combine(sets.midcast.EnhancingDuration, {
  680. head="Amalric Coif +1",
  681. hands="Regal Cuffs",
  682. legs="Shedir seraweels",
  683. waist="Emphatikos Rope",
  684. })
  685.  
  686. sets.midcast.Storm = sets.midcast.EnhancingDuration
  687.  
  688. sets.midcast.Protect = sets.midcast.EnhancingDuration
  689. sets.midcast.Protectra = sets.midcast.Protect
  690. sets.midcast.Shell = sets.midcast.Protect
  691. sets.midcast.Shellra = sets.midcast.Shell
  692. sets.midcast.Barstatus = set_combine(sets.midcast['Enhancing Magic'],{neck="Sroda Necklace", legs="Shedir seraweels"})
  693.  
  694. sets.midcast.Barfire = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  695. sets.midcast.Barblizzard = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  696. sets.midcast.Baraero = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  697. sets.midcast.Barstone = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  698. sets.midcast.Barthunder = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  699. sets.midcast.Barwater = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  700. sets.midcast.Barsleep = sets.midcast.Barstatus
  701. sets.midcast.Barpoison = sets.midcast.Barstatus
  702. sets.midcast.Barparalyze = sets.midcast.Barstatus
  703. sets.midcast.Barblind = sets.midcast.Barstatus
  704. sets.midcast.Barsilence = sets.midcast.Barstatus
  705. sets.midcast.Barpetrify = sets.midcast.Barstatus
  706. sets.midcast.Barvirus = sets.midcast.Barstatus
  707. sets.midcast.Baramnesia = sets.midcast.Barstatus
  708. sets.midcast.Barfira = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  709. sets.midcast.Barblizzara = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  710. sets.midcast.Baraera = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  711. sets.midcast.Barstonra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  712. sets.midcast.Barthundra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  713. sets.midcast.Barwatera = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  714. sets.midcast.Barsleepra = sets.midcast.Barstatus
  715. sets.midcast.Barpoisonra = sets.midcast.Barstatus
  716. sets.midcast.Barparalyzra = sets.midcast.Barstatus
  717. sets.midcast.Barblindra = sets.midcast.Barstatus
  718. sets.midcast.Barsilencera = sets.midcast.Barstatus
  719. sets.midcast.Barpetra = sets.midcast.Barstatus
  720. sets.midcast.Barvira = sets.midcast.Barstatus
  721.  
  722. -- Custom spell classes
  723. sets.midcast.MndEnfeebles = {
  724. ammo="Regal Gem",
  725. head="Viti. Chapeau +3",
  726. body="Lethargy Sayon +2",
  727. hands="Leth. Ganth. +3",
  728. legs="Leth. Fuseau +3",
  729. feet="Vitiation Boots +3",
  730. neck="Dls. Torque +2",
  731. waist="Obstin. Sash",
  732. left_ear="Snotra Earring",
  733. right_ear="Regal Earring",
  734. left_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  735. right_ring="Stikini Ring +1",
  736. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  737. }
  738.  
  739. sets.midcast.MndEnfeeblesAcc = set_combine(sets.midcast.MndEnfeebles, {
  740. head="Atrophy Chapeau +1",
  741. body="Atrophy Tabard +3",
  742. left_ring="Stikini Ring +1",
  743. })
  744. sets.midcast.Silence = {
  745. ammo="Regal Gem",
  746. head="Viti. Chapeau +3",
  747. body="Atrophy Tabard +3",
  748. hands="Leth. Ganth. +3",
  749. legs="Leth. Fuseau +3",
  750. feet="Vitiation Boots +3",
  751. neck="Dls. Torque +2",
  752. waist="Obstin. Sash",
  753. left_ear="Snotra Earring",
  754. right_ear="Regal Earring",
  755. left_ring="Kishar Ring",
  756. right_ring="Stikini Ring +1",
  757. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  758. }
  759.  
  760. sets.midcast.IntEnfeebles = set_combine(sets.midcast.MndEnfeebles, {
  761. -- main="Malevolence",
  762. -- sub="Ammurapi Shield",
  763. -- left_ring="Stikini Ring +1",
  764. })
  765.  
  766. sets.midcast.IntEnfeeblesAcc = set_combine(sets.midcast.IntEnfeebles, {
  767. body="Atrophy Tabard +3",
  768. })
  769.  
  770. sets.midcast.SkillEnfeebles = {
  771. ammo="Regal Gem",
  772. head="Viti. Chapeau +3",
  773. body="Atrophy Tabard +3",
  774. hands="Leth. Ganth. +3",
  775. legs="Leth. Fuseau +3",
  776. feet="Vitiation Boots +3",
  777. neck="Dls. Torque +2",
  778. waist="Obstin. Sash",
  779. left_ear="Snotra Earring",
  780. right_ear="Regal Earring",
  781. left_ring="Stikini Ring +1",
  782. right_ring="Stikini Ring +1",
  783. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  784. }
  785.  
  786. sets.midcast.EffectEnfeebles = {
  787. ammo="Regal Gem",
  788. neck="Dls. Torque +2",
  789. body="Lethargy Sayon +2",
  790. feet="Vitiation Boots +3",
  791. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  792. }
  793.  
  794. sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  795.  
  796. sets.midcast.Sleep = { main="Crocea Mors",
  797. sub="Ammurapi Shield",
  798. ammo="Regal Gem",
  799. head="Viti. Chapeau +3",
  800. body="Lethargy Sayon +2",
  801. hands="Leth. Ganth. +3",
  802. legs="Leth. Fuseau +3",
  803. feet="Vitiation Boots +3",
  804. neck="Dls. Torque +2",
  805. waist="Obstin. Sash",
  806. left_ear="Snotra Earring",
  807. right_ear="Regal Earring",
  808. left_ring="Kishar Ring",
  809. right_ring="Metamor. Ring +1",
  810. back="Aurist's Cape +1",
  811. }
  812. sets.midcast['Sleep II'] = sets.midcast['Sleep']
  813.  
  814. sets.midcast['Sleep II'].Resistant = {
  815. ammo="Regal Gem",
  816. head="Leth. Chappel +3",
  817. body="Lethargy Sayon +2",
  818. hands="Leth. Ganth. +3",
  819. legs="Leth. Fuseau +3",
  820. feet="Leth. Houseaux +3",
  821. neck={ name="Dls. Torque +2", augments={'Path: A',}},
  822. waist={ name="Obstin. Sash", augments={'Path: A',}},
  823. left_ear="Snotra Earring",
  824. right_ear="Regal Earring",
  825. left_ring="Kishar Ring",
  826. right_ring="Stikini Ring +1",
  827. back={ name="Aurist's Cape +1", augments={'Path: A',}},
  828. }
  829.  
  830. sets.midcast['Sleepga'] = sets.midcast['Sleep']
  831. sets.midcast['Distract II'] = sets.midcast['Sleep']
  832. sets.midcast['Frazzle II'] = sets.midcast['Sleep']
  833. sets.midcast['Dia'] = {head="Volte Cap", hands="Volte Bracers", feet="Volte Boots", legs="Volte Hose"}
  834.  
  835. sets.midcast['Dia III'] = {
  836. main="Daybreak",
  837. sub="Ammurapi Shield",
  838. ammo="Regal Gem",
  839. head="Leth. Chappel +3",
  840. body="Lethargy Sayon +2",
  841. hands="Leth. Ganth. +3",
  842. legs="Leth. Fuseau +3",
  843. feet={ name="Vitiation Boots +3", augments={'Immunobreak Chance',}},
  844. neck={ name="Dls. Torque +2", augments={'Path: A',}},
  845. waist={ name="Obstin. Sash", augments={'Path: A',}},
  846. left_ear="Snotra Earring",
  847. right_ear="Malignance Earring",
  848. left_ring="Kishar Ring",
  849. right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  850. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  851. }
  852. sets.midcast['Diaga'] = sets.midcast['Dia III']
  853.  
  854. sets.midcast['Paralyze II'] = {
  855. main="Crocea Mors",
  856. sub="Ammurapi Shield",
  857. ammo="Regal Gem",
  858. head="Viti. Chapeau +3",
  859. body="Lethargy Sayon +2",
  860. hands="Leth. Ganth. +3",
  861. legs="Leth. Fuseau +3",
  862. feet="Vitiation Boots +3",
  863. neck="Dls. Torque +2",
  864. waist="Luminary Sash",
  865. left_ear="Snotra Earring",
  866. right_ear="Regal Earring",
  867. left_ring="Kishar Ring",
  868. right_ring="Stikini Ring +1",
  869. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  870. }
  871.  
  872. sets.midcast['Slow II'] = {
  873. main="Crocea Mors",
  874. sub="Ammurapi Shield",
  875. ammo="Regal Gem",
  876. head="Viti. Chapeau +3",
  877. body="Lethargy Sayon +2",
  878. hands="Leth. Ganth. +3",
  879. legs="Leth. Fuseau +3",
  880. feet="Vitiation Boots +3",
  881. neck="Dls. Torque +2",
  882. waist="Luminary Sash",
  883. left_ear="Snotra Earring",
  884. right_ear="Regal Earring",
  885. left_ring="Metamor. Ring +1",
  886. right_ring="Stikini Ring +1",
  887. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  888. }
  889. sets.midcast['Addle II'] = {
  890. main="Crocea Mors",
  891. sub="Ammurapi Shield",
  892. ammo="Regal Gem",
  893. head="Viti. Chapeau +3",
  894. body="Lethargy Sayon +2",
  895. hands="Leth. Ganth. +3",
  896. legs="Leth. Fuseau +3",
  897. feet="Vitiation Boots +3",
  898. neck="Dls. Torque +2",
  899. waist="Luminary Sash",
  900. left_ear="Snotra Earring",
  901. right_ear="Regal Earring",
  902. left_ring="Metamor. Ring +1",
  903. right_ring="Stikini Ring +1",
  904. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  905. }
  906.  
  907. sets.midcast['Inundation'] = sets.midcast['Dia III']
  908.  
  909. sets.midcast['Poison II'] = {
  910. main="Crocea Mors",
  911. sub="Ammurapi Shield",
  912. ammo="Regal Gem",
  913. head="Viti. Chapeau +3",
  914. body="Lethargy Sayon +2",
  915. hands="Leth. Ganth. +3",
  916. legs="Leth. Fuseau +3",
  917. feet="Vitiation Boots +3",
  918. neck="Dls. Torque +2",
  919. waist="Obstin. Sash",
  920. left_ear="Snotra Earring",
  921. right_ear="Leth. Earring +2",
  922. left_ring="Kishar Ring",
  923. right_ring="Stikini Ring +1",
  924. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  925. }
  926.  
  927. sets.midcast.Blind = sets.midcast.Sleep
  928. sets.midcast.Break = sets.midcast.Sleep
  929. sets.midcast.Bind = sets.midcast.Sleep
  930. sets.midcast.Dispel = sets.midcast.Sleep
  931. sets.midcast.Gravity = sets.midcast.Sleep
  932. sets.midcast['Gravity II'] = sets.midcast.Sleep
  933.  
  934. sets.midcast['Distract III'] = {
  935. main="Crocea Mors",
  936. sub="Ammurapi Shield",
  937. ammo="Regal Gem",
  938. head="Viti. Chapeau +3",
  939. body="Lethargy Sayon +2",
  940. hands="Leth. Ganth. +3",
  941. legs="Leth. Fuseau +3",
  942. feet="Vitiation Boots +3",
  943. neck="Dls. Torque +2",
  944. waist="Obstin. Sash",
  945. left_ear="Snotra Earring",
  946. right_ear="Malignance Earring",
  947. left_ring="Stikini Ring +1",
  948. right_ring="Stikini Ring +1",
  949. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}},
  950. }
  951.  
  952. sets.midcast['Frazzle III'] = {
  953. main="Crocea Mors",
  954. sub="Ammurapi Shield",
  955. ammo="Regal Gem",
  956. head="Viti. Chapeau +3",
  957. body="Lethargy Sayon +2",
  958. hands="Leth. Ganth. +3",
  959. legs="Leth. Fuseau +3",
  960. feet="Vitiation Boots +3",
  961. neck="Dls. Torque +2",
  962. waist="Obstin. Sash",
  963. left_ear="Snotra Earring",
  964. right_ear="Malignance Earring",
  965. left_ring="Stikini Ring +1",
  966. right_ring="Stikini Ring +1",
  967. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Phys. dmg. taken-10%',}},
  968. }
  969.  
  970. sets.midcast['Bio III'] = {main="Crocea Mors",
  971. sub="Ammurapi Shield",
  972. ammo="Ghastly Tathlum +1",
  973. head="Pixie Hairpin +1",
  974. body="Lethargy Sayon +2",
  975. hands="Leth. Ganth. +3",
  976. legs="Leth. Fuseau +3",
  977. feet="Vitiation Boots +3",
  978. neck="Incanter's Torque",
  979. waist="Acuity Belt +1",
  980. left_ear="Malignance Earring",
  981. right_ear="Regal Earring",
  982. left_ring="Evanescence Ring",
  983. right_ring="Stikini Ring +1",
  984. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10','Spell interruption rate down-10%',}}
  985. }
  986.  
  987. sets.midcast['Dark Magic'] = {main="Crocea Mors",
  988. sub="Ammurapi Shield",
  989. ammo="Ghastly Tathlum +1",
  990. head="Pixie Hairpin +1",
  991. body="Lethargy Sayon +2",
  992. hands="Leth. Ganth. +3",
  993. legs="Leth. Fuseau +3",
  994. feet="Vitiation Boots +3",
  995. neck="Incanter's Torque",
  996. waist="Acuity Belt +1",
  997. left_ear="Malignance Earring",
  998. right_ear="Regal Earring",
  999. left_ring="Evanescence Ring",
  1000. right_ring="Stikini Ring +1",
  1001. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10','Spell interruption rate down-10%',}}
  1002. }
  1003.  
  1004. sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  1005. head="Pixie Hairpin +1",
  1006. right_ring="Archon Ring",
  1007. -- hands="Amalric Gages",
  1008. waist="Fucho-no-obi",
  1009. })
  1010.  
  1011. sets.midcast.Aspir = sets.midcast.Drain
  1012. sets.midcast.Stun = sets.midcast.Sleep
  1013.  
  1014. sets.midcast['Elemental Magic'] = {ammo="Ghastly Tathlum +1",
  1015. head="Leth. Chappel +3",
  1016. body="Lethargy Sayon +2",
  1017. hands="Leth. Ganth. +3",
  1018. legs="Leth. Fuseau +3",
  1019. feet="Leth. Houseaux +3",
  1020. neck="Baetyl Pendant",
  1021. waist="Orpheus's Sash",
  1022. left_ear="Malignance Earring",
  1023. right_ear="Regal Earring",
  1024. left_ring="Freke Ring",
  1025. right_ring="Metamor. Ring +1",
  1026. back={ name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10','Spell interruption rate down-10%',}}
  1027. }
  1028.  
  1029. sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {
  1030. ammo="Ghastly Tathlum +1",})
  1031.  
  1032. sets.midcast['Elemental Magic'].Seidr = set_combine(sets.midcast['Elemental Magic'], {
  1033. body="Seidr Cotehardie",})
  1034.  
  1035.  
  1036. sets.midcast.Impact = {
  1037. main="Murgleis",
  1038. sub="Ammurapi Shield",
  1039. ammo="Regal Gem",
  1040. head=empty,
  1041. body="Twilight Cloak",
  1042. hands="Atrophy Gloves +3",
  1043. legs="Atrophy Tights +3",
  1044. feet="Atro. Boots +3",
  1045. neck={ name="Dls. Torque +2", augments={'Path: A',}},
  1046. waist="Luminary Sash",
  1047. left_ear="Snotra Earring",
  1048. right_ear="Regal Earring",
  1049. left_ring={name="Stikini Ring +1", bag="wardrobe3"},
  1050. right_ring={name="Stikini Ring +1", bag="wardrobe4"},
  1051. back={ name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10',}},
  1052. }
  1053. sets.midcast.Dispelga = set_combine(sets.midcast.Sleep, {main="Daybreak"})
  1054.  
  1055. sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
  1056.  
  1057. -- Initializes trusts at iLvl 119
  1058. sets.midcast.Trust = sets.precast.FC
  1059.  
  1060. -- Job-specific buff sets
  1061. sets.buff.ComposureOther = {
  1062. ammo="Staunch Tathlum +1",
  1063. head="Leth. Chappel +3",
  1064. body="Viti. Tabard +3",
  1065. hands="Atrophy Gloves +3",
  1066. legs="Leth. Fuseau +3",
  1067. feet="Leth. Houseaux +3",
  1068. neck="Dls. Torque +2",
  1069. waist="Embla sash",
  1070. left_ear="Eabani Earring",
  1071. right_ear="Leth. Earring +2",
  1072. left_ring={name="Stikini Ring +1", bag="wardrobe3"},
  1073. right_ring={name="Stikini Ring +1", bag="wardrobe4"},
  1074. back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +5','Enha.mag. skill +9','Mag. Acc.+2','Enh. Mag. eff. dur. +10',}}
  1075. }
  1076.  
  1077. sets.buff.Saboteur = {hands="Leth. Ganth. +3"}
  1078.  
  1079. sets.midcast.RA = {head="Malignance Chapeau",
  1080. body="Malignance Tabard",
  1081. --hands="Raetic Bangles +1",
  1082. hands="Malignance Gloves",
  1083. legs="Malignance Tights",
  1084. feet="Malignance Boots",
  1085. neck="Combatant's Torque",
  1086. waist="Yemaya Belt",
  1087. left_ear="Crep. Earring",
  1088. right_ear="Telos Earring",
  1089. left_ring="Crepuscular ring",
  1090. right_ring="Hajduk Ring +1",
  1091. back={ name="Sucellos's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','Rng.Acc.+10','"Snapshot"+10',}},
  1092. }
  1093.  
  1094. sets.midcast.Enmity = {
  1095. ammo="Sapience Orb",
  1096. head="Rabid Visor",
  1097. body="Emet Harness +1",
  1098. hands="Malignance Gloves",
  1099. legs="Malignance Tights",
  1100. feet="Malignance Boots",
  1101. neck={ name="Unmoving Collar +1", augments={'Path: A',}},
  1102. waist="Goading Belt",
  1103. left_ear="Trux Earring",
  1104. right_ear="Cryptic Earring",
  1105. left_ring="Eihwaz Ring",
  1106. right_ring="Supershear Ring",
  1107. back={ name="Sucellos's Cape", augments={'VIT+20','Mag. Acc+20 /Mag. Dmg.+20','VIT+10','Enmity+10','Spell interruption rate down-10%',}}
  1108. }
  1109. sets.precast.JA['Animated Flourish'] = sets.midcast.Enmity
  1110. sets.precast.JA['Provoke'] = sets.midcast.Enmity
  1111. sets.midcast.Flash = sets.midcast.Enmity
  1112. sets.midcast['Blank Gaze'] = sets.midcast.Enmity
  1113. sets.midcast['Geist Wall'] = sets.midcast.Enmity
  1114. sets.midcast['Jettatura'] = sets.midcast.Enmity
  1115. sets.midcast['Jubaku: Ichi'] = sets.midcast.Enmity
  1116. sets.midcast['Hojo: Ichi'] = sets.midcast.Enmity
  1117. sets.midcast['Hojo: Ni'] = sets.midcast.Enmity
  1118. sets.midcast['Kurayami: Ichi'] = sets.midcast.Enmity
  1119. sets.midcast['Kurayami: Ni'] = sets.midcast.Enmity
  1120. sets.midcast['Magic Finale'] = sets.midcast.Sleep
  1121.  
  1122. sets.midcast['Healing Breeze'] = sets.midcast.Cure
  1123. sets.midcast['Pollen'] = sets.midcast.Cure
  1124. sets.midcast['Awful Eye'] = sets.midcast['Sleep']
  1125. sets.midcast['Blank Gaze'] = sets.midcast['Sleep']
  1126. sets.midcast['Sheep Song'] = sets.midcast['Sleep']
  1127. sets.midcast['Soporific'] = sets.midcast['Sleep']
  1128.  
  1129. sets.midcast['Auspice'] = {
  1130. head={ name="Telchine Cap", augments={'Enh. Mag. eff. dur. +10',}},
  1131. body="Viti. Tabard +3",
  1132. hands="Atrophy Gloves +3",
  1133. legs={ name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}},
  1134. feet="Leth. Houseaux +3",
  1135. waist="Embla sash",
  1136. neck="Dls. Torque +2",
  1137. back="Ghostfyre Cape",
  1138. }
  1139. ------------------------------------------------------------------------------------------------
  1140. ----------------------------------------- Idle Sets --------------------------------------------
  1141. ------------------------------------------------------------------------------------------------
  1142.  
  1143. sets.idle = {
  1144. ammo="Homiliary",
  1145. head="Viti. Chapeau +3",
  1146. body="Lethargy Sayon +2",
  1147. hands="Leth. Ganth. +3",
  1148. legs="Carmine Cuisses +1",
  1149. feet="Malignance Boots",
  1150. neck="Sibyl Scarf",
  1151. waist="Plat. Mog. Belt",
  1152. left_ear="Eabani Earring",
  1153. right_ear="Odnowa Earring +1",
  1154. left_ring="Stikini Ring +1",
  1155. right_ring="Gelatinous Ring +1",
  1156. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  1157. }
  1158.  
  1159. sets.idle.DTidle = set_combine(sets.idle, {
  1160. ammo="Staunch Tathlum +1",
  1161. head="Leth. Chappel +3",
  1162. body="Lethargy Sayon +2",
  1163. hands="Malignance Gloves",
  1164. legs="Malignance Tights",
  1165. neck="Loricate Torque +1",
  1166. left_ear="Eabani Earring",
  1167. right_ear="Sanare Earring",
  1168. back={ name="Sucellos's Cape", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Mag. Evasion+15',}},
  1169. })
  1170.  
  1171. sets.idle.Town = set_combine(sets.idle, {right_ear="Leth. Earring +2"})
  1172.  
  1173. sets.idle.Weak = sets.idle
  1174.  
  1175. sets.idle.HP = {
  1176. ammo="Staunch Tathlum +1",
  1177. head="Leth. Chappel +3",
  1178. body="Lethargy Sayon +2",
  1179. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  1180. legs="Volte Tights",
  1181. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  1182. neck="Unmoving Collar +1",
  1183. waist="Kasiri Belt",
  1184. left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  1185. right_ear="Tuisto Earring",
  1186. left_ring="Eihwaz Ring",
  1187. right_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  1188. back="Moonlight Cape",
  1189. }
  1190.  
  1191. sets.resting = sets.idle
  1192.  
  1193. ------------------------------------------------------------------------------------------------
  1194. ---------------------------------------- Defense Sets ------------------------------------------
  1195. ------------------------------------------------------------------------------------------------
  1196.  
  1197. sets.defense.PDT = {ammo="Staunch Tathlum +1",
  1198. head="Malignance Chapeau",
  1199. body="Malignance Tabard",
  1200. hands="Malignance Gloves",
  1201. legs="Malignance Tights",
  1202. feet="Atro. Boots +3",
  1203. neck="Combatant's Torque",
  1204. waist="Kentarch Belt +1",
  1205. left_ear="Sherida Earring",
  1206. right_ear="Thureous Earring",
  1207. left_ring="Vengeful Ring",
  1208. right_ring="Gelatinous Ring +1",
  1209. back="Moonlight Cape",
  1210. }
  1211.  
  1212.  
  1213. sets.defense.DualWield = {ammo="Staunch Tathlum +1",
  1214. head="Malignance Chapeau",
  1215. body="Malignance Tabard",
  1216. hands="Malignance Gloves",
  1217. legs="Malignance Tights",
  1218. feet="Malignance Boots",
  1219. neck="Combatant's Torque",
  1220. waist="Reiki Yotai",
  1221. left_ear="Sherida Earring",
  1222. right_ear="Eabani Earring",
  1223. left_ring="Defending Ring",
  1224. right_ring="Gelatinous Ring +1",
  1225. back={ name="Sucellos's Cape", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Mag. Evasion+15',}},
  1226. }
  1227.  
  1228. sets.defense.Shield = {ammo="Staunch Tathlum +1",
  1229. head="Malignance Chapeau",
  1230. body="Malignance Tabard",
  1231. hands="Malignance Gloves",
  1232. legs="Malignance Tights",
  1233. feet="Atro. Boots +3",
  1234. neck="Combatant's Torque",
  1235. waist="Plat. Mog. Belt",
  1236. left_ear="Sherida Earring",
  1237. right_ear="Thureous Earring",
  1238. left_ring="Vengeful Ring",
  1239. right_ring="Gelatinous Ring +1",
  1240. back={ name="Sucellos's Cape", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Mag. Evasion+15',}},
  1241. }
  1242.  
  1243.  
  1244. sets.defense.MDT = {
  1245. sub="Sacro Bulwark",
  1246. ammo="Staunch Tathlum +1",
  1247. head="Ea Hat +1",
  1248. body="Atrophy Tabard +3",
  1249. hands="Aya. Manopolas +2",
  1250. legs="Viti. Tights +3",
  1251. feet="",
  1252. neck="Loricate Torque +1",
  1253. waist="Fucho-no-Obi",
  1254. left_ear="Eabani Earring",
  1255. right_ear="Sanare Earring",
  1256. left_ring="Defending Ring",
  1257. right_ring="Gelatinous Ring +1",
  1258. back="Moonlight Cape",
  1259. }
  1260.  
  1261. sets.magic_burst = {
  1262. head="Ea Hat +1",
  1263. body="Ea Houppe. +1",
  1264. legs="Ea Slops +1",
  1265. neck="Mizu. Kubikazari",
  1266. left_ring="Mujin Band",
  1267. --right_ring="Locus Ring",
  1268. }
  1269.  
  1270. sets.Kiting = {legs="Carmine Cuisses +1"}
  1271. sets.latent_refresh = {waist="Fucho-no-obi"}
  1272.  
  1273.  
  1274. ------------------------------------------------------------------------------------------------
  1275. ---------------------------------------- Engaged Sets ------------------------------------------
  1276. ------------------------------------------------------------------------------------------------
  1277.  
  1278. -- Engaged sets
  1279.  
  1280. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  1281. -- sets if more refined versions aren't defined.
  1282. -- If you create a set with both offense and defense modes, the offense mode should be first.
  1283. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  1284.  
  1285. sets.engaged = {ammo="Aurgelmir Orb +1",
  1286. head={ name="Bunzi's Hat", augments={'Path: A',}},
  1287. body="Malignance Tabard",
  1288. hands={ name="Bunzi's Gloves", augments={'Path: A',}},
  1289. legs="Malignance Tights",
  1290. feet="Malignance Boots",
  1291. neck="Anu Torque",
  1292. waist="Reiki Yotai",
  1293. left_ear="Telos Earring",
  1294. right_ear="Leth. Earring +2",
  1295. left_ring="Chirich Ring +1",
  1296. right_ring="Chirich Ring +1",
  1297. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  1298. }
  1299.  
  1300. sets.engaged.MidAcc = set_combine(sets.engaged, {
  1301. hands="Malignance Gloves",
  1302. waist="Kentarch Belt +1",
  1303. })
  1304.  
  1305. sets.engaged.HighAcc = set_combine(sets.engaged, {
  1306. head="Carmine Mask +1",
  1307. legs="Carmine Cuisses +1",
  1308. ear1="Cessance Earring",
  1309. ear2="Mache Earring +1",
  1310. waist="Kentarch Belt +1",
  1311. })
  1312.  
  1313. sets.engaged.Enspells = set_combine(sets.engaged, {
  1314. hands="Aya. Manopolas +2",
  1315. waist="Orpheus's Sash",})
  1316.  
  1317. -- No Magic Haste (49 DW Needed)
  1318. sets.engaged.DW = {ammo="Coiste Bodhar",
  1319. head="Bunzi's Hat",
  1320. body="Malignance Tabard",
  1321. hands="Bunzi's Gloves",
  1322. legs="Malignance Tights",
  1323. feet="Malignance Boots",
  1324. neck="Anu Torque",
  1325. waist="Windbuffet Belt +1",
  1326. left_ear="Sherida Earring",
  1327. right_ear="Dedition Earring",
  1328. left_ring="Chirich Ring +1",
  1329. right_ring="Chirich Ring +1",
  1330. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10','Phys. dmg. taken-10%',}}
  1331. }
  1332.  
  1333. sets.engaged.DW.MidAcc = set_combine(sets.engaged.DW, {
  1334. neck="Combatant's Torque",
  1335. })
  1336.  
  1337. sets.engaged.DW.HighAcc = set_combine(sets.engaged.DW.MidAcc, {})
  1338.  
  1339. sets.engaged.DW.Enspells = set_combine(sets.engaged.DW, {
  1340. hands="Aya. Manopolas +2",
  1341. waist="Orpheus's Sash",})
  1342.  
  1343.  
  1344. -- 15% Magic Haste (42 DW Needed)
  1345. sets.engaged.DW.LowHaste = sets.engaged.DW
  1346.  
  1347. sets.engaged.DW.MidAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, {
  1348. neck="Combatant's Torque",
  1349. })
  1350.  
  1351. sets.engaged.DW.HighAcc.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, {
  1352. head="Carmine Mask +1",
  1353. left_ring="Ramuh Ring +1",
  1354. })
  1355.  
  1356. sets.engaged.DW.Enspells.LowHaste = set_combine(sets.engaged.DW, {
  1357. hands="Aya. Manopolas +2",
  1358. waist="Orpheus's Sash",})
  1359.  
  1360. -- 30% Magic Haste (31 DW Needed)
  1361. sets.engaged.DW.MidHaste = sets.engaged.DW
  1362.  
  1363. sets.engaged.DW.MidAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, {
  1364. neck="Combatant's Torque",
  1365. right_ring="Ilabrat Ring",
  1366. })
  1367.  
  1368. sets.engaged.DW.HighAcc.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, {
  1369. head="Carmine Mask +1",
  1370. left_ring="Ramuh Ring +1",
  1371. })
  1372.  
  1373. sets.engaged.DW.Enspells.MidHaste = set_combine(sets.engaged.DW, {
  1374. hands="Aya. Manopolas +2",
  1375. waist="Orpheus's Sash",})
  1376.  
  1377. -- 35% Magic Haste (26 DW Needed)
  1378. sets.engaged.DW.HighHaste = set_combine(sets.engaged.DW, {
  1379. legs="Malignance tights",
  1380. }) --26
  1381.  
  1382. sets.engaged.DW.MidAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, {
  1383. neck="Combatant's Torque",
  1384. })
  1385.  
  1386. sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, {
  1387. head="Carmine Mask +1",
  1388. left_ring="Ramuh Ring +1",
  1389. })
  1390.  
  1391. sets.engaged.DW.Enspells.HighHaste = set_combine(sets.engaged.DW, {
  1392. hands="Aya. Manopolas +2",
  1393. waist="Orpheus's Sash",
  1394. legs="Carmine Cuisses +1"})
  1395.  
  1396. -- 45% Magic Haste (11 DW Needed)
  1397. sets.engaged.DW.MaxHaste = {
  1398. ammo="Coiste Bodhar",
  1399. head="Bunzi's Hat",
  1400. body="Malignance Tabard",
  1401. hands="Bunzi's Gloves",
  1402. legs="Malignance Tights",
  1403. feet="Malignance Boots",
  1404. neck="Anu Torque",
  1405. waist="Windbuffet Belt +1",
  1406. left_ear="Sherida Earring",
  1407. right_ear="Dedition Earring",
  1408. left_ring="Chirich Ring +1",
  1409. right_ring="Chirich Ring +1",
  1410. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10','Phys. dmg. taken-10%',}}}
  1411.  
  1412. sets.engaged.DW.MidAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, {
  1413. hands="Malignance Gloves",
  1414. })
  1415.  
  1416. sets.engaged.DW.HighAcc.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, {
  1417. left_ring="Ramuh Ring +1",
  1418. right_ear="Telos Earring",
  1419. })
  1420.  
  1421. sets.engaged.DW.Enspells.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, {
  1422. hands="Aya. Manopolas +2",
  1423. waist="Orpheus's Sash",
  1424. })
  1425.  
  1426. ------------------------------------------------------------------------------------------------
  1427. ---------------------------------------- Hybrid Sets -------------------------------------------
  1428. ------------------------------------------------------------------------------------------------
  1429.  
  1430. sets.engaged.Hybrid = {ammo="Staunch Tathlum +1",
  1431. head="Nyame Helm",
  1432. body="Malignance Tabard",
  1433. hands="Malignance Gloves",
  1434. legs="Malignance Tights",
  1435. feet="Aya. Gambieras +2",
  1436. neck="Anu Torque",
  1437. waist="Reiki Yotai",
  1438. left_ear="Eabani Earring",
  1439. right_ear="Leth. Earring +2",
  1440. left_ring="Hetairoi Ring",
  1441. right_ring="Chirich Ring +1",
  1442. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  1443. }
  1444.  
  1445. sets.engaged.Enspell = {ammo="Hasty Pinion +1",
  1446. head="Umuthi Hat",
  1447. body={ name="Viti. Tabard +3", augments={'Enhances "Chainspell" effect',}},
  1448. hands="Aya. Manopolas +2",
  1449. legs="Atrophy Tights +3",
  1450. feet="Malignance Boots",
  1451. neck="Bathy Choker +1",
  1452. waist="Orpheus's Sash",
  1453. left_ear="Sherida Earring",
  1454. right_ear="Digni. Earring",
  1455. left_ring="Chirich Ring +1",
  1456. right_ring="Chirich Ring +1",
  1457. back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +6','Enha.mag. skill +10','Mag. Acc.+7','Enh. Mag. eff. dur. +20',}},
  1458. }
  1459. sets.engaged.SubtleBlow = {head="Volte Tiara",
  1460. hands="Volte Mittens",
  1461. legs="Volte Tights",
  1462. feet="Volte Spats",
  1463. }
  1464.  
  1465. sets.engaged.TA = {ammo="Yetshila +1",
  1466. head={ name="Blistering Sallet +1", augments={'Path: A',}},
  1467. legs={ name="Zoar Subligar +1", augments={'Path: A',}},
  1468. feet="Thereoid Greaves",
  1469. waist="Gerdr Belt +1",
  1470. left_ear="Suppanomimi",
  1471. right_ring="Hetairoi Ring",
  1472. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  1473. }
  1474.  
  1475. sets.engaged.TA.SW = {ammo="Yetshila +1",
  1476. head={ name="Blistering Sallet +1", augments={'Path: A',}},
  1477. legs={ name="Zoar Subligar +1", augments={'Path: A',}},
  1478. feet="Thereoid Greaves",
  1479. waist="Gerdr Belt +1",
  1480. right_ring="Hetairoi Ring",
  1481. back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  1482. }
  1483.  
  1484. sets.engaged.Crit = set_combine(sets.engaged, sets.engaged.Hybrid)
  1485. sets.engaged.MidAcc.Crit = set_combine(sets.engaged.MidAcc, sets.engaged.Hybrid)
  1486. sets.engaged.HighAcc.Crit = set_combine(sets.engaged.HighAcc, sets.engaged.Hybrid)
  1487.  
  1488. sets.engaged.SwordEnh = set_combine(sets.engaged, sets.engaged.Enspell)
  1489. sets.engaged.MidAcc.SwordEnh = set_combine(sets.engaged.MidAcc, sets.engaged.Enspell)
  1490. sets.engaged.HighAcc.SwordEnh = set_combine(sets.engaged.HighAcc, sets.engaged.Enspell)
  1491.  
  1492. sets.engaged.Subtle = set_combine(sets.engaged, sets.engaged.SubtleBlow)
  1493. sets.engaged.MidAcc.Subtle = set_combine(sets.engaged.MidAcc, sets.engaged.SubtleBlow)
  1494. sets.engaged.HighAcc.Subtle = set_combine(sets.engaged.HighAcc, sets.engaged.SubtleBlow)
  1495.  
  1496. sets.engaged.Almace = set_combine(sets.engaged, sets.engaged.TA.SW)
  1497. sets.engaged.MidAcc.Almace = set_combine(sets.engaged.MidAcc, sets.engaged.TA.SW)
  1498. sets.engaged.HighAcc.Almace = set_combine(sets.engaged.HighAcc, sets.engaged.TA.SW)
  1499.  
  1500. sets.engaged.DW.Crit = set_combine(sets.engaged.DW, sets.engaged.Hybrid)
  1501. sets.engaged.DW.MidAcc.Crit = set_combine(sets.engaged.DW.MidAcc, sets.engaged.Hybrid)
  1502. sets.engaged.DW.HighAcc.Crit = set_combine(sets.engaged.DW.HighAcc, sets.engaged.Hybrid)
  1503.  
  1504. sets.engaged.DW.SwordEnh = set_combine(sets.engaged.DW, sets.engaged.Enspell)
  1505. sets.engaged.DW.MidAcc.SwordEnh = set_combine(sets.engaged.DW.MidAcc, sets.engaged.Enspell)
  1506. sets.engaged.DW.HighAcc.SwordEnh = set_combine(sets.engaged.DW.HighAcc, sets.engaged.Enspell)
  1507.  
  1508. sets.engaged.DW.Subtle = set_combine(sets.engaged.DW, sets.engaged.SubtleBlow)
  1509. sets.engaged.DW.MidAcc.Subtle = set_combine(sets.engaged.DW.MidAcc, sets.engaged.SubtleBlow)
  1510. sets.engaged.DW.HighAcc.Subtle = set_combine(sets.engaged.DW.HighAcc, sets.engaged.SubtleBlow)
  1511.  
  1512. sets.engaged.DW.Almace = set_combine(sets.engaged.DW, sets.engaged.TA)
  1513. sets.engaged.DW.MidAcc.Almace = set_combine(sets.engaged.DW.MidAcc, sets.engaged.TA)
  1514. sets.engaged.DW.HighAcc.Almace = set_combine(sets.engaged.DW.HighAcc, sets.engaged.TA)
  1515.  
  1516. sets.engaged.DW.Crit.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Hybrid)
  1517. sets.engaged.DW.MidAcc.Crit.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.Hybrid)
  1518. sets.engaged.DW.HighAcc.Crit.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.Hybrid)
  1519.  
  1520. sets.engaged.DW.SwordEnh.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Enspell)
  1521. sets.engaged.DW.MidAcc.SwordEnh.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.Enspell)
  1522. sets.engaged.DW.HighAcc.SwordEnh.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.Enspell)
  1523.  
  1524. sets.engaged.DW.Subtle.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.SubtleBlow)
  1525. sets.engaged.DW.MidAcc.Subtle.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.SubtleBlow)
  1526. sets.engaged.DW.HighAcc.Subtle.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.SubtleBlow)
  1527.  
  1528. sets.engaged.DW.Almace.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.TA)
  1529. sets.engaged.DW.MidAcc.Almace.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.TA)
  1530. sets.engaged.DW.HighAcc.Almace.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.TA)
  1531.  
  1532. sets.engaged.DW.Crit.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Hybrid)
  1533. sets.engaged.DW.MidAcc.Crit.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.Hybrid)
  1534. sets.engaged.DW.HighAcc.Crit.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.Hybrid)
  1535.  
  1536. sets.engaged.DW.SwordEnh.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Enspell)
  1537. sets.engaged.DW.MidAcc.SwordEnh.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.Enspell)
  1538. sets.engaged.DW.HighAcc.SwordEnh.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.Enspell)
  1539.  
  1540. sets.engaged.DW.Subtle.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.SubtleBlow)
  1541. sets.engaged.DW.MidAcc.Subtle.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.SubtleBlow)
  1542. sets.engaged.DW.HighAcc.Subtle.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.SubtleBlow)
  1543.  
  1544. sets.engaged.DW.Almace.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.TA)
  1545. sets.engaged.DW.MidAcc.Almace.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.TA)
  1546. sets.engaged.DW.HighAcc.Almace.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.TA)
  1547.  
  1548. sets.engaged.DW.Crit.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Hybrid)
  1549. sets.engaged.DW.MidAcc.Crit.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.Hybrid)
  1550. sets.engaged.DW.HighAcc.Crit.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.Hybrid)
  1551.  
  1552. sets.engaged.DW.SwordEnh.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Enspell)
  1553. sets.engaged.DW.MidAcc.SwordEnh.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.Enspell)
  1554. sets.engaged.DW.HighAcc.SwordEnh.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.Enspell)
  1555.  
  1556. sets.engaged.DW.Subtle.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.SubtleBlow)
  1557. sets.engaged.DW.MidAcc.Subtle.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.SubtleBlow)
  1558. sets.engaged.DW.HighAcc.Subtle.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.SubtleBlow)
  1559.  
  1560. sets.engaged.DW.Almace.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.TA)
  1561. sets.engaged.DW.MidAcc.Almace.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.TA)
  1562. sets.engaged.DW.HighAcc.Almace.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.TA)
  1563.  
  1564. sets.engaged.DW.Crit.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.Hybrid)
  1565. sets.engaged.DW.MidAcc.Crit.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.Hybrid)
  1566. sets.engaged.DW.HighAcc.Crit.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.Hybrid)
  1567.  
  1568. sets.engaged.DW.SwordEnh.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.Enspell)
  1569. sets.engaged.DW.MidAcc.SwordEnh.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.Enspell)
  1570. sets.engaged.DW.HighAcc.SwordEnh.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.Enspell)
  1571.  
  1572. sets.engaged.DW.Subtle.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.SubtleBlow)
  1573. sets.engaged.DW.MidAcc.Subtle.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.SubtleBlow)
  1574. sets.engaged.DW.HighAcc.Subtle.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.SubtleBlow)
  1575.  
  1576. sets.engaged.DW.Almace.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.TA)
  1577. sets.engaged.DW.MidAcc.Almace.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.TA)
  1578. sets.engaged.DW.HighAcc.Almace.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.TA)
  1579.  
  1580.  
  1581. ------------------------------------------------------------------------------------------------
  1582. ---------------------------------------- Special Sets ------------------------------------------
  1583. ------------------------------------------------------------------------------------------------
  1584.  
  1585. sets.buff.Doom = {neck="Nicander's necklace",
  1586. waist="Gishdubar Sash"}
  1587.  
  1588. sets.Obi = {waist="Hachirin-no-Obi"}
  1589. sets.CP = {back="Mecisto. Mantle"}
  1590.  
  1591. end
  1592.  
  1593. -------------------------------------------------------------------------------------------------------------------
  1594. -- Job-specific hooks for standard casting events.
  1595. -------------------------------------------------------------------------------------------------------------------
  1596.  
  1597. function job_precast(spell, action, spellMap, eventArgs)
  1598. if spellMap == 'Utsusemi' then
  1599. if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
  1600. cancel_spell()
  1601. add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
  1602. eventArgs.handled = true
  1603. return
  1604. elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
  1605. send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
  1606. end
  1607. end
  1608. end
  1609.  
  1610. function job_post_precast(spell, action, spellMap, eventArgs)
  1611. if spell.name == 'Impact' then
  1612. equip(sets.precast.FC.Impact)
  1613. end
  1614. if spell.name == 'Dispelga' then
  1615. equip(sets.precast.FC.Dispelga)
  1616. end
  1617. -- if spell.type == 'WeaponSkill' then
  1618. -- if spell.english == 'Sanguine Blade' then
  1619. -- if world.weather_element == 'Dark' or world.day_element == 'Dark' then
  1620. -- equip(sets.Obi)
  1621. -- end
  1622. -- elseif spell.english == 'Burning Blade' and (world.weather_element == 'Fire' or world.day_element == 'Fire') then
  1623. -- equip(sets.Obi)
  1624. -- elseif spell.english == 'Red Lotus Blade' and (world.weather_element == 'Fire' or world.day_element == 'Fire') then
  1625. -- equip(sets.Obi)
  1626. -- end
  1627. -- end
  1628. if elemental_ws:contains(spell.name) then
  1629. -- Matching double weather (w/o day conflict).
  1630. if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
  1631. equip(sets.Obi)
  1632. -- Target distance under 1.7 yalms.
  1633. elseif spell.target.distance < (1.7 + spell.target.model_size) then
  1634. equip({waist="Orpheus's Sash"})
  1635. -- Matching day and weather.
  1636. elseif spell.element == world.day_element and spell.element == world.weather_element then
  1637. equip(sets.Obi)
  1638. -- Target distance under 8 yalms.
  1639. elseif spell.target.distance < (8 + spell.target.model_size) then
  1640. equip({waist="Orpheus's Sash"})
  1641. -- Match day or weather.
  1642. elseif spell.element == world.day_element or spell.element == world.weather_element then
  1643. equip(sets.Obi)
  1644. end
  1645. end
  1646. end
  1647.  
  1648. function job_midcast(spell, action, spellMap, eventArgs)
  1649. if spell.skill == 'Enfeebling Magic' then
  1650. if enfeebling_magic_skill:contains(spell.english) or enfeebling_magic_effect:contains(spell.english) then
  1651. if spell.type == "WhiteMagic" then
  1652. equip(sets.midcast.MndEnfeeblesAcc)
  1653. else
  1654. equip(sets.midcast.IntEnfeeblesAcc)
  1655. end
  1656. end
  1657. end
  1658. end
  1659.  
  1660. -- Run after the default midcast() is done.
  1661. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  1662. function job_post_midcast(spell, action, spellMap, eventArgs)
  1663. if spell.skill == 'Enfeebling Magic' then
  1664. if enfeebling_magic_skill:contains(spell.english) then
  1665. equip(sets.midcast.SkillEnfeebles)
  1666. elseif enfeebling_magic_effect:contains(spell.english) then
  1667. equip(sets.midcast.EffectEnfeebles)
  1668. end
  1669. if state.Buff.Saboteur then
  1670. equip(sets.buff.Saboteur)
  1671. end
  1672. end
  1673. if spell.skill == 'Enhancing Magic' then
  1674. if classes.NoSkillSpells:contains(spell.english) then
  1675. equip(sets.midcast.EnhancingDuration)
  1676. if spellMap == 'Refresh' then
  1677. equip(sets.midcast.Refresh)
  1678. if spell.target.type == 'SELF' then
  1679. equip (sets.midcast.RefreshSelf)
  1680. end
  1681. end
  1682. elseif skill_spells:contains(spell.english) then
  1683. equip(sets.midcast.EnhancingSkill)
  1684. elseif spell.english:startswith('Gain') then
  1685. equip(sets.midcast.GainSpell)
  1686. end
  1687. if (spell.target.type == 'PLAYER' or spell.target.type == 'NPC') and buffactive.Composure then
  1688. equip(sets.buff.ComposureOther)
  1689. if spellMap == 'Refresh' then
  1690. equip(sets.midcast.Refresh)
  1691. end
  1692. if spell.english == 'Phalanx II' then
  1693. equip(sets.buff.ComposureOther)
  1694. end
  1695. end
  1696. end
  1697. if spellMap == 'Cure' and spell.target.type == 'SELF' then
  1698. equip(sets.midcast.CureSelf)
  1699. end
  1700. if spell.skill == 'Elemental Magic' then
  1701. if state.MagicBurst.value and spell.english ~= 'Death' then
  1702. equip(sets.magic_burst)
  1703. if spell.english == "Impact" then
  1704. equip(sets.midcast.Impact)
  1705. end
  1706. end
  1707. -- if (spell.element == world.day_element or spell.element == world.weather_element) then
  1708. -- equip(sets.Obi)
  1709. -- end
  1710. if spell.skill == 'Elemental Magic' or spell.english == "Kaustra" then
  1711. if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
  1712. equip(sets.Obi)
  1713. -- Target distance under 1.7 yalms.
  1714. elseif spell.target.distance < (1.7 + spell.target.model_size) then
  1715. equip({waist="Orpheus's Sash"})
  1716. -- Matching day and weather.
  1717. elseif spell.element == world.day_element and spell.element == world.weather_element then
  1718. equip(sets.Obi)
  1719. -- Target distance under 8 yalms.
  1720. elseif spell.target.distance < (8 + spell.target.model_size) then
  1721. equip({waist="Orpheus's Sash"})
  1722. -- Match day or weather.
  1723. elseif spell.element == world.day_element or spell.element == world.weather_element then
  1724. equip(sets.Obi)
  1725. end
  1726. end
  1727. end
  1728. end
  1729.  
  1730. function job_aftercast(spell, action, spellMap, eventArgs)
  1731. if not spell.interrupted then
  1732. if spell.english == "Sleep II" then
  1733. send_command('@timers c "Sleep II ['..spell.target.name..']" 90 down spells/00259.png')
  1734. elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
  1735. send_command('@timers c "Sleep ['..spell.target.name..']" 60 down spells/00253.png')
  1736. elseif spell.english == "Break" then
  1737. send_command('@timers c "Break ['..spell.target.name..']" 30 down spells/00255.png')
  1738. end
  1739. end
  1740. end
  1741.  
  1742. -------------------------------------------------------------------------------------------------------------------
  1743. -- Job-specific hooks for non-casting events.
  1744. -------------------------------------------------------------------------------------------------------------------
  1745.  
  1746. function job_buff_change(buff,gain)
  1747. if buff == "doom" then
  1748. if gain then
  1749. equip(sets.buff.Doom)
  1750. send_command('@input /p Doomed.')
  1751. disable('neck','waist')
  1752. else
  1753. enable('neck','waist')
  1754. handle_equipping_gear(player.status)
  1755. end
  1756. end
  1757. end
  1758.  
  1759. -- Handle notifications of general user state change.
  1760. function job_state_change(stateField, newValue, oldValue)
  1761. if state.WeaponLock.value == true then
  1762. disable('main','sub')
  1763. else
  1764. enable('main','sub')
  1765. end
  1766. if state.RingLock.value == true then
  1767. disable('left_ring','right_ring')
  1768. else
  1769. enable('left_ring','right_ring')
  1770. end
  1771. end
  1772.  
  1773. -------------------------------------------------------------------------------------------------------------------
  1774. -- User code that supplements standard library decisions.
  1775. -------------------------------------------------------------------------------------------------------------------
  1776.  
  1777. -- Called by the 'update' self-command, for common needs.
  1778. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  1779. function job_handle_equipping_gear(playerStatus, eventArgs)
  1780. check_gear()
  1781. update_combat_form()
  1782. determine_haste_group()
  1783. check_moving()
  1784. end
  1785.  
  1786. function job_update(cmdParams, eventArgs)
  1787. handle_equipping_gear(player.status)
  1788. end
  1789.  
  1790. function update_combat_form()
  1791. if DW == true then
  1792. state.CombatForm:set('DW')
  1793. elseif DW == false then
  1794. state.CombatForm:reset()
  1795. end
  1796. end
  1797.  
  1798. -- Custom spell mapping.
  1799. function job_get_spell_map(spell, default_spell_map)
  1800. if spell.action_type == 'Magic' then
  1801. if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  1802. if (world.weather_element == 'Light' or world.day_element == 'Light') and spell.target.type ~= 'SELF' then
  1803. return 'CureWeather'
  1804. elseif spell.target.type == 'SELF' then
  1805. return 'CureSelf'
  1806. end
  1807. end
  1808. if spell.skill == 'Enfeebling Magic' then
  1809. if spell.type == "WhiteMagic" then
  1810. if enfeebling_magic_effect:contains(spell.english) then
  1811. return "EffectEnfeebles"
  1812. elseif not enfeebling_magic_skill:contains(spell.english) then
  1813. if enfeebling_magic_acc:contains(spell.english) and not buffactive.Stymie then
  1814. return "MndEnfeeblesAcc"
  1815. else
  1816. return "MndEnfeebles"
  1817. end
  1818. end
  1819. elseif spell.type == "BlackMagic" then
  1820. if enfeebling_magic_effect:contains(spell.english) then
  1821. return "EffectEnfeebles"
  1822. elseif not enfeebling_magic_skill:contains(spell.english) then
  1823. if enfeebling_magic_acc:contains(spell.english) and not buffactive.Stymie then
  1824. return "IntEnfeeblesAcc"
  1825. else
  1826. return "IntEnfeebles"
  1827. end
  1828. end
  1829. else
  1830. return "MndEnfeebles"
  1831. end
  1832. end
  1833. end
  1834. end
  1835.  
  1836. -- Modify the default idle set after it was constructed.
  1837. function customize_idle_set(idleSet)
  1838. if player.mpp < 51 then
  1839. idleSet = set_combine(idleSet, sets.latent_refresh)
  1840. elseif state.CP.current == 'on' then
  1841. equip(sets.CP)
  1842. disable('back')
  1843. else
  1844. enable('back')
  1845. end
  1846. if state.Auto_Kite.value == true then
  1847. idleSet = set_combine(idleSet, sets.Kiting)
  1848. end
  1849. return idleSet
  1850. end
  1851.  
  1852. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  1853. function display_current_job_state(eventArgs)
  1854. display_current_caster_state()
  1855. eventArgs.handled = true
  1856. end
  1857.  
  1858. -- Function to display the current relevant user state when doing an update.
  1859. -- Return true if display was handled, and you don't want the default info shown.
  1860. function display_current_job_state(eventArgs)
  1861. local msg = '[ Melee'
  1862.  
  1863. if state.CombatForm.has_value then
  1864. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  1865. end
  1866.  
  1867. msg = msg .. ': '
  1868.  
  1869. msg = msg .. state.OffenseMode.value
  1870. if state.HybridMode.value ~= 'Normal' then
  1871. msg = msg .. '/' .. state.HybridMode.value
  1872. end
  1873. msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
  1874.  
  1875. if state.DefenseMode.value ~= 'None' then
  1876. msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
  1877. end
  1878.  
  1879. if state.IdleMode.value ~= 'None' then
  1880. msg = msg .. '[ Idle: ' .. state.IdleMode.value .. ' ]'
  1881. end
  1882.  
  1883. if state.Kiting.value then
  1884. msg = msg .. '[ Kiting Mode: ON ]'
  1885. end
  1886.  
  1887. add_to_chat(060, msg)
  1888.  
  1889. eventArgs.handled = true
  1890. end
  1891.  
  1892. -------------------------------------------------------------------------------------------------------------------
  1893. -- Utility functions specific to this job.
  1894. -------------------------------------------------------------------------------------------------------------------
  1895. --original function for haste:
  1896. --function determine_haste_group()
  1897. -- classes.CustomMeleeGroups:clear()
  1898. -- if DW == true then
  1899. -- if DW_needed <= 11 then
  1900. -- classes.CustomMeleeGroups:append('MaxHaste')
  1901. -- elseif DW_needed > 11 and DW_needed <= 26 then
  1902. -- classes.CustomMeleeGroups:append('HighHaste')
  1903. -- elseif DW_needed > 26 and DW_needed <= 31 then
  1904. -- classes.CustomMeleeGroups:append('MidHaste')
  1905. -- elseif DW_needed > 31 and DW_needed <= 42 then
  1906. -- classes.CustomMeleeGroups:append('LowHaste')
  1907. -- elseif DW_needed > 42 then
  1908. -- classes.CustomMeleeGroups:append('')
  1909. -- end
  1910. -- end
  1911. --end
  1912.  
  1913.  
  1914.  
  1915. function determine_haste_group()
  1916. classes.CustomMeleeGroups:clear()
  1917. if DW == true then
  1918. if DW_needed <= 25 then
  1919. classes.CustomMeleeGroups:append('MaxHaste')
  1920. elseif DW_needed > 25 and DW_needed <= 31 then
  1921. classes.CustomMeleeGroups:append('HighHaste')
  1922. elseif DW_needed > 31 and DW_needed > 42 then
  1923. classes.CustomMeleeGroups:append('LowHaste')
  1924. classes.CustomMeleeGroups:append('')
  1925. end
  1926. end
  1927. end
  1928.  
  1929. function job_self_command(cmdParams, eventArgs)
  1930. if cmdParams[1]:lower() == 'scholar' then
  1931. handle_strategems(cmdParams)
  1932. eventArgs.handled = true
  1933. elseif cmdParams[1]:lower() == 'nuke' then
  1934. handle_nuking(cmdParams)
  1935. eventArgs.handled = true
  1936. end
  1937.  
  1938. gearinfo(cmdParams, eventArgs)
  1939. end
  1940.  
  1941. function gearinfo(cmdParams, eventArgs)
  1942. if cmdParams[1] == 'gearinfo' then
  1943. if type(tonumber(cmdParams[2])) == 'number' then
  1944. if tonumber(cmdParams[2]) ~= DW_needed then
  1945. DW_needed = tonumber(cmdParams[2])
  1946. DW = true
  1947. end
  1948. elseif type(cmdParams[2]) == 'string' then
  1949. if cmdParams[2] == 'false' then
  1950. DW_needed = 0
  1951. DW = false
  1952. end
  1953. end
  1954. if type(tonumber(cmdParams[3])) == 'number' then
  1955. if tonumber(cmdParams[3]) ~= Haste then
  1956. Haste = tonumber(cmdParams[3])
  1957. end
  1958. end
  1959. if type(cmdParams[4]) == 'string' then
  1960. if cmdParams[4] == 'true' then
  1961. moving = true
  1962. elseif cmdParams[4] == 'false' then
  1963. moving = false
  1964. end
  1965. end
  1966. if type(tonumber(cmdParams[5])) == 'number' then
  1967. if tonumber(cmdParams[5]) ~= MA_needed then
  1968. MA_needed = tonumber(cmdParams[5])
  1969. H2H = true
  1970. end
  1971. elseif type(cmdParams[5]) == 'string' then
  1972. if cmdParams[5] == 'false' then
  1973. MA_needed = 0
  1974. H2H = false
  1975. end
  1976. end
  1977. if not midaction() then
  1978. job_update()
  1979. end
  1980. end
  1981. end
  1982.  
  1983. -- General handling of strategems in an Arts-agnostic way.
  1984. -- Format: gs c scholar <strategem>
  1985.  
  1986. function handle_strategems(cmdParams)
  1987. -- cmdParams[1] == 'scholar'
  1988. -- cmdParams[2] == strategem to use
  1989.  
  1990. if not cmdParams[2] then
  1991. add_to_chat(123,'Error: No strategem command given.')
  1992. return
  1993. end
  1994. local strategem = cmdParams[2]:lower()
  1995.  
  1996. if strategem == 'light' then
  1997. if buffactive['light arts'] then
  1998. send_command('input /ja "Addendum: White" <me>')
  1999. elseif buffactive['addendum: white'] then
  2000. add_to_chat(122,'Error: Addendum: White is already active.')
  2001. else
  2002. send_command('input /ja "Light Arts" <me>')
  2003. end
  2004. elseif strategem == 'dark' then
  2005. if buffactive['dark arts'] then
  2006. send_command('input /ja "Addendum: Black" <me>')
  2007. elseif buffactive['addendum: black'] then
  2008. add_to_chat(122,'Error: Addendum: Black is already active.')
  2009. else
  2010. send_command('input /ja "Dark Arts" <me>')
  2011. end
  2012. elseif buffactive['light arts'] or buffactive['addendum: white'] then
  2013. if strategem == 'cost' then
  2014. send_command('input /ja Penury <me>')
  2015. elseif strategem == 'speed' then
  2016. send_command('input /ja Celerity <me>')
  2017. elseif strategem == 'aoe' then
  2018. send_command('input /ja Accession <me>')
  2019. elseif strategem == 'addendum' then
  2020. send_command('input /ja "Addendum: White" <me>')
  2021. else
  2022. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  2023. end
  2024. elseif buffactive['dark arts'] or buffactive['addendum: black'] then
  2025. if strategem == 'cost' then
  2026. send_command('input /ja Parsimony <me>')
  2027. elseif strategem == 'speed' then
  2028. send_command('input /ja Alacrity <me>')
  2029. elseif strategem == 'aoe' then
  2030. send_command('input /ja Manifestation <me>')
  2031. elseif strategem == 'addendum' then
  2032. send_command('input /ja "Addendum: Black" <me>')
  2033. else
  2034. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  2035. end
  2036. else
  2037. add_to_chat(123,'No arts has been activated yet.')
  2038. end
  2039. end
  2040.  
  2041. function check_moving()
  2042. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  2043. if state.Auto_Kite.value == false and moving then
  2044. state.Auto_Kite:set(true)
  2045. elseif state.Auto_Kite.value == true and moving == false then
  2046. state.Auto_Kite:set(false)
  2047. end
  2048. end
  2049. end
  2050.  
  2051. function check_gear()
  2052. if no_swap_gear:contains(player.equipment.left_ring) then
  2053. disable("left_ring")
  2054. else
  2055. enable("left_ring")
  2056. end
  2057. if no_swap_gear:contains(player.equipment.right_ring) then
  2058. disable("right_ring")
  2059. else
  2060. enable("right_ring")
  2061. end
  2062. end
  2063.  
  2064. windower.register_event('zone change',
  2065. function()
  2066. if no_swap_gear:contains(player.equipment.left_ring) then
  2067. enable("left_ring")
  2068. equip(sets.idle)
  2069. end
  2070. if no_swap_gear:contains(player.equipment.right_ring) then
  2071. enable("right_ring")
  2072. equip(sets.idle)
  2073. end
  2074. end
  2075. )
  2076.  
  2077. --windower.register_event('zone change',
  2078. -- function()
  2079. -- send_command('gi ugs true')
  2080. -- end
  2081. --)
  2082.  
  2083. -- Select default macro book on initial load or subjob change.
  2084. function select_default_macro_book()
  2085. -- Default macro set/book
  2086. set_macro_page(1, 3)
  2087. end
  2088.  
  2089. function set_lockstyle()
  2090. send_command('wait 2; input /lockstyleset ' .. lockstyleset)
  2091. end
  2092.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement