bongarippa

EvdaSCH

Nov 16th, 2023 (edited)
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 59.84 KB | None | 0 0
  1. -- Original: Motenten / Modified: Arislan
  2.  
  3. -------------------------------------------------------------------------------------------------------------------
  4. -- Keybinds
  5. -------------------------------------------------------------------------------------------------------------------
  6.  
  7. -- Modes: [ F10 ] Emergency -PDT Mode
  8. -- [ ALT+F10 ] Toggle Kiting Mode
  9. -- [ F11 ] Emergency -MDT Mode
  10. -- [ CTRL+F11 ] Cycle Casting Modes
  11. -- [ F12 ] Update Current Gear / Report Current Status
  12. -- [ CTRL+F12 ] Cycle Idle Modes
  13. -- [ ALT+F12 ] Cancel Emergency -PDT/-MDT Mode
  14. -- [ ALT+` ] Toggle Magic Burst Mode
  15. -- [ WIN+C ] Toggle Capacity Points Mode
  16. -- [ WIN+H ] Cycle Helix Mode
  17. -- [ WIN+R ] Cycle Regen Mode
  18. -- [ WIN+S ] Toggle Storm Surge
  19. --
  20. -- Abilities: [ CTRL+` ] Immanence
  21. -- [ CTRL+- ] Light Arts/Addendum: White
  22. -- [ CTRL+= ] Dark Arts/Addendum: Black
  23. -- [ CTRL+[ ] Rapture/Ebullience
  24. -- [ CTRL+] ] Altruism/Focalization
  25. -- [ CTRL+; ] Celerity/Alacrity
  26. -- [ ALT+[ ] Accesion/Manifestation
  27. -- [ ALT+] ] Perpetuance
  28. -- [ ALT+; ] Penury/Parsimony
  29. --
  30. -- Weapons: [ CTRL+W ] Toggles Weapon Lock
  31. --
  32. -- WS: [ CTRL+Numpad0 ] Myrkr
  33. --
  34. --
  35. -- (Global-Binds.lua contains additional non-job-related keybinds)
  36.  
  37.  
  38. -------------------------------------------------------------------------------------------------------------------
  39. -- Setup functions for this job. Generally should not be modified.
  40. -------------------------------------------------------------------------------------------------------------------
  41.  
  42. -- Addendum Commands:
  43. -- Shorthand versions for each strategem type that uses the version appropriate for
  44. -- the current Arts.
  45. -- Light Arts Dark Arts
  46. -- ---------- ---------
  47. -- gs c scholar light Light Arts/Addendum
  48. -- gs c scholar dark Dark Arts/Addendum
  49. -- gs c scholar cost Penury Parsimony
  50. -- gs c scholar speed Celerity Alacrity
  51. -- gs c scholar aoe Accession Manifestation
  52. -- gs c scholar power Rapture Ebullience
  53. -- gs c scholar duration Perpetuance
  54. -- gs c scholar accuracy Altruism Focalization
  55. -- gs c scholar enmity Tranquility Equanimity
  56. -- gs c scholar skillchain Immanence
  57. -- gs c scholar addendum Addendum: White Addendum: Black
  58.  
  59.  
  60. -------------------------------------------------------------------------------------------------------------------
  61. -- Setup functions for this job. Generally should not be modified.
  62. -------------------------------------------------------------------------------------------------------------------
  63.  
  64. -- Initialization function for this job file.
  65. function get_sets()
  66. mote_include_version = 2
  67.  
  68. -- Load and initialize the include file.
  69. include('Mote-Include.lua')
  70. end
  71.  
  72. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  73. function job_setup()
  74. info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
  75. "Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  76.  
  77. state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  78. state.HelixMode = M{['description']='Helix Mode', 'Potency', 'Duration'}
  79. state.RegenMode = M{['description']='Regen Mode', 'Duration', 'Potency'}
  80. state.CP = M(false, "Capacity Points Mode")
  81.  
  82. update_active_strategems()
  83.  
  84. no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  85. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring"}
  86. degrade_array = {
  87. ['Aspirs'] = {'Aspir','Aspir II'}
  88. }
  89. elemental_ws = S{}--"Cataclysm", "Flash Nova"
  90. lockstyleset = 10
  91.  
  92. end
  93.  
  94. -------------------------------------------------------------------------------------------------------------------
  95. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  96. -------------------------------------------------------------------------------------------------------------------
  97.  
  98. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  99. function user_setup()
  100. state.OffenseMode:options('Normal', 'Acc')
  101. state.CastingMode:options('Normal', 'Seidr', 'Resistant')
  102. state.IdleMode:options('Normal', 'Volte', 'Reraise', 'Zendik','Refresh')
  103.  
  104. state.WeaponLock = M(false, 'Weapon Lock')
  105. state.MagicBurst = M(false, 'Magic Burst')
  106. state.StormSurge = M(false, 'Stormsurge')
  107.  
  108. info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder",
  109. "Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",}
  110. info.high_nukes = S{"Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
  111. "Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
  112. "Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V",}
  113.  
  114. -- Additional local binds
  115. -- include('Global-Binds.lua') -- OK to remove this line
  116. -- include('Global-GEO-Binds.lua') -- OK to remove this line
  117.  
  118. send_command('lua l gearinfo')
  119. -- send_command('lua l SCH-hud')
  120. send_command('bind ^` input /ja Immanence <me>')
  121. --send_command('bind !` gs c toggle MagicBurst')
  122. send_command('bind !p gs c toggle MagicBurst')
  123. send_command('bind ^L gs c scholar light')
  124. send_command('bind ^D gs c scholar dark')
  125. send_command('bind ^[ gs c scholar power')
  126. send_command('bind ^] gs c scholar accuracy')
  127. send_command('bind ^; gs c scholar speed')
  128. send_command('bind !w input /ma "Aspir II" <t>')
  129. send_command('bind !o input /ma "Regen V" <stpc>')
  130. send_command('bind ![ gs c scholar aoe')
  131. send_command('bind !] gs c scholar duration')
  132. send_command('bind !; gs c scholar cost')
  133. send_command('bind @c gs c toggle CP')
  134. send_command('bind @h gs c cycle HelixMode')
  135. send_command('bind @r gs c cycle RegenMode')
  136. send_command('bind @s gs c toggle StormSurge')
  137. send_command('bind @w gs c toggle WeaponLock')
  138.  
  139. send_command('bind ^numpad0 input /Myrkr')
  140.  
  141. -- include('Global-Binds.lua')
  142.  
  143. select_default_macro_book()
  144. set_lockstyle()
  145.  
  146. state.Auto_Kite = M(false, 'Auto_Kite')
  147. moving = false
  148. end
  149.  
  150. -- Called when this job file is unloaded (eg: job change)
  151. function user_unload()
  152. send_command('unbind ^`')
  153. -- send_command('unbind !`')
  154. send_command('unbind ^L')
  155. send_command('unbind ^D')
  156. send_command('unbind ^[')
  157. send_command('unbind ^]')
  158. send_command('unbind ^;')
  159. send_command('unbind !w')
  160. send_command('unbind !o')
  161. send_command('unbind !p')
  162. send_command('unbind ![')
  163. send_command('unbind !]')
  164. send_command('unbind !;')
  165. send_command('unbind ^,')
  166. send_command('unbind !.')
  167. send_command('unbind @c')
  168. send_command('unbind @h')
  169. send_command('unbind @g')
  170. send_command('unbind @s')
  171. send_command('unbind @w')
  172. send_command('unbind ^numpad0')
  173.  
  174. send_command('unbind #`')
  175. send_command('unbind #1')
  176. send_command('unbind #2')
  177. send_command('unbind #3')
  178. send_command('unbind #4')
  179. send_command('unbind #5')
  180. send_command('unbind #6')
  181. send_command('unbind #7')
  182. send_command('unbind #8')
  183. send_command('unbind #9')
  184. send_command('unbind #0')
  185. -- send_command('lua u SCH-hud')
  186. send_command('lua u gearinfo')
  187. end
  188.  
  189.  
  190.  
  191. -- Define sets and vars used by this job file.
  192. function init_gear_sets()
  193.  
  194. ------------------------------------------------------------------------------------------------
  195. ---------------------------------------- Precast Sets ------------------------------------------
  196. ------------------------------------------------------------------------------------------------
  197.  
  198. -- Precast sets to enhance JAs
  199. sets.precast.JA['Tabula Rasa'] = {legs="Peda. Pants +3"}
  200. sets.precast.JA['Focalization'] = {head="Peda. M.Board +3"}
  201. sets.precast.JA['Altruism'] = {head="Peda. M.Board +3"}
  202. sets.precast.JA['Enlightenment'] = {body="Peda. Gown +3"}
  203. sets.precast.JA['Sublimation'] = {
  204. head="Acad. Mortar. +3",
  205. body={ name="Peda. Gown +3", augments={'Enhances "Enlightenment" effect',}},
  206. waist="Embla Sash",
  207. }
  208.  
  209. -- Fast cast sets for spells
  210. sets.precast.FC = {
  211. main="Musa",
  212. head={ name="Vanya Hood", augments={'MP+50','"Fast Cast"+10','Haste+2%',}},
  213. body="Pinga Tunic",
  214. hands="Acad. Bracers +3",
  215. legs="Agwu's Slops",
  216. feet="Peda. Loafers +3",
  217. neck="Voltsurge Torque",
  218. waist="Embla Sash",
  219. left_ear="Malignance Earring",
  220. right_ear="Loquac. Earring",
  221. left_ring="Medada's Ring",
  222. right_ring="Kishar Ring",
  223. back="Fi Follet Cape +1",
  224. }
  225.  
  226. sets.precast.FC.Grimoire = {head="Peda. M.Board +3", feet="Acad. Loafers +2"}
  227. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  228. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {})
  229.  
  230. sets.precast.FC.Cure = set_combine(sets.precast.FC, {
  231. --feet="Kaykaus Boots +1", --7
  232. ear1="Mendi. Earring", --5
  233. --ring1="Lebeche Ring", --(2)
  234. waist="Witful Belt", --3/(3)
  235. })
  236.  
  237. sets.precast.FC.Curaga = sets.precast.FC.Cure
  238. sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty, body="Twilight Cloak"})
  239. sets.precast.FC.Dispelga = set_combine(sets.precast.FC, {main="Daybreak", sub="Ammurapi Shield"})
  240. sets.precast.Storm = set_combine(sets.precast.FC, {})--ring2={name="Stikini Ring +1", bag="wardrobe4"},
  241.  
  242.  
  243. ------------------------------------------------------------------------------------------------
  244. ------------------------------------- Weapon Skill Sets ----------------------------------------
  245. ------------------------------------------------------------------------------------------------
  246.  
  247. sets.precast.WS = {
  248. ammo="Amar Cluster",
  249. head="Jhakri Coronal +2",
  250. body="Nyame Mail",
  251. hands="Nyame Gauntlets",
  252. legs="Nyame flanchard",
  253. feet="Nyame sollerets",
  254. neck="Argute Stole +2",
  255. ear1="Moonshade Earring",
  256. ear2="Telos Earring",
  257. ring1="Epaminondas's Ring",
  258. ring2="Rufescent Ring",
  259. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}},
  260. waist="Fotia Belt",
  261. }
  262.  
  263. sets.precast.WS['Black Halo'] = {ammo="Oshasha's Treatise",
  264. head="Nyame Helm",
  265. body="Nyame Mail",
  266. hands="Nyame Gauntlets",
  267. legs="Nyame Flanchard",
  268. feet="Nyame Sollerets",
  269. neck="Rep. Plat. Medal",
  270. waist="Windbuffet Belt +1",
  271. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  272. right_ear="Balder Earring +1",
  273. left_ring="Epaminondas's Ring",
  274. right_ring="Metamor. Ring +1",
  275. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}}}
  276.  
  277. sets.precast.WS['Judgment'] = set_combine(sets.precast.WS['Black Halo'], {})
  278.  
  279.  
  280. sets.precast.WS['Shattersoul'] = {ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
  281. head="Nyame Helm",
  282. body="Nyame Mail",
  283. hands="Nyame Gauntlets",
  284. legs="Nyame Flanchard",
  285. feet="Nyame Sollerets",
  286. neck="Argute Stole +2",
  287. waist="Acuity Belt +1",
  288. left_ear="Regal Earring",
  289. right_ear="Malignance Earring",
  290. left_ring="Medada's Ring",
  291. right_ring="Metamor. Ring +1",
  292. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}},
  293. }
  294.  
  295. sets.precast.WS['Shell Crusher'] = sets.precast.WS['Shattersoul']
  296.  
  297. sets.precast.WS['Omniscience'] = {ammo="Pemphredo Tathlum",
  298. head="Pixie Hairpin +1",
  299. body="Nyame Mail",
  300. hands="Nyame Gauntlets",
  301. legs="Nyame Flanchard",
  302. -- feet="Nyame Sollerets",
  303. feet="Arbatel Loafers +3",
  304. neck="Baetyl Pendant",
  305. waist="Orpheus's Sash",
  306. left_ear="Malignance Earring",
  307. right_ear="Regal Earring",
  308. left_ring="Archon Ring",
  309. right_ring="Epaminondas's Ring",
  310. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}},
  311. }
  312.  
  313. sets.precast.WS['Flash Nova'] = {ammo="Sroda Tathlum",
  314. head="Nyame helm",
  315. body="Nyame Mail",
  316. --hands="Nyame Gauntlets",
  317. hands="Nyame Gauntlets",
  318. legs="Nyame flanchard",
  319. --feet="Nyame sollerets",
  320. feet="Arbatel Loafers +3",
  321. neck="Sanctity Necklace",
  322. waist="Orpheus's Sash",
  323. left_ear="Malignance Earring",
  324. right_ear="Regal Earring",
  325. left_ring="Medada's Ring",
  326. right_ring="Metamor. Ring +1",
  327. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}},
  328. }
  329.  
  330. sets.precast.WS['Starburst'] = sets.precast.WS['Flash Nova']
  331. sets.precast.WS['Earth Crusher'] = {ammo="Sroda Tathlum",
  332. head="Nyame Helm",
  333. body="Nyame Mail",
  334. hands="Nyame Gauntlets",
  335. legs="Nyame Flanchard",
  336. feet="Arbatel Loafers +3",
  337. -- feet={ name="Nyame Sollerets", augments={'Path: B',}},
  338. neck="Quanpur Necklace",
  339. waist="Orpheus's Sash",
  340. left_ear="Malignance Earring",
  341. right_ear="Regal Earring",
  342. left_ring="Epaminondas's Ring",
  343. right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  344. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}},
  345. }
  346.  
  347. sets.precast.WS['Myrkr'] = {ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
  348. head={ name="Amalric Coif +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  349. body={ name="Amalric Doublet +1", augments={'MP+80','"Mag.Atk.Bns."+25','"Fast Cast"+4',}},
  350. hands={ name="Kaykaus Cuffs +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  351. legs={ name="Amalric Slops +1", augments={'MP+80','"Mag.Atk.Bns."+25','Enmity-6',}},
  352. feet={ name="Amalric Nails +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  353. neck="Sanctity Necklace",
  354. waist="Luminary Sash",
  355. left_ear="Loquac. Earring",
  356. right_ear="Etiolation Earring",
  357. left_ring="Mephitas's Ring +1",
  358. right_ring="Mephitas's Ring",
  359. back="Fi Follet Cape +1",
  360. } -- Max MP
  361.  
  362. sets.precast.WS['Cataclysm'] = {ammo="Sroda Tathlum",
  363. head="Pixie Hairpin +1",
  364. body="Nyame Mail",
  365. hands="Nyame Gauntlets",
  366. legs="Nyame flanchard",
  367. -- feet="Nyame sollerets",
  368. feet="Arbatel Loafers +3",
  369. neck="Argute Stole +2",
  370. waist="Skrymir Cord",
  371. left_ear="Malignance Earring",
  372. right_ear="Regal Earring",
  373. left_ring="Archon Ring",
  374. right_ring="Freke Ring",
  375. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}},
  376. }
  377.  
  378. sets.precast.WS['Aeolian Edge'] = {
  379. ammo="Sroda Tathlum",
  380. head="Nyame Helm",
  381. body="Nyame Mail",
  382. hands="Nyame Gauntlets",
  383. legs="Nyame Flanchard",
  384. feet="Arbatel Loafers +3",
  385. neck="Argute Stole +2",
  386. waist="Orpheus's Sash",
  387. left_ear="Regal Earring",
  388. right_ear="Malignance Earring",
  389. left_ring="Epaminondas's Ring",
  390. right_ring="Freke Ring",
  391. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}},
  392. }
  393. ------------------------------------------------------------------------------------------------
  394. ---------------------------------------- Midcast Sets ------------------------------------------
  395. ------------------------------------------------------------------------------------------------
  396.  
  397. sets.midcast.FastRecast = sets.precast.FC
  398.  
  399. sets.midcast.Cure = {
  400. main="Daybreak",
  401. sub="Genmei Shield",
  402. ammo="Clarus Stone",
  403. head={ name="Kaykaus Mitra +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  404. body={ name="Kaykaus Bliaut +1", augments={'MP+80','"Cure" potency +6%','"Conserve MP"+7',}},
  405. hands={ name="Peda. Bracers +3", augments={'Enh. "Tranquility" and "Equanimity"',}},
  406. legs={ name="Kaykaus Tights +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  407. feet={ name="Kaykaus Boots +1", augments={'Mag. Acc.+20','"Cure" potency +6%','"Fast Cast"+4',}},
  408. neck="Incanter's Torque",
  409. waist="Luminary Sash",
  410. left_ear="Mendi. Earring",
  411. right_ear="Meili Earring",
  412. left_ring="Naji's Loop",
  413. right_ring="Mephitas's Ring +1",
  414. back={ name="Fi Follet Cape +1", augments={'Path: A',}},
  415. }
  416.  
  417. sets.midcast.CureWeather = set_combine(sets.midcast.Cure, {
  418. main="Chatoyant Staff", --10
  419. sub="Khonsu", --0/(-5)
  420. hands="Kaykaus Cuffs +1",
  421. waist="Hachirin-no-Obi",
  422. })
  423.  
  424. sets.CureArts = set_combine(sets.midcast.Cure, {
  425. body="Arbatel Gown +3",
  426. legs="Acad. Pants +3",
  427. feet="Acad. Loafers +2"})
  428.  
  429. sets.midcast.Curaga = set_combine(sets.midcast.Cure, {
  430. --neck="Nuna Gorget +1",
  431. left_ring="Stikini Ring +1",
  432. right_ring="Metamor. Ring +1",
  433. waist="Luminary Sash",
  434. })
  435.  
  436. sets.midcast['Healing Breeze'] = {
  437. main="Daybreak",
  438. sub="Ammurapi Shield",
  439. ammo="Esper Stone +1",
  440. head={ name="Kaykaus Mitra +1", augments={'MP+80','"Cure" spellcasting time -7%','Enmity-6',}},
  441. body={ name="Kaykaus Bliaut +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
  442. hands="Peda. Bracers +3",
  443. legs="Kaykaus Tights +1",
  444. feet="Kaykaus Boots +1",
  445. neck="Incanter's Torque",
  446. waist="Embla Sash",
  447. left_ear="Beatific Earring",
  448. right_ear="Meili Earring",
  449. left_ring="Lebeche Ring",
  450. right_ring="Menelaus's Ring",
  451. back={ name="Lugh's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','MND+10','Enmity-10','Phys. dmg. taken-10%',}},
  452. }
  453.  
  454. sets.midcast.StatusRemoval = {main={ name="Musa", augments={'Path: C',}},
  455. sub="Khonsu",
  456. ammo="Clarus Stone",
  457. head={ name="Vanya Hood", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
  458. body={ name="Vanya Robe", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
  459. hands={ name="Peda. Bracers +3", augments={'Enh. "Tranquility" and "Equanimity"',}},
  460. legs="Acad. Pants +3",
  461. feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
  462. neck={ name="Argute Stole +2", augments={'Path: A',}},
  463. waist="Embla Sash",
  464. left_ear="Malignance Earring",
  465. right_ear="Meili Earring",
  466. left_ring="Menelaus's Ring",
  467. right_ring="Stikini Ring +1",
  468. back={ name="Fi Follet Cape +1", augments={'Path: A',}}
  469. }
  470.  
  471. sets.midcast.Cursna = set_combine(sets.midcast.StatusRemoval, {
  472. main="Daybreak",
  473. sub="Ammurapi Shield",
  474. neck="Debilis Medallion",
  475. waist="Bishop's Sash",
  476. left_ear="Crep. Earring",
  477. right_ear="Meili Earring",
  478. right_ring="Haoma's Ring",
  479. back="Oretan. Cape +1",
  480. })
  481.  
  482. sets.midcast['Enhancing Magic'] = {
  483. main={ name="Musa", augments={'Path: C',}},
  484. sub="Khonsu",
  485. ammo="Staunch Tathlum",
  486. head={ name="Telchine Cap", augments={'"Conserve MP"+5','Enh. Mag. eff. dur. +10',}},
  487. body={ name="Peda. Gown +3", augments={'Enhances "Enlightenment" effect',}},
  488. hands={ name="Telchine Gloves", augments={'"Conserve MP"+5','Enh. Mag. eff. dur. +10',}},
  489. legs={ name="Telchine Braconi", augments={'"Conserve MP"+4','Enh. Mag. eff. dur. +10',}},
  490. feet={ name="Telchine Pigaches", augments={'"Conserve MP"+4','Enh. Mag. eff. dur. +10',}},
  491. neck="Incanter's Torque",
  492. waist="Olympus Sash",
  493. left_ear="Mimir Earring",
  494. right_ear="Andoaa Earring",
  495. left_ring="Stikini Ring +1",
  496. right_ring="Stikini Ring +1",
  497. back={ name="Fi Follet Cape +1", augments={'Path: A',}}
  498. }
  499.  
  500. sets.midcast.EnhancingDuration = set_combine(sets.midcast['Enhancing Magic'], {
  501. main="Musa",
  502. sub="Khonsu",
  503. head={ name="Telchine Cap", augments={'Enh. Mag. eff. dur. +10',}},
  504. body={ name="Peda. Gown +3", augments={'Enhances "Enlightenment" effect',}},
  505. hands={ name="Telchine Gloves", augments={'Enh. Mag. eff. dur. +10',}},
  506. legs={ name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}},
  507. feet={ name="Telchine Pigaches", augments={'Enh. Mag. eff. dur. +10',}},
  508. waist="Embla Sash"})
  509.  
  510. sets.midcast.Phalanx = sets.midcast.EnhancingDuration
  511.  
  512. sets.midcast.Regen = set_combine(sets.midcast['Enhancing Magic'], {head="Arbatel Bonnet +3",
  513. back={ name="Bookworm's Cape", augments={'INT+1','MND+3','"Regen" potency+10',}},
  514. })
  515.  
  516. sets.midcast.RegenDuration = set_combine(sets.midcast['Enhancing Magic'], {})
  517.  
  518. sets.midcast.Embrava = set_combine(sets.midcast['Enhancing Magic'], {
  519. main="Musa",
  520. sub="Khonsu",
  521. head={ name="Telchine Cap", augments={'Enh. Mag. eff. dur. +10',}},
  522. body={ name="Peda. Gown +3", augments={'Enhances "Enlightenment" effect',}},
  523. hands={ name="Telchine Gloves", augments={'Enh. Mag. eff. dur. +10',}},
  524. legs={ name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}},
  525. feet={ name="Telchine Pigaches", augments={'Enh. Mag. eff. dur. +10',}},
  526. waist="Embla Sash",
  527. })
  528.  
  529. sets.midcast.Haste = sets.midcast.EnhancingDuration
  530.  
  531. sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {
  532. head="Amalric Coif +1",
  533. waist="Gishdubar Sash",
  534. })
  535.  
  536. sets.midcast.Stoneskin = set_combine(sets.midcast.EnhancingDuration, {
  537. head="Umuthi hat",
  538. neck="Nodens Gorget",
  539. waist="Siegel Sash",
  540. legs="Shedir seraweels",
  541. })
  542.  
  543. sets.midcast.Aquaveil = set_combine(sets.midcast.EnhancingDuration, {
  544. main="Vadose Rod",
  545. sub="Ammurapi Shield",
  546. ammo="Staunch Tathlum +1",
  547. head="Amalric Coif +1",
  548. hands="Regal Cuffs",
  549. legs="Shedir seraweels",
  550. ring1="Freke Ring",
  551. waist="Emphatikos Rope",
  552. })
  553.  
  554. sets.midcast.Repose = {
  555. main="Contemplator +1",
  556. sub="Khonsu",
  557. ammo="Pemphredo Tathlum",
  558. head="Acad. Mortar. +3",
  559. body="Acad. Gown +3",
  560. hands="Regal Cuffs",
  561. legs="Acad. Pants +3",
  562. feet="Acad. Loafers +2",
  563. neck="Erra Pendant",
  564. waist="Obstinate Sash",
  565. left_ear="Malignance Earring",
  566. right_ear="Vor Earring",
  567. left_ring="Stikini Ring +1",
  568. right_ring="Metamor. Ring +1",
  569. back={ name="Lugh's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','MND+10','Enmity-10','Phys. dmg. taken-10%',}},
  570. }
  571.  
  572. sets.midcast.Barfire = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  573. sets.midcast.Barblizzard = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  574. sets.midcast.Baraero = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  575. sets.midcast.Barstone = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  576. sets.midcast.Barthunder = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  577. sets.midcast.Barwater = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  578. sets.midcast.Barsleep = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  579. sets.midcast.Barpoison = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  580. sets.midcast.Barparalyze = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  581. sets.midcast.Barblind = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  582. sets.midcast.Barsilence = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  583. sets.midcast.Barpetrify = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  584. sets.midcast.Barvirus = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  585. sets.midcast.Baramnesia = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  586. sets.midcast.Barfira = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  587. sets.midcast.Barblizzara = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  588. sets.midcast.Baraera = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  589. sets.midcast.Barstonra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  590. sets.midcast.Barthundra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  591. sets.midcast.Barwatera = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  592. sets.midcast.Barsleepra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  593. sets.midcast.Barpoisonra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  594. sets.midcast.Barparalyzra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  595. sets.midcast.Barblindra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  596. sets.midcast.Barsilencera = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  597. sets.midcast.Barpetra = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  598. sets.midcast.Barvira = set_combine(sets.midcast['Enhancing Magic'],{legs="Shedir seraweels"})
  599.  
  600. sets.midcast.Storm = set_combine(sets.midcast.EnhancingDuration, {feet="Peda. Loafers +3"})
  601.  
  602. sets.midcast.Stormsurge = set_combine(sets.midcast.EnhancingDuration, {feet="Peda. Loafers +3"})
  603.  
  604. sets.midcast.Protect = set_combine(sets.midcast.EnhancingDuration, {ring2="Sheltered Ring"})
  605. sets.midcast.Protectra = sets.midcast.Protect
  606. sets.midcast.Shell = sets.midcast.Protect
  607. sets.midcast.Shellra = sets.midcast.Shell
  608.  
  609. -- Custom spell classes
  610. sets.midcast.MndEnfeebles = {
  611. main="Daybreak",
  612. sub="Ammurapi Shield",
  613. ammo="Quartz Tathlum +1",
  614. head="Acad. Mortar. +3",
  615. body="Acad. Gown +3",
  616. hands="Peda. Bracers +3",
  617. legs="Arbatel Pants +3",
  618. feet="Acad. Loafers +2",
  619. neck="Erra Pendant",
  620. waist="Obstin. Sash",
  621. left_ear="Malignance Earring",
  622. right_ear="Crep. Earring",
  623. left_ring="Metamor. Ring +1",
  624. right_ring="Kishar Ring",
  625. back="Aurist's Cape +1"
  626. }
  627.  
  628. sets.midcast.IntEnfeebles = set_combine(sets.midcast.MndEnfeebles, {left_ring="Medada's Ring",
  629. waist="Acuity Belt +1",
  630. })
  631.  
  632. sets.midcast.ElementalEnfeeble = set_combine(sets.midcast['IntEnfeebles'], {main="Marin Staff +1",
  633. sub="Enki Strap",
  634. ammo="Ghastly Tathlum +1",
  635. ear2="Regal Earring",
  636. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Magic Damage +10','"Mag.Atk.Bns."+10','Mag. Evasion+15',}},
  637. waist="Acuity Belt +1",
  638. legs="Agwu's Slops"})
  639. sets.midcast.Dispelga = set_combine(sets.midcast.IntEnfeebles, {main="Daybreak", sub="Ammurapi Shield"})
  640.  
  641. sets.midcast['Dark Magic'] = {
  642. main="Rubicundity",
  643. sub="Ammurapi Shield",
  644. ammo="Pemphredo Tathlum",
  645. head="Acad. Mortar. +3",
  646. body="Acad. Gown +3",
  647. hands="Acad. Bracers +3",
  648. legs="Peda. Pants +3",
  649. feet="Acad. Loafers +2",
  650. neck="Incanter's Torque",
  651. ear1="Malignance Earring",
  652. ear2="Mani Earring",
  653. ring1="Stikini Ring +1",
  654. ring2="Stikini Ring +1",
  655. back="Perimede Cape",
  656. waist="Sacro cord",
  657. }
  658.  
  659. sets.midcast.Kaustra = {
  660. main="Bunzi's Rod",
  661. sub="Ammurapi Shield",
  662. ammo="Ghastly Tathlum +1",
  663. head="Pixie Hairpin +1",
  664. body={ name="Amalric Doublet +1", augments={'MP+80','"Mag.Atk.Bns."+25','"Fast Cast"+4',}},
  665. hands="Agwu's Gages", --(5)
  666. legs="Agwu's Slops", --6
  667. feet="Arbatel Loafers +3",
  668. neck="Baetyl Pendant",
  669. ear1="Malignance Earring",
  670. ear2="Regal Earring",
  671. ring1="Mujin Band",
  672. ring2="Archon Ring",
  673. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Magic Damage +10','"Mag.Atk.Bns."+10','Mag. Evasion+15',}},
  674. waist="Skrymir Cord",
  675. }
  676.  
  677. sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  678. head="Pixie Hairpin +1",
  679. ring1="Evanescence Ring",
  680. ring2="Archon Ring",
  681. waist="Fucho-no-obi",
  682. })
  683.  
  684. sets.midcast.Aspir = sets.midcast.Drain
  685.  
  686. sets.midcast.Stun = set_combine(sets.midcast['Dark Magic'], {
  687. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Magic Damage +10','"Mag.Atk.Bns."+10','Mag. Evasion+15',}},
  688. })
  689.  
  690. -- Elemental Magic
  691. sets.midcast['Elemental Magic'] = {
  692. main="Marin Staff +1",
  693. sub="Enki Strap",
  694. ammo="Ghastly Tathlum +1",
  695. head="Peda. M.Board +3",
  696. body="Arbatel Gown +3",
  697. hands="Arbatel Bracers +3",
  698. legs="Arbatel Pants +3",
  699. feet="Arbatel Loafers +3",
  700. neck="Argute Stole +2",
  701. waist="Acuity Belt +1",
  702. left_ear="Malignance Earring",
  703. right_ear="Regal Earring",
  704. left_ring="Medada's Ring",
  705. right_ring="Metamor. Ring +1",
  706. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Magic Damage +10','"Mag.Atk.Bns."+10','Mag. Evasion+15',}}
  707. }
  708.  
  709. sets.midcast['Elemental Magic'].Seidr = set_combine(sets.midcast['Elemental Magic'], {
  710. body="Seidr Cotehardie",
  711. legs="Peda. Pants +3",
  712. neck="Erra Pendant",
  713. })
  714.  
  715. sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {
  716. main="Marin Staff +1",
  717. sub="Enki Strap",
  718. legs="Peda. Pants +3",
  719. feet="Jhakri Pigaches +2",
  720. neck="Argute Stole +2",
  721. })
  722.  
  723. sets.midcast['Elemental Magic'].LowTierNuke = set_combine(sets.midcast['Elemental Magic'], {
  724. main="Marin Staff +1",
  725. sub="Enki Strap",
  726. ammo="Ghastly Tathlum +1",
  727. head="Agwu's Cap",
  728. body="Agwu's Robe",
  729. hands="Agwu's Gages",
  730. legs="Agwu's Slops",
  731. feet="Agwu's Pigaches",
  732. })
  733.  
  734. sets.midcast['Elemental Magic'].LowTierNuke.Seidr = set_combine(sets.midcast['Elemental Magic'].LowTierNuke, {
  735. body="Seidr Cotehardie",
  736. legs="Peda. Pants +3",
  737. neck="Erra Pendant",
  738. })
  739.  
  740. sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {})
  741.  
  742. sets.midcast['Elemental Magic'].HighTierNuke.Seidr = set_combine(sets.midcast['Elemental Magic'], {
  743. body="Seidr Cotehardie",
  744. legs="Peda. Pants +3",
  745. neck="Erra Pendant",
  746. })
  747.  
  748. --sets.midcast['Aero III'] = set_combine(sets.midcast['Elemental Magic'], {main="Marin Staff +1", sub="Enki Strap"})
  749. --sets.midcast['Aero IV'] = set_combine(sets.midcast['Elemental Magic'], {main="Marin Staff +1", sub="Enki Strap"})
  750. --sets.midcast['Aero V'] = set_combine(sets.midcast['Elemental Magic'], {main="Marin Staff +1", sub="Enki Strap"})
  751.  
  752. sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {
  753. head=empty,
  754. body="Twilight Cloak",
  755. ring2="Archon Ring",
  756. })
  757.  
  758. sets.midcast.Helix = set_combine(sets.midcast['Elemental Magic'], {
  759. main="Marin Staff +1",
  760. sub="Khonsu",
  761. waist="Acuity Belt +1",
  762. back={ name="Bookworm's Cape", augments={'INT+2','MND+3','Helix eff. dur. +20',}}
  763. })
  764.  
  765. sets.midcast.Anemohelix = set_combine(sets.midcast.Helix, {
  766. main="Marin Staff +1",
  767. sub="Enki Strap",
  768. ammo="Ghastly Tathlum +1",
  769. neck="Argute Stole +2",
  770. waist="Acuity Belt +1",
  771. back={ name="Bookworm's Cape", augments={'INT+2','MND+3','Helix eff. dur. +20',}}
  772. })
  773.  
  774. sets.midcast.DarkHelix = set_combine(sets.midcast.Helix, {
  775. head="Pixie Hairpin +1",
  776. ring2="Archon Ring",
  777. waist="Acuity Belt +1",
  778. back={ name="Bookworm's Cape", augments={'INT+2','MND+3','Helix eff. dur. +20',}}
  779. })
  780.  
  781. sets.midcast.LightHelix = set_combine(sets.midcast.Helix, {
  782. main="Daybreak",
  783. sub="Ammurapi Shield",
  784. waist="Acuity Belt +1",
  785. back={ name="Bookworm's Cape", augments={'INT+2','MND+3','Helix eff. dur. +20',}}
  786. })
  787.  
  788. sets.midcast.Holy = set_combine(sets.midcast['Elemental Magic'], {
  789. main="Daybreak",
  790. sub="Ammurapi Shield",
  791. waist="Acuity Belt +1"
  792. })
  793.  
  794. -- Initializes trusts at iLvl 119
  795. sets.midcast.Trust = sets.precast.FC
  796.  
  797.  
  798. ------------------------------------------------------------------------------------------------
  799. ----------------------------------------- Idle Sets --------------------------------------------
  800. ------------------------------------------------------------------------------------------------
  801.  
  802. sets.idle = {
  803. main="Daybreak",
  804. sub="Genmei Shield",
  805. ammo="Homiliary",
  806. head="Arbatel Bonnet +3",
  807. body="Arbatel Gown +3",
  808. hands="Nyame Gauntlets",
  809. legs="Arbatel Pants +3",
  810. feet="Herald's Gaiters",
  811. neck="Sibyl Scarf",
  812. waist="Null Belt",
  813. left_ear="Eabani Earring",
  814. right_ear="Lugalbanda Earring",
  815. left_ring="Stikini Ring +1",
  816. right_ring="Stikini Ring +1",
  817. back={ name="Lugh's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','MND+10','Enmity-10','Phys. dmg. taken-10%',}}
  818. }
  819. sets.idle.Volte = set_combine(sets.idle, {
  820. head="Volte Cap",
  821. hands="Volte Bracers",
  822. legs="Volte Hose",
  823. feet="Volte Boots",
  824. left_ring="Defending Ring",
  825. right_ring="Gelatinous Ring +1",})
  826.  
  827. sets.idle.Reraise = set_combine(sets.idle, {
  828. body="Annoint. Kalasiris",})
  829.  
  830. sets.idle.Zendik = set_combine(sets.idle, {
  831. body="Zendik Robe",})
  832.  
  833. sets.idle.Refresh = set_combine(sets.idle, {
  834. ammo="Homiliary",
  835. head="Volte Beret",
  836. hands="Volte Gloves",
  837. body="Arbatel Gown +3",
  838. neck="Sibyl Scarf",
  839. waist="Plat. Mog. Belt",
  840. left_ring="Stikini ring +1",
  841. right_ring="Stikini ring +1",
  842. legs="Volte Brais",
  843. feet="Volte Gaiters",})
  844.  
  845.  
  846. sets.idle.Town = sets.idle
  847.  
  848. sets.resting = sets.idle
  849.  
  850. ------------------------------------------------------------------------------------------------
  851. ---------------------------------------- Defense Sets ------------------------------------------
  852. ------------------------------------------------------------------------------------------------
  853.  
  854. sets.defense.PDT = sets.idle.DT
  855. sets.defense.MDT = sets.idle
  856. sets.Kiting = sets.idle
  857. sets.latent_refresh = {waist="Fucho-no-obi"}
  858.  
  859. ------------------------------------------------------------------------------------------------
  860. ---------------------------------------- Engaged Sets ------------------------------------------
  861. ------------------------------------------------------------------------------------------------
  862.  
  863. sets.engaged = {ammo="Amar Cluster",
  864. head={ name="Blistering Sallet +1", augments={'Path: A',}},
  865. body="Nyame Mail",
  866. hands="Nyame Gauntlets",
  867. legs="Nyame Flanchard",
  868. feet="Nyame Sollerets",
  869. neck="Sanctity Necklace",
  870. waist="Cetl Belt",
  871. left_ear="Brutal Earring",
  872. right_ear="Telos Earring",
  873. left_ring="Chirich Ring +1",
  874. right_ring="Chirich Ring +1",
  875. back={ name="Lugh's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  876. }
  877.  
  878. sets.engaged.Acc = {ammo="Amar Cluster",
  879. head={ name="Blistering Sallet +1", augments={'Path: A',}},
  880. body="Nyame Mail",
  881. hands="Gazu Bracelet +1",
  882. legs="Nyame Flanchard",
  883. feet="Nyame Sollerets",
  884. neck="Sanctity Necklace",
  885. waist="Cetl Belt",
  886. left_ear="Brutal Earring",
  887. right_ear="Telos Earring",
  888. left_ring="Chirich Ring +1",
  889. right_ring="Chirich Ring +1",
  890. back={ name="Lugh's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  891. }
  892.  
  893. ------------------------------------------------------------------------------------------------
  894. ---------------------------------------- Special Sets ------------------------------------------
  895. ------------------------------------------------------------------------------------------------
  896.  
  897. sets.magic_burst = set_combine(sets.midcast['Elemental Magic'], {
  898. head="Peda. M.Board +3",
  899. body="Agwu's Robe",
  900. hands="Agwu's Gages",
  901. feet="Arbatel Loafers +3",
  902. legs="Agwu's Slops",
  903. neck="Argute Stole +2"
  904. })
  905. sets.lumino_magic_burst= {
  906. main="Daybreak",
  907. sub="Ammurapi Shield",
  908. head="Peda. M.Board +3",
  909. body="Agwu's Robe",
  910. hands="Agwu's Gages",
  911. legs="Agwu's Slops",
  912. feet="Arbatel Loafers +3",
  913. neck="Argute Stole +2",
  914. }
  915.  
  916. sets.magic_burst_holy = {
  917. main="Daybreak",
  918. sub="Ammurapi Shield",
  919. ammo="Ghastly Tathlum +1",
  920. head="Peda. M.Board +3",
  921. body="Agwu's Robe",
  922. hands="Agwu's Gages",
  923. legs="Agwu's Slops",
  924. feet="Arbatel Loafers +3",
  925. neck="Argute Stole +2",
  926. waist="Sacro Cord",
  927. left_ear="Malignance Earring",
  928. right_ear="Regal Earring",
  929. left_ring="Medada's Ring",
  930. right_ring="Metamor. Ring +1",
  931. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Magic Damage +10','"Mag.Atk.Bns."+10','Mag. Evasion+15',}},
  932. }
  933.  
  934. sets.buff['Ebullience'] = {head="Arbatel Bonnet +3"}
  935. sets.buff['Rapture'] = {head="Arbatel Bonnet +3"}
  936. sets.buff['Perpetuance'] = {hands="Arbatel Bracers +3"}
  937. sets.buff['Immanence'] = {head="Nyame Helm",
  938. body="Nyame Mail",
  939. hands="Arbatel Bracers +3",
  940. neck="Warder's Charm +1",
  941. back={ name="Lugh's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Magic Damage +10','"Mag.Atk.Bns."+10','Mag. Evasion+15',}}}
  942. sets.buff['Penury'] = {legs="Arbatel Pants +3"}
  943. sets.buff['Parsimony'] = {legs="Arbatel Pants +3"}
  944. sets.buff['Celerity'] = {feet="Peda. Loafers +3"}
  945. sets.buff['Alacrity'] = {feet="Peda. Loafers +3"}
  946. sets.buff['Klimaform'] = {feet="Arbatel Loafers +3"}
  947. sets.buff['Focalization'] = {head="Peda. M.Board +3"}
  948.  
  949. sets.buff.FullSublimation = {
  950. --main="Siriti", --1
  951. main="Malignance Pole",
  952. --sub="Genmei Shield", --10/0
  953. sub="Khonsu",
  954. head="Acad. Mortar. +3", --4
  955. body="Peda. Gown +3", --5
  956. ear1="Savant's Earring", --1
  957. waist="Embla Sash", --5
  958. }
  959.  
  960. sets.buff.Doom = {
  961. waist="Gishdubar Sash", --10
  962. }
  963.  
  964. sets.LightArts = {legs="Acad. Pants +3", feet="Acad. Loafers +2"}
  965. sets.DarkArts = {body="Acad. Gown +3", feet="Acad. Loafers +2"}
  966.  
  967. sets.Obi = {waist="Hachirin-no-Obi"}
  968. sets.Bookworm = {back="Bookworm's Cape"}
  969. sets.CP = {back="Mecisto. Mantle"}
  970.  
  971. end
  972. -------------------------------------------------------------------------------------------------------------------
  973. -- Job-specific hooks for standard casting events.
  974. -------------------------------------------------------------------------------------------------------------------
  975.  
  976. function job_precast(spell, action, spellMap, eventArgs)
  977. if spell.name:startswith('Aspir') then
  978. refine_various_spells(spell, action, spellMap, eventArgs)
  979. end
  980. end
  981.  
  982. function job_post_precast(spell, action, spellMap, eventArgs)
  983. if (spell.type == "WhiteMagic" and (buffactive["Light Arts"] or buffactive["Addendum: White"])) or
  984. (spell.type == "BlackMagic" and (buffactive["Dark Arts"] or buffactive["Addendum: Black"])) then
  985. equip(sets.precast.FC.Grimoire)
  986. elseif spell.name == 'Impact' then
  987. equip(sets.precast.FC.Impact)
  988. end
  989. if elemental_ws:contains(spell.name) then
  990. -- Matching double weather (w/o day conflict).
  991. if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
  992. equip(sets.Obi)
  993. -- Target distance under 1.7 yalms.
  994. elseif spell.target.distance < (1.7 + spell.target.model_size) then
  995. equip({waist="Orpheus's Sash"})
  996. -- Matching day and weather.
  997. elseif spell.element == world.day_element and spell.element == world.weather_element then
  998. equip(sets.Obi)
  999. -- Target distance under 8 yalms.
  1000. elseif spell.target.distance < (8 + spell.target.model_size) then
  1001. equip({waist="Orpheus's Sash"})
  1002. -- Match day or weather.
  1003. elseif spell.element == world.day_element or spell.element == world.weather_element then
  1004. equip(sets.Obi)
  1005. end
  1006. end
  1007. end
  1008.  
  1009. -- Run after the general midcast() is done.
  1010. function job_post_midcast(spell, action, spellMap, eventArgs)
  1011. if spell.skill == 'Elemental Magic' then
  1012. if spellMap == "Helix" then
  1013. equip(sets.midcast['Elemental Magic'])
  1014. if spell.english:startswith('Lumino') then
  1015. equip(sets.midcast.LightHelix)
  1016. elseif spell.english:startswith('Nocto') then
  1017. equip(sets.midcast.DarkHelix)
  1018. elseif spell.english:startswith('Anemo') then
  1019. equip(sets.midcast.Anemohelix)
  1020. else
  1021. equip(sets.midcast.Helix)
  1022. end
  1023. if state.HelixMode.value == 'Duration' then
  1024. equip(sets.Bookworm)
  1025. end
  1026. end
  1027. if buffactive['Klimaform'] and spell.element == world.weather_element then
  1028. equip(sets.buff['Klimaform'])
  1029. end
  1030. end
  1031. if spell.action_type == 'Magic' then
  1032. apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
  1033. end
  1034. if spell.skill == 'Enfeebling Magic' then
  1035. if spell.type == "WhiteMagic" and (buffactive["Light Arts"] or buffactive["Addendum: White"]) then
  1036. equip(sets.LightArts)
  1037. elseif spell.type == "BlackMagic" and (buffactive["Dark Arts"] or buffactive["Addendum: Black"]) then
  1038. equip(sets.DarkArts)
  1039. end
  1040. end
  1041. if spell.skill == 'Healing Magic' and spell.english:startswith('Cure') or spell.english:startswith('Cura')then
  1042. if spell.type == "WhiteMagic" and (buffactive["Light Arts"] or buffactive["Addendum: White"]) then
  1043. equip(sets.CureArts)
  1044. end
  1045. end
  1046. if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
  1047. equip(sets.magic_burst)
  1048. if state.Buff.Ebullience and spell.english ~= 'Impact' then
  1049. equip(sets.buff['Ebullience'])
  1050. end
  1051. if spell.english == "Impact" then
  1052. equip(sets.midcast.Impact)
  1053. end
  1054. if spell.english == 'Holy' and state.MagicBurst.value then
  1055. equip(sets.magic_burst_holy)
  1056. -- if spell.english:startswith('Lumino') then
  1057. -- equip(sets.lumino_magic_burst)
  1058. -- end
  1059. end
  1060. end
  1061. if spell.skill == 'Elemental Magic' or spell.english == "Kaustra" then
  1062. if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) and not(spell.english:lower():find('helix')) then
  1063. equip(sets.Obi)
  1064. -- Target distance under 1.7 yalms.
  1065. elseif spell.target.distance < (1.7 + spell.target.model_size) then
  1066. equip({waist="Orpheus's Sash"})
  1067. -- Matching day and weather.
  1068. elseif spell.element == world.day_element and spell.element == world.weather_element and not(spell.english:lower():find('helix')) then
  1069. equip(sets.Obi)
  1070. -- Target distance under 8 yalms.
  1071. elseif spell.target.distance < (8 + spell.target.model_size) then
  1072. equip({waist="Orpheus's Sash"})
  1073. -- Match day or weather.
  1074. elseif spell.element == world.day_element and not(spell.english:lower():find('helix')) or spell.element == world.weather_element and not(spell.english:lower():find('helix')) then
  1075. equip(sets.Obi)
  1076. end
  1077. end
  1078. -- if spell.skill == 'Elemental Magic' or spell.english == "Kaustra" then
  1079. -- if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
  1080. -- equip(sets.Obi)
  1081. -- -- Target distance under 1.7 yalms.
  1082. -- elseif spell.target.distance < (1.7 + spell.target.model_size) then
  1083. -- equip({waist="Orpheus's Sash"})
  1084. -- -- Matching day and weather.
  1085. -- elseif spell.element == world.day_element and spell.element == world.weather_element then
  1086. -- equip(sets.Obi)
  1087. -- -- Target distance under 8 yalms.
  1088. -- elseif spell.target.distance < (8 + spell.target.model_size) then
  1089. -- equip({waist="Orpheus's Sash"})
  1090. -- -- Match day or weather.
  1091. -- elseif spell.element == world.day_element or spell.element == world.weather_element then
  1092. -- equip(sets.Obi)
  1093. -- end
  1094. -- end
  1095. if spell.skill == 'Enhancing Magic' then
  1096. if classes.NoSkillSpells:contains(spell.english) then
  1097. equip(sets.midcast.EnhancingDuration)
  1098. if spellMap == 'Refresh' then
  1099. equip(sets.midcast.Refresh)
  1100. end
  1101. end
  1102. if spellMap == "Regen" and state.RegenMode.value == 'Duration' then
  1103. equip(sets.midcast.RegenDuration)
  1104. end
  1105. if state.Buff.Perpetuance then
  1106. equip(sets.buff['Perpetuance'])
  1107. end
  1108. if state.Buff.Perpetuance and spell.english == 'Aquaveil' then
  1109. equip(sets.midcast.Aquaveil)
  1110. end
  1111. if spellMap == "Storm" and state.StormSurge.value then
  1112. equip (sets.midcast.Stormsurge)
  1113. end
  1114. end
  1115. end
  1116.  
  1117. function job_aftercast(spell, action, spellMap, eventArgs)
  1118. if not spell.interrupted then
  1119. if spell.english == "Sleep II" then
  1120. send_command('@timers c "Sleep II ['..spell.target.name..']" 90 down spells/00259.png')
  1121. elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
  1122. send_command('@timers c "Sleep ['..spell.target.name..']" 60 down spells/00253.png')
  1123. elseif spell.english == "Break" then
  1124. send_command('@timers c "Break ['..spell.target.name..']" 30 down spells/00255.png')
  1125. end
  1126. end
  1127. end
  1128.  
  1129.  
  1130. -------------------------------------------------------------------------------------------------------------------
  1131. -- Job-specific hooks for non-casting events.
  1132. -------------------------------------------------------------------------------------------------------------------
  1133.  
  1134. -- Called when a player gains or loses a buff.
  1135. -- buff == buff gained or lost
  1136. -- gain == true if the buff was gained, false if it was lost.
  1137. function job_buff_change(buff, gain)
  1138. if buff == "Sublimation: Activated" then
  1139. handle_equipping_gear(player.status)
  1140. end
  1141.  
  1142. if buff == "doom" then
  1143. if gain then
  1144. equip(sets.buff.Doom)
  1145. send_command('@input /p Doomed.')
  1146. disable('ring1','ring2','waist')
  1147. else
  1148. enable('ring1','ring2','waist')
  1149. handle_equipping_gear(player.status)
  1150. end
  1151. end
  1152.  
  1153. end
  1154.  
  1155. -- Handle notifications of general user state change.
  1156. function job_state_change(stateField, newValue, oldValue)
  1157. if state.WeaponLock.value == true then
  1158. disable('main','sub')
  1159. else
  1160. enable('main','sub')
  1161. end
  1162. end
  1163.  
  1164. -------------------------------------------------------------------------------------------------------------------
  1165. -- User code that supplements standard library decisions.
  1166. -------------------------------------------------------------------------------------------------------------------
  1167.  
  1168. function job_handle_equipping_gear(playerStatus, eventArgs)
  1169. check_rings()
  1170. check_moving()
  1171. end
  1172.  
  1173. -- Called by the 'update' self-command.
  1174. function job_update(cmdParams, eventArgs)
  1175. handle_equipping_gear(player.status)
  1176. update_active_strategems()
  1177. update_sublimation()
  1178. end
  1179.  
  1180. -- Custom spell mapping.
  1181. function job_get_spell_map(spell, default_spell_map)
  1182. if spell.action_type == 'Magic' then
  1183. if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  1184. if (world.weather_element == 'Light' or world.day_element == 'Light') then
  1185. return 'CureWeather'
  1186. end
  1187. elseif spell.skill == 'Enfeebling Magic' then
  1188. if spell.type == 'WhiteMagic' then
  1189. return 'MndEnfeebles'
  1190. else
  1191. return 'IntEnfeebles'
  1192. end
  1193. elseif spell.skill == 'Elemental Magic' then--ringo
  1194. if info.low_nukes:contains(spell.english) then--ringo
  1195. return 'LowTierNuke'--ringo
  1196. elseif info.high_nukes:contains(spell.english) then--ringo
  1197. return 'HighTierNuke'--ringo
  1198. end--ringo
  1199. end
  1200. end
  1201. end
  1202.  
  1203. function customize_idle_set(idleSet)
  1204. if state.Buff['Sublimation: Activated'] then
  1205. idleSet = set_combine(idleSet, sets.buff.FullSublimation)
  1206. end
  1207. if player.mpp < 51 then
  1208. idleSet = set_combine(idleSet, sets.latent_refresh)
  1209. end
  1210. if state.CP.current == 'on' then
  1211. equip(sets.CP)
  1212. disable('back')
  1213. else
  1214. enable('back')
  1215. end
  1216. if state.Auto_Kite.value == true then
  1217. idleSet = set_combine(idleSet, sets.Kiting)
  1218. end
  1219.  
  1220. return idleSet
  1221. end
  1222.  
  1223. -- Function to display the current relevant user state when doing an update.
  1224. -- Return true if display was handled, and you don't want the default info shown.
  1225. function display_current_job_state(eventArgs)
  1226.  
  1227. local c_msg = state.CastingMode.value
  1228.  
  1229. local h_msg = state.HelixMode.value
  1230.  
  1231. local r_msg = state.RegenMode.value
  1232.  
  1233. local d_msg = 'None'
  1234. if state.DefenseMode.value ~= 'None' then
  1235. d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
  1236. end
  1237.  
  1238. local i_msg = state.IdleMode.value
  1239.  
  1240. local msg = ''
  1241. if state.MagicBurst.value then
  1242. msg = ' Burst: On |'
  1243. end
  1244. if state.Kiting.value then
  1245. msg = msg .. ' Kiting: On |'
  1246. end
  1247.  
  1248. add_to_chat(060, '| Magic: ' ..string.char(31,001)..c_msg.. string.char(31,002).. ' |'
  1249. ..string.char(31,060).. ' Helix: ' ..string.char(31,001)..h_msg.. string.char(31,002).. ' |'
  1250. ..string.char(31,060).. ' Regen: ' ..string.char(31,001)..r_msg.. string.char(31,002).. ' |'
  1251. ..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002).. ' |'
  1252. ..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002).. ' |'
  1253. ..string.char(31,002)..msg)
  1254.  
  1255. eventArgs.handled = true
  1256. end
  1257.  
  1258. -------------------------------------------------------------------------------------------------------------------
  1259. -- User code that supplements self-commands.
  1260. -------------------------------------------------------------------------------------------------------------------
  1261.  
  1262. -- Called for direct player commands.
  1263. function job_self_command(cmdParams, eventArgs)
  1264. gearinfo(cmdParams, eventArgs)
  1265. if cmdParams[1]:lower() == 'scholar' then
  1266. handle_strategems(cmdParams)
  1267. eventArgs.handled = true
  1268. elseif cmdParams[1]:lower() == 'nuke' then
  1269. handle_nuking(cmdParams)
  1270. eventArgs.handled = true
  1271. end
  1272. end
  1273.  
  1274. -------------------------------------------------------------------------------------------------------------------
  1275. -- Utility functions specific to this job.
  1276. -------------------------------------------------------------------------------------------------------------------
  1277.  
  1278. function gearinfo(cmdParams, eventArgs)
  1279. if cmdParams[1] == 'gearinfo' then
  1280. if type(cmdParams[4]) == 'string' then
  1281. if cmdParams[4] == 'true' then
  1282. moving = true
  1283. elseif cmdParams[4] == 'false' then
  1284. moving = false
  1285. end
  1286. end
  1287. if not midaction() then
  1288. job_update()
  1289. end
  1290. end
  1291. end
  1292.  
  1293. -- Reset the state vars tracking strategems.
  1294. function update_active_strategems()
  1295. state.Buff['Ebullience'] = buffactive['Ebullience'] or false
  1296. state.Buff['Rapture'] = buffactive['Rapture'] or false
  1297. state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
  1298. state.Buff['Immanence'] = buffactive['Immanence'] or false
  1299. -- state.Buff['Penury'] = buffactive['Penury'] or false
  1300. -- state.Buff['Parsimony'] = buffactive['Parsimony'] or false
  1301. -- state.Buff['Celerity'] = buffactive['Celerity'] or false
  1302. -- state.Buff['Alacrity'] = buffactive['Alacrity'] or false
  1303. state.Buff['Focalization'] = buffactive['Focalization'] or false
  1304. state.Buff['Klimaform'] = buffactive['Klimaform'] or false
  1305. end
  1306.  
  1307. function update_sublimation()
  1308. state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  1309. end
  1310.  
  1311. -- Equip sets appropriate to the active buffs, relative to the spell being cast.
  1312. function apply_grimoire_bonuses(spell, action, spellMap)
  1313. if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
  1314. equip(sets.buff['Perpetuance'])
  1315. end
  1316. if state.Buff.Perpetuance and spell.english == 'Aquaveil' then
  1317. equip(sets.midcast.Aquaveil)
  1318. end
  1319. if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
  1320. equip(sets.buff['Rapture'])
  1321. end
  1322. if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
  1323. if state.Buff.Ebullience and spell.english ~= 'Impact' then
  1324. equip(sets.buff['Ebullience'])
  1325. end
  1326. if state.Buff.Immanence then
  1327. equip(sets.buff['Immanence'])
  1328. end
  1329. if state.Buff.Klimaform and spell.element == world.weather_element then
  1330. equip(sets.buff['Klimaform'])
  1331. end
  1332. end
  1333.  
  1334. -- if state.Buff.Penury then equip(sets.buff['Penury']) end
  1335. -- if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
  1336. -- if state.Buff.Celerity then equip(sets.buff['Celerity']) end
  1337. -- if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
  1338. if state.Buff.Focalization then equip(sets.buff['Focalization']) end
  1339. end
  1340.  
  1341.  
  1342. -- General handling of strategems in an Arts-agnostic way.
  1343. -- Format: gs c scholar <strategem>
  1344. function handle_strategems(cmdParams)
  1345. -- cmdParams[1] == 'scholar'
  1346. -- cmdParams[2] == strategem to use
  1347.  
  1348. if not cmdParams[2] then
  1349. add_to_chat(123,'Error: No strategem command given.')
  1350. return
  1351. end
  1352. local strategem = cmdParams[2]:lower()
  1353.  
  1354. if strategem == 'light' then
  1355. if buffactive['light arts'] then
  1356. send_command('input /ja "Addendum: White" <me>')
  1357. elseif buffactive['addendum: white'] then
  1358. add_to_chat(122,'Error: Addendum: White is already active.')
  1359. else
  1360. send_command('input /ja "Light Arts" <me>')
  1361. end
  1362. elseif strategem == 'dark' then
  1363. if buffactive['dark arts'] then
  1364. send_command('input /ja "Addendum: Black" <me>')
  1365. elseif buffactive['addendum: black'] then
  1366. add_to_chat(122,'Error: Addendum: Black is already active.')
  1367. else
  1368. send_command('input /ja "Dark Arts" <me>')
  1369. end
  1370. elseif buffactive['light arts'] or buffactive['addendum: white'] then
  1371. if strategem == 'cost' then
  1372. send_command('input /ja Penury <me>')
  1373. elseif strategem == 'speed' then
  1374. send_command('input /ja Celerity <me>')
  1375. elseif strategem == 'aoe' then
  1376. send_command('input /ja Accession <me>')
  1377. elseif strategem == 'power' then
  1378. send_command('input /ja Rapture <me>')
  1379. elseif strategem == 'duration' then
  1380. send_command('input /ja Perpetuance <me>')
  1381. elseif strategem == 'accuracy' then
  1382. send_command('input /ja Altruism <me>')
  1383. elseif strategem == 'enmity' then
  1384. send_command('input /ja Tranquility <me>')
  1385. elseif strategem == 'skillchain' then
  1386. add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
  1387. elseif strategem == 'addendum' then
  1388. send_command('input /ja "Addendum: White" <me>')
  1389. else
  1390. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  1391. end
  1392. elseif buffactive['dark arts'] or buffactive['addendum: black'] then
  1393. if strategem == 'cost' then
  1394. send_command('input /ja Parsimony <me>')
  1395. elseif strategem == 'speed' then
  1396. send_command('input /ja Alacrity <me>')
  1397. elseif strategem == 'aoe' then
  1398. send_command('input /ja Manifestation <me>')
  1399. elseif strategem == 'power' then
  1400. send_command('input /ja Ebullience <me>')
  1401. elseif strategem == 'duration' then
  1402. add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
  1403. elseif strategem == 'accuracy' then
  1404. send_command('input /ja Focalization <me>')
  1405. elseif strategem == 'enmity' then
  1406. send_command('input /ja Equanimity <me>')
  1407. elseif strategem == 'skillchain' then
  1408. send_command('input /ja Immanence <me>')
  1409. elseif strategem == 'addendum' then
  1410. send_command('input /ja "Addendum: Black" <me>')
  1411. else
  1412. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  1413. end
  1414. else
  1415. add_to_chat(123,'No arts has been activated yet.')
  1416. end
  1417. end
  1418.  
  1419.  
  1420. -- Gets the current number of available strategems based on the recast remaining
  1421. -- and the level of the sch.
  1422. function get_current_strategem_count()
  1423. -- returns recast in seconds.
  1424. local allRecasts = windower.ffxi.get_ability_recasts()
  1425. local stratsRecast = allRecasts[231]
  1426.  
  1427. local maxStrategems = (player.main_job_level + 10) / 20
  1428.  
  1429. local fullRechargeTime = 4*60
  1430.  
  1431. local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
  1432.  
  1433. return currentCharges
  1434. end
  1435.  
  1436. function refine_various_spells(spell, action, spellMap, eventArgs)
  1437. local newSpell = spell.english
  1438. local spell_recasts = windower.ffxi.get_spell_recasts()
  1439. local cancelling = 'All '..spell.english..' are on cooldown. Cancelling.'
  1440.  
  1441. local spell_index
  1442.  
  1443. if spell_recasts[spell.recast_id] > 0 then
  1444. if spell.name:startswith('Aspir') then
  1445. spell_index = table.find(degrade_array['Aspirs'],spell.name)
  1446. if spell_index > 1 then
  1447. newSpell = degrade_array['Aspirs'][spell_index - 1]
  1448. send_command('@input /ma '..newSpell..' '..tostring(spell.target.raw))
  1449. eventArgs.cancel = true
  1450. end
  1451. end
  1452. end
  1453. end
  1454.  
  1455. function check_moving()
  1456. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  1457. if state.Auto_Kite.value == false and moving then
  1458. state.Auto_Kite:set(true)
  1459. elseif state.Auto_Kite.value == true and moving == false then
  1460. state.Auto_Kite:set(false)
  1461. end
  1462. end
  1463. end
  1464.  
  1465. function check_rings()
  1466. rings = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  1467. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring"}
  1468.  
  1469. if rings:contains(player.equipment.left_ring) then
  1470. disable("left_ring")
  1471. else
  1472. enable("left_ring")
  1473. end
  1474.  
  1475. if rings:contains(player.equipment.right_ring) then
  1476. disable("right_ring")
  1477. else
  1478. enable("right_ring")
  1479. end
  1480. end
  1481.  
  1482. windower.register_event('zone change',
  1483. function()
  1484. if no_swap_gear:contains(player.equipment.left_ring) then
  1485. enable("ring1")
  1486. equip(sets.idle)
  1487. end
  1488. if no_swap_gear:contains(player.equipment.right_ring) then
  1489. enable("ring2")
  1490. equip(sets.idle)
  1491. end
  1492. if no_swap_gear:contains(player.equipment.waist) then
  1493. enable("waist")
  1494. equip(sets.idle)
  1495. end
  1496. end
  1497. )
  1498.  
  1499. -- Select default macro book on initial load or subjob change.
  1500. function select_default_macro_book()
  1501. set_macro_page(1, 3)
  1502. end
  1503.  
  1504. function set_lockstyle()
  1505. send_command('wait 2; input /lockstyleset ' .. lockstyleset)
  1506. end
  1507.  
Advertisement
Add Comment
Please, Sign In to add comment