Advertisement
Ballzack

WHM.lua

Apr 28th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.16 KB | None | 0 0
  1. -- Original: Motenten / Modified: Ballzack
  2.  
  3. -------------------------------------------------------------------------------------------------------------------
  4. -- Keybinds
  5. -------------------------------------------------------------------------------------------------------------------
  6.  
  7. -- Modes: [ F9 ] Cycle Offense Mode
  8. -- [ F10 ] Emergency -PDT Mode
  9. -- [ ALT+F10 ] Toggle Kiting Mode
  10. -- [ F11 ] Emergency -MDT Mode
  11. -- [ CTRL+F11 ] Cycle Casting Modes
  12. -- [ F12 ] Update Current Gear / Report Current Status
  13. -- [ CTRL+F12 ] Cycle Idle Modes
  14. -- [ ALT+F12 ] Cancel Emergency -PDT/-MDT Mode
  15. -- [ WIN+R ] Toggle Regen Mode
  16. -- [ WIN+C ] Toggle Capacity Points Mode
  17. --
  18. -- Abilities: [ CTRL+` ] Afflatus Solace
  19. -- [ ALT+` ] Afflatus Misery
  20. -- [ CTRL+[ ] Divine Seal
  21. -- [ CTRL+] ] Divine Caress
  22. -- [ CTRL+` ] Composure
  23. -- [ CTRL+- ] Light Arts/Addendum: White
  24. -- [ CTRL+= ] Dark Arts/Addendum: Black
  25. -- [ CTRL+; ] Celerity/Alacrity
  26. -- [ ALT+[ ] Accesion/Manifestation
  27. -- [ ALT+; ] Penury/Parsimony
  28. --
  29. -- Spells: [ ALT+O ] Regen IV
  30. --
  31. -- Weapons: [ CTRL+W ] Toggles Weapon Lock
  32. --
  33. -- WS: [ End ] Realmrazer
  34. -- [ Home ] Flash Nova
  35. -- [ Delete ] Mystic Boon
  36. -- [ @Home ] Black Halo
  37. -- [ @End ] Hexa Strike
  38. --
  39. --
  40.  
  41.  
  42. -------------------------------------------------------------------------------------------------------------------
  43. -- Setup functions for this job. Generally should not be modified.
  44. -------------------------------------------------------------------------------------------------------------------
  45.  
  46. -- Addendum Commands:
  47. -- Shorthand versions for each strategem type that uses the version appropriate for
  48. -- the current Arts.
  49. -- Light Arts Dark Arts
  50. -- ---------- ---------
  51. -- gs c scholar light Light Arts/Addendum
  52. -- gs c scholar dark Dark Arts/Addendum
  53. -- gs c scholar cost Penury Parsimony
  54. -- gs c scholar speed Celerity Alacrity
  55. -- gs c scholar aoe Accession Manifestation
  56. -- gs c scholar addendum Addendum: White Addendum: Black
  57.  
  58.  
  59. -------------------------------------------------------------------------------------------------------------------
  60. -- Setup functions for this job. Generally should not be modified.
  61. -------------------------------------------------------------------------------------------------------------------
  62.  
  63. -- Initialization function for this job file.
  64. function get_sets()
  65. mote_include_version = 2
  66.  
  67. -- Load and initialize the include file.
  68. include('Mote-Include.lua')
  69. end
  70.  
  71. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  72. function job_setup()
  73. state.Buff['Afflatus Solace'] = buffactive['Afflatus Solace'] or false
  74. state.Buff['Afflatus Misery'] = buffactive['Afflatus Misery'] or false
  75. state.RegenMode = M{['description']='Regen Mode', 'Duration', 'Potency'}
  76.  
  77. end
  78.  
  79. -------------------------------------------------------------------------------------------------------------------
  80. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  81. -------------------------------------------------------------------------------------------------------------------
  82.  
  83. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  84. function user_setup()
  85. state.OffenseMode:options('Normal', 'Acc')
  86. state.CastingMode:options('Normal', 'Resistant')
  87. state.IdleMode:options('Normal', 'DT', 'MEva')
  88.  
  89. state.WeaponLock = M(false, 'Weapon Lock')
  90. state.CP = M(false, "Capacity Points Mode")
  91.  
  92. send_command('bind ^` input /ja "Divine Seal" <me>')
  93. send_command('bind !` input /ja Devotion')
  94. send_command('bind @` input /ja Martyr')
  95. send_command('bind ^d input /ja "Divine Caress" <me>')
  96. send_command('bind ^s input /ja Sacrosanctity <me>')
  97. send_command('bind ^a input /ja Asylum <me>')
  98. send_command('bind ^b input /ja Benediction <me>')
  99.  
  100. send_command('bind !c gs c toggle CP')
  101. send_command('bind @r gs c cycle RegenMode')
  102.  
  103. send_command('bind @i input /ma Poisona')
  104. send_command('bind @p input /ma Paralyna')
  105. send_command('bind @b input /ma Blindna')
  106. send_command('bind @s input /ma Silena')
  107. send_command('bind @o input /ma Stona')
  108. send_command('bind @v input /ma Viruna')
  109. send_command('bind @c input /ma Cursna')
  110. send_command('bind @e input /ma Erase')
  111. send_command('bind @u input /ma Esuna <me>')
  112. send_command('bind @f input /ma Sacrifice')
  113.  
  114. send_command('bind @w gs c toggle WeaponLock')
  115. send_command('bind @home gs c warpring')
  116.  
  117. send_command('bind Home input /ws "Flash Nova" <t>')
  118. send_command('bind Delete input /ws "Mystic Boon" <t>')
  119. send_command('bind End input /ws "Realmrazer" <t>')
  120. send_command('bind @Delete input /ws "Black Halo" <t>')
  121. send_command('bind @End input /ws "Hexa Strike" <t>')
  122.  
  123. select_default_macro_book()
  124. set_lockstyle()
  125. end
  126.  
  127. function user_unload()
  128. send_command('unbind ^')
  129. send_command('unbind !`')
  130. send_command('unbind @`')
  131. send_command('unbind ^d')
  132. send_command('unbind ^s')
  133. send_command('unbind ^a')
  134. send_command('unbind ^b')
  135. send_command('unbind !c')
  136. send_command('unbind @r')
  137. send_command('unbind @i')
  138. send_command('unbind @p')
  139. send_command('unbind @b')
  140. send_command('unbind @s')
  141. send_command('unbind @o')
  142. send_command('unbind @v')
  143. send_command('unbind @c')
  144. send_command('unbind @e')
  145. send_command('unbind @u')
  146. send_command('unbind @f')
  147. send_command('unbind @w')
  148. send_command('unbind @home')
  149. send_command('unbind Home')
  150. send_command('unbind Delete')
  151. send_command('unbind End')
  152. send_command('unbind @Delete')
  153. send_command('unbind @End')
  154.  
  155. end
  156.  
  157. -- Define sets and vars used by this job file.
  158. function init_gear_sets()
  159. --------------------------------------
  160. -- Start defining the sets
  161. --------------------------------------
  162.  
  163. -- Precast Sets
  164.  
  165. -- Fastcast Sets --
  166. -- /SCH 3 - /RDM 15 --
  167. sets.precast.FC = {
  168. sub="Chanter's Shield", -- 3
  169. ammo="Incantor Stone", -- 2
  170. head="Nahtirah Hat", -- 10
  171. neck="Orunmila's Torque", -- 5
  172. ear1="Enchntr. Earring +1", -- 2
  173. ear2="Loquac. Earring", -- 2
  174. body="Inyanga Jubbah +2", -- 14
  175. hands="Fanatic Gloves", -- 7
  176. ring1="Kishar Ring", -- 4
  177. ring2="Prolix Ring", -- 2
  178. back="Alaunus's Cape", -- 10
  179. waist="Witful Belt", -- 3/(3)
  180. legs="Pinga Pants", -- 11
  181. feet="Regal Pumps +1"} -- 4(1~3%)
  182.  
  183. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {
  184. ammo="Impatiens",
  185. ring2="Lebeche Ring",
  186. waist="Siegel Sash"})
  187.  
  188. sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {
  189. legs="Ebers Pantaloons +1"})
  190.  
  191. sets.precast.FC.StatusRemoval = sets.precast.FC['Healing Magic']
  192.  
  193. sets.precast.FC.Cure = set_combine(sets.precast.FC['Healing Magic'], {
  194. main="Queller Rod",
  195. sub="Sors Shield",
  196. ammo="Hasty Pinion +1",
  197. ear1="Mendi. Earring",
  198. ear2="Nourish. Earring +1",
  199. ring2="Lebeche Ring",
  200. back="Perimede Cape",
  201. feet="Regal Pumps +1"})
  202.  
  203. sets.precast.FC.Curaga = sets.precast.FC.Cure
  204. sets.precast.FC.CureSolace = sets.precast.FC.Cure
  205. sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty, body="Twilight Cloak"})
  206.  
  207. -- Precast sets to enhance JAs
  208. --sets.precast.JA.Benediction = {}
  209.  
  210. -- Weaponskill sets
  211.  
  212. -- Default set for any weaponskill that isn't any more specifically defined
  213. sets.precast.WS = {}
  214.  
  215. sets.precast.WS['Black Halo'] = set_combine(sets.precast.WS, {})
  216. sets.precast.WS['Hexa Strike'] = set_combine(sets.precast.WS, {})
  217. sets.precast.WS['Flash Nova'] = set_combine(sets.precast.WS, {})
  218.  
  219. -- Midcast Sets --
  220.  
  221. sets.midcast.FC = {
  222. head="Piety Cap +1",
  223. ear1="Loquacious Earring",
  224. ear2="Etiolation Earring",
  225. body="Inyanga Jubbah +2",
  226. hands="Fanatic Gloves",
  227. ring1="Kishar Ring",
  228. back="Alaunus's Cape",
  229. waist="Witful Belt",
  230. legs="Ebers Pant. +1",
  231. feet="Regal Pumps +1"}
  232.  
  233. -- Cure Sets --
  234.  
  235. sets.midcast.CureSolace = {
  236. main="Queller Rod",
  237. sub="Sors Shield",
  238. ammo="Incantor Stone",
  239. head="Vanya Hood",
  240. neck="Nodens Gorget",
  241. ear1="Nourish. Earring +1",
  242. ear2="Glorious Earring",
  243. body="Ebers Bliaud +1",
  244. hands="Theophany Mitts +2",
  245. ring1="Kuchekula Ring",
  246. ring2="Lebeche Ring",
  247. back="Alaunus's Cape",
  248. waist="Ninurta's Sash",
  249. legs="Ebers Pant. +1",
  250. feet="Vanya Clogs"}
  251.  
  252. sets.midcast.CureSolaceWeather = set_combine(sets.midcast.CureSolace, {
  253. main="Chatoyant Staff",
  254. sub="Achaq Grip",
  255. ammo="Leisure Musk +1",
  256. back="Twilight Cape",
  257. waist="Hachirin-no-obi",
  258. feet="Piety Duckbills +1"})
  259.  
  260. sets.midcast.CureNormal = set_combine(sets.midcast.CureSolace, {
  261. ammo="Leisure Musk +1",
  262. neck="Orunmila's Torque",
  263. body="Theo. Briault +2",
  264. ring1="Kishar Ring",
  265. back="Tempered Cape +1"})
  266.  
  267. sets.midcast.CureWeather = set_combine(sets.midcast.Cure, {
  268. main="Chatoyant Staff",
  269. sub="Achaq Grip",
  270. back="Twilight Cape",
  271. waist="Hachirin-no-obi"})
  272.  
  273. sets.midcast.CuragaNormal = set_combine(sets.midcast.Cure, {
  274. ammo="Hydrocera",
  275. neck="Nuna Gorget +1",
  276. body="Theo. Briault +2",
  277. ring1="Levia. Ring +1",
  278. back="Alaunus's Cape",
  279. feet="Piety Duckbills +1"})
  280.  
  281. sets.midcast.CuragaWeather = set_combine(sets.midcast.Curaga,{
  282. main="Chatoyant Staff",
  283. sub="Enki Strap",
  284. ammo="Leisure Musk +1",
  285. neck="Phalaina Locket",
  286. ring1="Kuchekula Ring",
  287. back="Twilight Cape",
  288. waist="Hachirin-no-obi"})
  289.  
  290. --sets.midcast.CureMelee = sets.midcast.CureSolace
  291.  
  292. sets.midcast.StatusRemoval = {
  293. main="Yagrush",
  294. sub="Thuellaic Ecu +1",
  295. ammo="Hasty Pinion +1",
  296. head="Nahtirah Hat",
  297. neck="Orunmila's Torque",
  298. ear1="Loquac. Earring",
  299. ear2="Enchntr. Earring +1",
  300. body="Inyanga Jubbah +2",
  301. hands="Fanatic Gloves",
  302. ring1="Kishar Ring",
  303. ring2="Prolix Ring",
  304. back="Alaunus's Cape",
  305. waist="Witful Belt",
  306. legs="Pinga Pants",
  307. feet="Regal Pumps +1"}
  308.  
  309. sets.midcast.Cursna = set_combine(sets.midcast.StatusRemoval, {
  310. head="Ebers Cap +1",
  311. neck="Malison Medallion",
  312. ear1="Beatific Earring",
  313. ear2="Healing Earring",
  314. body="Ebers Bliaud +1",
  315. hands="Fanatic Gloves",
  316. ring1="Haoma's Ring",
  317. ring2="Haoma's Ring",
  318. back="Alaunus's Cape",
  319. waist="Bishop's Sash",
  320. legs="Th. Pantaloons +2",
  321. feet="Vanya Clogs"})
  322.  
  323. -- 110 total Enhancing Magic Skill; caps even without Light Arts
  324. sets.midcast['Enhancing Magic'] = {
  325. main="Gada",
  326. sub="Ammurapi Shield",
  327. head="Telchine Cap",
  328. neck="Incanter's Torque",
  329. ear1="Augment. Earring",
  330. ear2="Andoaa Earring",
  331. body="Telchine Chas.",
  332. hands="Dynasty Mitts",
  333. ring1="Stikini Ring",
  334. ring2="Stikini Ring",
  335. back="Fi Follet Cape +1",
  336. waist="Olympus Sash",
  337. legs="Telchine Braconi",
  338. feet="Theo. Duckbills +2"}
  339.  
  340. sets.midcast.EnhancingDuration = {
  341. main="Gada",
  342. sub="Ammurapi Shield",
  343. head="Telchine Cap",
  344. body="Telchine Chas.",
  345. hands="Telchine Gloves",
  346. legs="Telchine Braconi",
  347. feet="Telchine Pigaches"}
  348.  
  349. sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {
  350. main="Bolelabunga",
  351. head="Inyanga Tiara +2",
  352. body="Piety Briault +1",
  353. hands="Ebers Mitts +1",
  354. legs="Th. Pantaloons +2"})
  355.  
  356. sets.midcast.RegenDuration = set_combine(sets.midcast.EnhancingDuration, {
  357. hands="Ebers Mitts +1",
  358. legs="Th. Pantaloons +2"})
  359.  
  360. sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {waist="Gishdubar Sash"})
  361.  
  362. sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {
  363. neck="Nodens Gorget",
  364. ear1="Earthcry Earring",
  365. waist="Siegel Sash",
  366. legs="Haven Hose"})
  367.  
  368. sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {
  369. main="Vadose Rod",
  370. head="Chironic Hat"})
  371.  
  372. sets.midcast.Auspice = set_combine(sets.midcast['Enhancing Magic'], {feet="Ebers Duckbills +1"})
  373.  
  374. sets.midcast.BarElement = set_combine(sets.midcast['Enhancing Magic'], {
  375. main="Beneficus",
  376. ammo="Pemphredo Tathlum",
  377. head="Ebers Cap +1",
  378. neck="Incanter's Torque",
  379. body="Ebers Bliaud +1",
  380. hands="Ebers Mitts +1",
  381. ring2="Kishar Ring",
  382. waist="Ninurta's Sash",
  383. legs="Piety Pantaln. +1",
  384. feet="Ebers Duckbills +1"})
  385.  
  386. sets.midcast.BoostStat = set_combine(sets.midcast['Enhancing Magic'], {feet="Ebers Duckbills +1"})
  387.  
  388. sets.midcast.Protect = set_combine(sets.midcast.EnhancingDuration, {ring1="Sheltered Ring"})
  389. sets.midcast.Protectra = set_combine(sets.midcast.Protect,{feet="Piety Duckbills +1"})
  390. sets.midcast.Shell = sets.midcast.Protect
  391. sets.midcast.Shellra = set_combine(sets.midcast.Protect,{legs="Piety Pantaln. +1"})
  392.  
  393. sets.midcast['Divine Magic'] = {
  394. main="Grioavolr",
  395. sub="Enki Strap",
  396. ammo="Hydrocera",
  397. head="Befouled Crown",
  398. neck="Erra Pendant",
  399. ear1="Digni. Earring",
  400. ear2="Gwati Earring",
  401. body="Theo. Briault +2",
  402. hands="Inyan. Dastanas +2",
  403. ring1="Stikini Ring",
  404. ring2="Stikini Ring",
  405. back="Alaunus's Cape",
  406. waist="Luminary Sash",
  407. legs="Th. Pantaloons +2",
  408. feet="Theo. Duckbills +2"}
  409.  
  410. sets.midcast.Banish = set_combine(sets.midcast['Divine Magic'], {
  411. ammo="Pemphredo Tathlum",
  412. head="Chironic Hat",
  413. neck="Sanctity Necklace",
  414. ear1="Crematio Earring",
  415. ear2="Friomisi Earring",
  416. body="Chironic Doublet",
  417. hands="Chironic Gloves",
  418. ring1="Shiva Ring +1",
  419. ring2="Acumen Ring",
  420. back="Alaunus's Cape",
  421. waist="Refoccilation Stone",
  422. legs="Chironic Hose",
  423. feet="Chironic Slippers"})
  424.  
  425. sets.midcast.Holy = sets.midcast.Banish
  426.  
  427. sets.midcast['Dark Magic'] = {
  428. main="Grioavolr",
  429. sub="Enki Strap",
  430. ammo="Pemphredo Tathlum",
  431. head="Befouled Crown",
  432. neck="Erra Pendant",
  433. ear1="Digni. Earring",
  434. ear2="Gwati Earring",
  435. hands="Theophany Mitts +2",
  436. ring1="Evanescence Ring",
  437. ring2="Stikini Ring",
  438. back="Alaunus's Cape",
  439. waist="Yamabuki-no-Obi",
  440. legs="Chironic Hose",
  441. feet="Chironic Slippers"}
  442.  
  443. -- Custom spell classes
  444. sets.midcast.MndEnfeebles = {
  445. main="Grioavolr",
  446. sub="Enki Strap",
  447. ammo="Hydrocera",
  448. head="Chironic Hat",
  449. neck="Erra Pendant",
  450. ear1="Digni. Earring",
  451. ear2="Gwati Earring",
  452. body="Theo. Briault +2",
  453. hands="Inyan. Dastanas +2",
  454. ring1="Stikini Ring",
  455. ring2="Kishar Ring",
  456. back="Alaunus's Cape",
  457. waist="Luminary Sash",
  458. legs="Chironic Hose",
  459. feet="Theo. Duckbills +2"}
  460.  
  461. sets.midcast.IntEnfeebles = set_combine(sets.midcast.MndEnfeebles, {
  462. ammo="Pemphredo Tathlum",
  463. waist="Yamabuki-no-Obi"})
  464.  
  465. sets.midcast.Impact = {
  466. main="Grioavolr",
  467. sub="Enki Strap",
  468. head=empty,
  469. body="Twilight Cloak",
  470. hands="Inyan. Dastanas +2",
  471. ring2="Archon Ring",
  472. legs="Th. Pantaloons +2",
  473. feet="Theo. Duckbills +2"}
  474.  
  475. -- Initializes trusts at iLvl 119
  476. sets.midcast.Trust = sets.precast.FC
  477.  
  478. -- Sets to return to when not performing an action.
  479.  
  480. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  481. sets.idle = {
  482. main="Bolelabunga",
  483. sub="Genmei Shield",
  484. ammo="Homiliary",
  485. head="Befouled Crown",
  486. neck="Twilight Torque",
  487. ear1="Hearty Earring",
  488. ear2="Sanare Earring",
  489. body="Inyanga Jubbah +2",
  490. hands="Inyan. Dastanas +2",
  491. ring1="Vocane Ring",
  492. ring2="Defending Ring",
  493. back="Moonbeam Cape",
  494. waist="Slipor Sash",
  495. legs="Assid. Pants +1",
  496. feet="Herald's Gaiters"}
  497.  
  498. sets.idle.DT = set_combine(sets.idle, {
  499. main="Terra's Staff",
  500. sub="Mensch Strap +1",
  501. ammo="Staunch Tathlum",
  502. head="Inyanga Tiara +2",
  503. neck="Twilight Torque",
  504. ear1="Sanare Earring",
  505. ear2="Genmei Earring",
  506. body="Inyanga Jubbah +2",
  507. hands="Inyan. Dastanas +2",
  508. ring1="Shadow Ring",
  509. ring2="Defending Ring",
  510. back="Moonbeam Cape",
  511. waist="Slipor Sash",
  512. legs="Inyanga Shalwar +2",
  513. feet="Inyan. Crackows +2"})
  514.  
  515. sets.idle.MEva = set_combine(sets.idle.DT, {
  516. ear2="Hearty Earring",
  517. ring1="Inyanga Ring"})
  518.  
  519. sets.idle.Town = set_combine(sets.idle, {
  520. main="Yagrush",
  521. sub="Chanter's Shield",
  522. ammo="Homiliary",
  523. head="Inyanga Tiara +2",
  524. neck="Bathy Choker +1",
  525. ear1="Eabani Earring",
  526. ear2="Sanare Earring",
  527. body="Ayanmo Corazza +2",
  528. hands="Aya. Manopolas +2",
  529. ring1="Vocane Ring",
  530. ring2="Defending Ring",
  531. back="Moonbeam Cape",
  532. waist="Ninurta's Sash",
  533. legs="Aya. Cosciales +2",
  534. feet="Inyan. Crackows +2"})
  535.  
  536. sets.idle.Weak = sets.idle.DT
  537.  
  538. -- Defense Sets --
  539.  
  540. sets.defense.PDT = sets.idle.DT
  541. sets.defense.MDT = sets.idle.DT
  542.  
  543. sets.Kiting = {feet="Herald's Gaiters"}
  544.  
  545. sets.latent_refresh = {waist="Fucho-no-obi"}
  546.  
  547. -- Engaged Sets --
  548.  
  549. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  550. -- sets if more refined versions aren't defined.
  551. -- If you create a set with both offense and defense modes, the offense mode should be first.
  552. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  553.  
  554. -- Basic set for if no TP weapon is defined.
  555. sets.engaged = {
  556. main="Yagrush",
  557. sub="Thuellaic Ecu +1",
  558. ammo="",
  559. head="Aya. Zucchetto +2",
  560. neck="Lissome Necklace",
  561. ear1="Cessance Earring",
  562. ear2="Brutal Earring",
  563. body="Ayanmo Corazza +2",
  564. hands="Aya. Manopolas +2",
  565. ring1="Petrov Ring",
  566. ring2="Rajas Ring",
  567. back="",
  568. waist="Windbuffet Belt +1",
  569. legs="Aya. Cosciales +2",
  570. feet="Aya. Gambieras +1"}
  571.  
  572. sets.engaged.DW = set_combine(sets.engaged, {})
  573.  
  574. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  575. sets.buff['Divine Caress'] = {hands="Ebers Mitts +1", back="Mending Cape"}
  576. sets.buff['Devotion'] = {head="Piety Cap +1"}
  577.  
  578. sets.buff.Doom = {ring1="Saida Ring", ring2="Saida Ring", waist="Gishdubar Sash"}
  579.  
  580. sets.Obi = {waist="Hachirin-no-Obi"}
  581. sets.CP = {back="Mecisto. Mantle"}
  582.  
  583. end
  584.  
  585. -------------------------------------------------------------------------------------------------------------------
  586. -- Job-specific hooks for standard casting events.
  587. -------------------------------------------------------------------------------------------------------------------
  588.  
  589. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  590. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  591. function job_precast(spell, action, spellMap, eventArgs)
  592. if spell.english == "Paralyna" and buffactive.Paralyzed then
  593. -- no gear swaps if we're paralyzed, to avoid blinking while trying to remove it.
  594. eventArgs.handled = true
  595. end
  596. end
  597.  
  598. function job_post_precast(spell, action, spellMap, eventArgs)
  599. if spell.name == 'Impact' then
  600. equip(sets.precast.FC.Impact)
  601. end
  602. end
  603.  
  604. function job_post_midcast(spell, action, spellMap, eventArgs)
  605. -- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
  606. if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
  607. equip(sets.buff['Divine Caress'])
  608. end
  609. if spellMap == 'Banish' or spellMap == "Holy" then
  610. if (world.weather_element == 'Light' or world.day_element == 'Light') then
  611. equip(sets.Obi)
  612. end
  613. end
  614. if spell.skill == 'Enhancing Magic' then
  615. if classes.NoSkillSpells:contains(spell.english) then
  616. equip(sets.midcast.EnhancingDuration)
  617. if spellMap == 'Refresh' then
  618. equip(sets.midcast.Refresh)
  619. end
  620. end
  621. if spellMap == "Regen" and state.RegenMode.value == 'Duration' then
  622. equip(sets.midcast.RegenDuration)
  623. end
  624. end
  625. end
  626.  
  627. function job_aftercast(spell, action, spellMap, eventArgs)
  628. if not spell.interrupted then
  629. if spell.english == "Sleep II" then
  630. send_command('@timers c "Sleep II ['..spell.target.name..']" 90 down spells/00259.png')
  631. elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
  632. send_command('@timers c "Sleep ['..spell.target.name..']" 60 down spells/00253.png')
  633. elseif spell.english == "Repose" then
  634. send_command('@timers c "Repose ['..spell.target.name..']" 90 down spells/00098.png')
  635. end
  636. end
  637. end
  638.  
  639. -------------------------------------------------------------------------------------------------------------------
  640. -- Job-specific hooks for non-casting events.
  641. -------------------------------------------------------------------------------------------------------------------
  642.  
  643. function job_buff_change(buff,gain)
  644. if buff == "doom" then
  645. if gain then
  646. equip(sets.buff.Doom)
  647. disable('ring1','ring2','waist')
  648. else
  649. enable('ring1','ring2','waist')
  650. handle_equipping_gear(player.status)
  651. end
  652. end
  653.  
  654. end
  655.  
  656. -- Handle notifications of general user state change.
  657. function job_state_change(stateField, newValue, oldValue)
  658. if state.WeaponLock.value == true then
  659. disable('main','sub')
  660. else
  661. enable('main','sub')
  662. end
  663. end
  664.  
  665.  
  666. -------------------------------------------------------------------------------------------------------------------
  667. -- User code that supplements standard library decisions.
  668. -------------------------------------------------------------------------------------------------------------------
  669.  
  670. -- Called for direct player commands.
  671. function job_self_command(cmdParams, eventArgs)
  672. if cmdParams[1]:lower() == 'scholar' then
  673. handle_strategems(cmdParams)
  674. eventArgs.handled = true
  675. elseif cmdParams[1]:lower() == 'nuke' then
  676. handle_nuking(cmdParams)
  677. eventArgs.handled = true
  678. end
  679. command = cmdParams[1]:lower()
  680. if command == 'warpring' then
  681. equip({left_ring="Warp Ring"})
  682. send_command('gs disable left_ring;wait 10;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 10;gs enable left_ring')
  683. end
  684. end
  685.  
  686. -- Custom spell mapping.
  687. function job_get_spell_map(spell, default_spell_map)
  688. if spell.action_type == 'Magic' then
  689. -- if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') and player.status == 'Engaged' then
  690. -- return "CureMelee"
  691. if default_spell_map == 'Cure' then
  692. if buffactive['Afflatus Solace'] then
  693. if (world.weather_element == 'Light' or world.day_element == 'Light') then
  694. return "CureSolaceWeather"
  695. else
  696. return "CureSolace"
  697. end
  698. else
  699. if (world.weather_element == 'Light' or world.day_element == 'Light') then
  700. return "CureWeather"
  701. else
  702. return "CureNormal"
  703. end
  704. end
  705. elseif default_spell_map == 'Curaga' then
  706. if (world.weather_element == 'Light' or world.day_element == 'Light') then
  707. return "CuragaWeather"
  708. else
  709. return "CuragaNormal"
  710. end
  711. elseif spell.skill == "Enfeebling Magic" then
  712. if spell.type == "WhiteMagic" then
  713. return "MndEnfeebles"
  714. else
  715. return "IntEnfeebles"
  716. end
  717. end
  718. end
  719. end
  720.  
  721.  
  722. function customize_idle_set(idleSet)
  723. if player.mpp < 51 then
  724. idleSet = set_combine(idleSet, sets.latent_refresh)
  725. end
  726. if state.CP.current == 'on' then
  727. equip(sets.CP)
  728. disable('back')
  729. else
  730. enable('back')
  731. end
  732.  
  733. return idleSet
  734. end
  735.  
  736. -- Called by the 'update' self-command.
  737. function job_update(cmdParams, eventArgs)
  738. --[[if cmdParams[1] == 'user' and not areas.Cities:contains(world.area) then
  739. local needsArts =
  740. player.sub_job:lower() == 'sch' and
  741. not buffactive['Light Arts'] and
  742. not buffactive['Addendum: White'] and
  743. not buffactive['Dark Arts'] and
  744. not buffactive['Addendum: Black']
  745.  
  746. if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
  747. if needsArts then
  748. send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
  749. else
  750. send_command('@input /ja "Afflatus Solace" <me>')
  751. end
  752. end
  753. end--]]
  754. update_offense_mode()
  755. end
  756.  
  757.  
  758. -- Function to display the current relevant user state when doing an update.
  759. function display_current_job_state(eventArgs)
  760. eventArgs.handled = true
  761. local msg = ''
  762.  
  763. msg = msg .. 'Idle ['..state.IdleMode.value..'], Casting ['..state.CastingMode.value..']'
  764.  
  765. if state.DefenseMode.value ~= 'None' then
  766. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  767. end
  768.  
  769. add_to_chat(122, msg)
  770. end
  771.  
  772. -------------------------------------------------------------------------------------------------------------------
  773. -- Utility functions specific to this job.
  774. -------------------------------------------------------------------------------------------------------------------
  775.  
  776. -- General handling of strategems in an Arts-agnostic way.
  777. -- Format: gs c scholar <strategem>
  778. function handle_strategems(cmdParams)
  779. -- cmdParams[1] == 'scholar'
  780. -- cmdParams[2] == strategem to use
  781.  
  782. if not cmdParams[2] then
  783. add_to_chat(123,'Error: No strategem command given.')
  784. return
  785. end
  786. local strategem = cmdParams[2]:lower()
  787.  
  788. if strategem == 'light' then
  789. if buffactive['light arts'] then
  790. send_command('input /ja "Addendum: White" <me>')
  791. elseif buffactive['addendum: white'] then
  792. add_to_chat(122,'Error: Addendum: White is already active.')
  793. else
  794. send_command('input /ja "Light Arts" <me>')
  795. end
  796. elseif strategem == 'dark' then
  797. if buffactive['dark arts'] then
  798. send_command('input /ja "Addendum: Black" <me>')
  799. elseif buffactive['addendum: black'] then
  800. add_to_chat(122,'Error: Addendum: Black is already active.')
  801. else
  802. send_command('input /ja "Dark Arts" <me>')
  803. end
  804. elseif buffactive['light arts'] or buffactive['addendum: white'] then
  805. if strategem == 'cost' then
  806. send_command('input /ja Penury <me>')
  807. elseif strategem == 'speed' then
  808. send_command('input /ja Celerity <me>')
  809. elseif strategem == 'aoe' then
  810. send_command('input /ja Accession <me>')
  811. elseif strategem == 'addendum' then
  812. send_command('input /ja "Addendum: White" <me>')
  813. else
  814. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  815. end
  816. elseif buffactive['dark arts'] or buffactive['addendum: black'] then
  817. if strategem == 'cost' then
  818. send_command('input /ja Parsimony <me>')
  819. elseif strategem == 'speed' then
  820. send_command('input /ja Alacrity <me>')
  821. elseif strategem == 'aoe' then
  822. send_command('input /ja Manifestation <me>')
  823. elseif strategem == 'addendum' then
  824. send_command('input /ja "Addendum: Black" <me>')
  825. else
  826. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  827. end
  828. else
  829. add_to_chat(123,'No arts has been activated yet.')
  830. end
  831. end
  832.  
  833. function update_offense_mode()
  834. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  835. state.CombatForm:set('DW')
  836. else
  837. state.CombatForm:reset()
  838. end
  839. end
  840.  
  841. -- Select default macro book on initial load or subjob change.
  842. function select_default_macro_book()
  843. -- Default macro set/book
  844. set_macro_page(1, 1)
  845. end
  846.  
  847. function set_lockstyle()
  848. send_command('wait 2; input /lockstyleset 1')
  849. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement