Advertisement
Guest User

Untitled

a guest
May 3rd, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.49 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --Organizer
  6. include('organizer-lib')
  7.  
  8.  
  9. -- Initialization function for this job file.
  10. function get_sets()
  11. mote_include_version = 2
  12.  
  13. -- Load and initialize the include file.
  14. include('Mote-Include.lua')
  15. end
  16.  
  17.  
  18. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  19. function job_setup()
  20.  
  21. end
  22.  
  23. -------------------------------------------------------------------------------------------------------------------
  24. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  25. -------------------------------------------------------------------------------------------------------------------
  26.  
  27. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  28. function user_setup()
  29. state.OffenseMode:options('None', 'Normal')
  30. state.CastingMode:options('Normal')
  31. state.IdleMode:options('Normal','PDT', 'Death')
  32.  
  33. state.MagicBurst = M(false, 'Magic Burst')
  34. state.Death = M{['description'] = 'Death'}
  35.  
  36. -- Additional local binds
  37. send_command('bind ^` input /ma Stun <t>')
  38. send_command('bind !` input //gs c toggle MagicBurst')
  39. send_command('bind !p input /ja "Parsimony" <me>')
  40. send_command('bind !o input /ja "Alacrity" <me>')
  41. send_command('bind !k input /ma "Klimaform" <me>')
  42.  
  43. select_default_macro_book()
  44.  
  45. end
  46.  
  47. -- Called when this job file is unloaded (eg: job change)
  48. function user_unload()
  49. send_command('unbind ^`')
  50. send_command('unbind @`')
  51. end
  52.  
  53.  
  54. -- Define sets and vars used by this job file.
  55. function init_gear_sets()
  56. --------------------------------------
  57. -- Start defining the sets
  58. --------------------------------------
  59.  
  60. organizer_items = {
  61. spaekona="Spaekona's Coat +1", refo="Refoccilation Stone", trizek="Trizek Ring", apt="Aptitude Mantle", cap="Capacity Ring"}
  62.  
  63. ---- Precast Sets ----
  64.  
  65. -- Precast sets to enhance JAs
  66. sets.precast.JA['Mana Wall'] = {feet="Goetia Sabots +1"}
  67.  
  68. sets.precast.JA.Manafont = {body="Arch. Coat"}
  69.  
  70. -- equip to maximize HP (for Tarus) and minimize MP loss before using convert
  71. sets.precast.JA.Convert = {}
  72.  
  73.  
  74. -- Fast cast sets for spells
  75.  
  76. sets.precast.FC = {
  77. ammo="Impatiens",
  78. head="Amalric Coif", --10%--
  79. neck="Baetyl Pendant", --4%--
  80. ear1="Etiolation Earring", --1%--
  81. ear2="Loquacious Earring", --2%--
  82. body="Shango Robe", --8%--
  83. hands="Merlinic Dastanas", --6%--
  84. ring1="Prolix Ring", --2%--
  85. ring2="Weatherspoon Ring", --5%--
  86. back="Ogapepo Cape",
  87. waist="Witful Belt", --3%--
  88. legs="Psycloth Lappas", --7%--
  89. feet="Merlinic Crackows"} --5%--
  90.  
  91. sets.precast.Cure = {
  92. ammo="Impatiens",
  93. head="Amalric Coif", --10%--
  94. neck="",
  95. ear1="Etiolation Earring", --1%--
  96. ear2="Loquacious Earring", --2%--
  97. body="Shango Robe", --8%--
  98. hands="Merlinic Dastanas", --6%--
  99. ring1="Prolix Ring", --2%--
  100. ring2="",
  101. back="Ogapepo Cape",
  102. waist="Witful Belt", --3%--
  103. legs="Psycloth Lappas", --7%--
  104. feet="Merlinic Crackows"} --5%--
  105.  
  106.  
  107. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  108.  
  109. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {ear2="Barkaro. Earring"})
  110.  
  111. sets.precast.FC.Curaga = sets.precast.FC.Cure
  112.  
  113. -- Weaponskill sets
  114.  
  115. sets.precast.WS['Myrkr'] = {
  116. ammo="Ghastly Tathlum +1",
  117. head="Amalric Coif",
  118. neck="Sanctity Necklace",
  119. ear1="Etiolation Earring",
  120. ear2="Moonshade Earring",
  121. body="Amalric Doublet",
  122. hands="Otomi Gloves",
  123. ring1="Metamorph Ring",
  124. ring2="Mephitas's Ring +1",
  125. back="Bane Cape",
  126. waist="Shinjutsu-no-obi",
  127. legs="Amalric Slops",
  128. feet="Amalric Nails"}
  129.  
  130.  
  131. ---- Midcast Sets ----
  132.  
  133. sets.midcast.FastRecast = {
  134. ammo="",
  135. head="Amalric Coif",
  136. neck="",
  137. ear1="Etiolation Earring",
  138. ear2="Loquacious Earring",
  139. body="Shango Robe",
  140. hands="Merlinic Dastanas",
  141. ring1="Prolix Ring",
  142. ring2="Weatherspoon Ring",
  143. back="Bane Cape",
  144. waist="Witful Belt",
  145. legs="Psycloth Lappas",
  146. feet="Merlinic Crackows"}
  147.  
  148. sets.midcast.Cure = {main="",sub="",
  149. head="Vanya Hood", neck="Nodens Gorget", ear1="", ear2="Loquacious Earring",
  150. body="Vanya Robe", hands="Telchine Gloves", ring1="", ring2="",
  151. back="Pahtli Cape", waist="" , legs="", feet=""}
  152.  
  153. sets.midcast.Curaga = sets.midcast.Cure
  154.  
  155. sets.midcast['Enhancing Magic'] = {main="", sub="", ammo="",
  156. head="Befouled Crown", neck="Incanter's Torque", ear1="", ear2="",
  157. body="", hands="", ring1="", ring2="",
  158. back="",waist="",legs="",feet=""}
  159.  
  160. sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {neck="Nodens Gorget", waist="Siegel Sash"})
  161.  
  162. sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {waist="Gishdubar Sash"})
  163.  
  164. sets.midcast.Phalanx = {main="Lathi", sub="",ammo="",
  165. head="Befouled Crown",neck="Incanter's Torque",ear1="",ear2="",
  166. body="",hands="",ring1="",ring2="",
  167. back="",legs="", legs="", feet=""}
  168.  
  169.  
  170. sets.midcast['Enfeebling Magic'] = {main="Lathi", sub="Niobid Strap",ammo="Plumose Sachet",
  171. head="Befouled Crown",neck="Sanctity Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  172. body="Vanya Robe",hands="Amalric Gages",ring1="Adoulin Ring",ring2="Strendu Ring",
  173. back="Bane Cape",legs="Refoccilation Stone", legs="Psycloth Lappas", feet="Medium's Sabots"}
  174.  
  175. sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
  176.  
  177. sets.midcast['Dark Magic'] = {
  178. ammo="Plumose Sachet",
  179. head="Amalric Coif",
  180. neck="Incanter's Torque", --+10--
  181. ear1="Etiolation Earring",
  182. ear2="Loquacious Earring",
  183. body="Shango Robe", --+15--
  184. hands="Arch. Gloves",
  185. ring1="Prolix Ring",
  186. ring2="",
  187. back="Bane Cape", --+2--
  188. waist="Witful Belt",
  189. legs="Psycloth Lappas",
  190. feet="Merlinic Crackows"}
  191.  
  192. sets.midcast.Drain = {main="Lathi", sub="Niobid Strap", ammo="Ghastly Tathlum +1",
  193. head="Merlinic Hood", neck="Incanter's Torque", ear1="Friomisi Earring", ear2="Barkaro. Earring",
  194. body="Amalric Doublet", hands="Amalric Gages", ring1="Archon Ring", ring2="Evanescence Ring",
  195. back="Bane Cape",waist="Fucho-no-obi",legs="Amalric Slops",feet="Merlinic Crackows"}
  196.  
  197. sets.midcast.Aspir = sets.midcast.Drain
  198.  
  199. sets.midcast.Stun = {
  200. ammo="Plumose Sachet",
  201. head="Amalric Coif",
  202. neck="Incanter's Torque",
  203. ear1="Etiolation Earring",
  204. ear2="Loquacious Earring",
  205. body="Shango Robe",
  206. hands="Merlinic Dastanas",
  207. ring1="Prolix Ring",
  208. ring2="Adoulin Ring",
  209. back="Bane Cape",
  210. waist="Witful Belt",
  211. legs="Psycloth Lappas",
  212. feet="Merlinic Crackows"}
  213.  
  214. sets.midcast.BardSong = {}
  215.  
  216. -- Elemental Magic sets
  217.  
  218. sets.midcast['Elemental Magic'] = {
  219. main={ name="Lathi", augments={'INT+15','"Mag.Atk.Bns."+15','Mag. Acc.+15',}},
  220. sub="Niobid Strap",
  221. ammo="Ghastly Tathlum +1",
  222. head={ name="Merlinic Hood", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Magic burst mdg.+11%','INT+2','Mag. Acc.+1','"Mag.Atk.Bns."+12',}},
  223. body="Spaekona's Coat +1",
  224. --body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  225. hands="Amalric Gages",
  226. legs="Amalric Slops",
  227. feet="Amalric Nails",
  228. neck="Sanctity Necklace",
  229. waist="Refoccilation Stone" ,
  230. left_ear="Barkaro. Earring",
  231. right_ear="Friomisi Earring",
  232. ring1="Shiva Ring +1",
  233. ring2="Shiva Ring +1",
  234. back="Taranus's Cape"}
  235.  
  236. -- Magic Burst
  237. sets.magic_burst = {
  238. main={ name="Lathi", augments={'INT+15','"Mag.Atk.Bns."+15','Mag. Acc.+15',}},
  239. sub="Niobid Strap",
  240. ammo="Ghastly Tathlum +1",
  241. head={ name="Merlinic Hood", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Magic burst mdg.+11%','INT+2','Mag. Acc.+1','"Mag.Atk.Bns."+12',}},
  242. --body="Spaekona's Coat +1",
  243. body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  244. hands={ name="Amalric Gages", augments={'INT+10','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  245. legs={ name="Amalric Slops", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  246. feet={ name="Merlinic Crackows", augments={'Attack+17','Pet: DEX+4','Magic burst mdg.+12%','Mag. Acc.+13 "Mag.Atk.Bns."+13',}},
  247. neck="Mizu. Kubikazari",
  248. waist="Refoccilation Stone",
  249. left_ear="Barkaro. Earring",
  250. right_ear="Static Earring",
  251. left_ring="Mujin Band",
  252. right_ring="Shiva Ring +1",
  253. back="Taranus's Cape"}
  254.  
  255. --Hachirin-No-Obi
  256. sets.midcast.weather = {waist="Hachirin-No-Obi"}
  257.  
  258.  
  259. -------------------------------------------------------------------------------------------------------------------
  260. -- Death Stuff
  261. -------------------------------------------------------------------------------------------------------------------
  262.  
  263. sets.precast['Death'] = {main="Lathi", sub="Niobid Strap", ammo="Ghastly Tathlum +1",
  264. head="Amalric Coif", neck="", ear1="", ear2="",
  265. body="Shango Robe", hands="Otomi Gloves", ring1="Mephitas's Ring +1", ring2="Weatherspoon Ring",
  266. back="Bane Cape",waist="Witful Belt",legs="Psycloth Lappas",feet="Amalric Nails"}
  267.  
  268.  
  269. sets.midcast['Death'] = {main="Lathi", sub="Niobid Strap", ammo="Ghastly Tathlum +1",
  270. head="Merlinic Hood", neck="Mizu. Kubikazari", ear1="Barkaro. Earring", ear2="Static Earring",
  271. body="Amalric Doublet", hands="Amalric Gages", ring1="Mephitas's Ring +1", ring2="Archon Ring",
  272. back="Taranus's Cape",waist="Hachirin-No-Obi",legs="Amalric Slops",feet="Merlinic Crackows"}
  273.  
  274. sets.idle['Death']= {main="Lathi", sub="Niobid Strap", ammo="Ghastly Tathlum +1",
  275. head="Amalric Coif", neck="Twilight Torque", ear1="Barkaro. Earring", ear2="Etiolation Earring",
  276. body="Amalric Doublet", hands="Amalric Gages", ring1="Dark Ring", ring2="Defending Ring",
  277. back="Bane Cape",waist="Fucho-no-obi",legs="Amalric Slops",feet="Amalric Nails"}
  278.  
  279.  
  280.  
  281. -------------------------------------------------------------------------------------------------------------------
  282. -- Idle Sets
  283. -------------------------------------------------------------------------------------------------------------------
  284.  
  285. -- Resting sets
  286. sets.resting = {main="",ammo="",
  287. head="Orvail Corona +1",neck="Eidolon Pendant", ear1="", ear2="",
  288. body="Amalric Doublet",hands="Amalric Gages",ring1="Angha Ring",ring2="Paguroidea Ring",
  289. back="Felicitas Cape +1", waist="Austerity Belt +1",legs="Menhit Slacks",feet="Merlinic Crackows"}
  290.  
  291. sets.latent_refresh = {waist="Fucho-no-obi"}
  292.  
  293. sets.Kiting = {feet="Herald's Gaiters"}
  294.  
  295. -- Normal refresh idle set
  296. sets.idle =
  297. {main="Lathi",
  298. sub="Niobid Strap",
  299. ammo="Brigantia Pebble",
  300. head="Befouled Crown",
  301. neck="Wiglen Gorget", --6%--
  302. ear1="",
  303. ear2="",
  304. body="Hagondes Coat +1", --4%--
  305. hands="Hagondes Cuffs +1", --4%--
  306. ring1="Defending Ring", --3%--
  307. ring2="Dark Ring", --2%--
  308. back="Umbra Cape", --6%--
  309. waist="Fucho-no-obi",
  310. legs="Assid. Pants +1",
  311. feet="Herald's Gaiters"}
  312.  
  313. -- Idle mode that keeps PDT gear on, but doesn't prevent normal gear swaps for precast/etc.
  314. sets.idle.PDT = {
  315. ammo="Brigantia Pebble",
  316. head="Hagondes Hat +1", --3%--
  317. neck="Wiglen Gorget", --6%--
  318. ear1="",
  319. ear2="",
  320. body="Hagondes Coat +1", --4%--
  321. hands="Hagondes Cuffs +1", --4%--
  322. ring1="Defending Ring", --10%--
  323. ring2="Dark Ring", --3%--
  324. back="Umbra Cape", --6%--
  325. waist="",
  326. legs="Hagondes Pants +1", --3%--
  327. feet="Hag. Sabots +1"} --4%--
  328.  
  329. -- HighMP
  330. sets.idle.HighMP = {
  331. main="Nibiru Cudgel"}
  332.  
  333. -- Town gear.
  334. sets.idle.Town = set_combine(sets.idle, {body="Councilor's Garb", feet="Herald's Gaiters"})
  335.  
  336. -- Defense sets
  337.  
  338. sets.defense.PDT = {
  339. ammo="Brigantia Pebble",
  340. head="Hagondes Hat +1", --3%--
  341. neck="Wiglen Gorget", --5%--
  342. ear1="",
  343. ear2="",
  344. body="Hagondes Coat +1", --4%--
  345. hands="Hagondes Cuffs +1", --4%--
  346. ring1="Defending Ring", --3%--
  347. ring2="Dark Ring", --2%--
  348. back="Umbra Cape", --6%--
  349. waist="",
  350. legs="Hagondes Pants +1", --3%--
  351. feet="Hagondes Sabots +1"} --4%--
  352.  
  353. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  354.  
  355. sets.buff['Mana Wall'] = {feet="Goetia Sabots +1"}
  356.  
  357. -- Engaged sets
  358.  
  359. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  360. -- sets if more refined versions aren't defined.
  361. -- If you create a set with both offense and defense modes, the offense mode should be first.
  362. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  363.  
  364. -- Normal melee group
  365. sets.engaged = {main="", sub="",ammo="",
  366. head="",neck="",ear1="",ear2="",
  367. body="",hands="",ring1="",ring2="",
  368. back="",legs="", legs="", feet=""}
  369.  
  370. end
  371.  
  372. -------------------------------------------------------------------------------------------------------------------
  373. -- Job-specific hooks for standard casting events.
  374. -------------------------------------------------------------------------------------------------------------------
  375.  
  376. --Magic Burst & Hachirin-no-Obi Arguements
  377. function job_post_midcast(spell, action, spellMap, eventArgs)
  378. if spell.skill == 'Elemental Magic' then
  379. if state.MagicBurst.value then
  380. equip(sets.magic_burst)
  381. end
  382. if spell.element == world.day_element or spell.element == world.weather_element then
  383. equip({waist="Hachirin-No-Obi"})
  384. end
  385. end
  386. end
  387. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  388.  
  389. function job_aftercast(spell, action, spellMap, eventArgs)
  390. -- Lock feet after using Mana Wall.
  391. if not spell.interrupted then
  392. if spell.english == 'Mana Wall' then
  393. enable('feet')
  394. equip(sets.buff['Mana Wall'])
  395. disable('feet')
  396. elseif spell.skill == 'Elemental Magic' then
  397. --state.MagicBurst:reset()
  398. end
  399. end
  400. end
  401.  
  402. -------------------------------------------------------------------------------------------------------------------
  403. -- Spell Timers
  404. -------------------------------------------------------------------------------------------------------------------
  405.  
  406. function job_aftercast(spell)
  407. if spell.english == 'Sleep' or spell.english == 'Sleepga' then
  408. send_command('@wait 50;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
  409. elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
  410. send_command('@wait 80;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
  411. elseif spell.english == 'Break' or spell.english == 'Breakga' then
  412. send_command('@wait 20;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
  413. end
  414. end
  415.  
  416. -------------------------------------------------------------------------------------------------------------------
  417. -- Job-specific hooks for non-casting events.
  418. -------------------------------------------------------------------------------------------------------------------
  419.  
  420. -- Called when a player gains or loses a buff.
  421. -- buff == buff gained or lost
  422. -- gain == true if the buff was gained, false if it was lost.
  423. function job_buff_change(buff, gain)
  424. -- Unlock feet when Mana Wall buff is lost.
  425. if buff == "Mana Wall" and not gain then
  426. enable('feet')
  427. handle_equipping_gear(player.status)
  428. end
  429. end
  430.  
  431. -- Handle notifications of general user state change.
  432. function job_state_change(stateField, newValue, oldValue)
  433. if stateField == 'Offense Mode' then
  434. if newValue == 'Normal' then
  435. disable('main','sub','range')
  436. else
  437. enable('main','sub','range')
  438. end
  439. end
  440. end
  441.  
  442.  
  443. -------------------------------------------------------------------------------------------------------------------
  444. -- User code that supplements standard library decisions.
  445. -------------------------------------------------------------------------------------------------------------------
  446.  
  447. -- Custom spell mapping.
  448. function job_get_spell_map(spell, default_spell_map)
  449. if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
  450. --[[ No real need to differentiate with current gear.
  451. if lowTierNukes:contains(spell.english) then
  452. return 'LowTierNuke'
  453. else
  454. return 'HighTierNuke'
  455. end
  456. --]]
  457. end
  458. end
  459.  
  460. -- Modify the default idle set after it was constructed.
  461. function customize_idle_set(idleSet)
  462. if player.mpp < 51 then
  463. idleSet = set_combine(idleSet, sets.latent_refresh)
  464. end
  465.  
  466. return idleSet
  467. end
  468.  
  469.  
  470. -- Function to display the current relevant user state when doing an update.
  471. function display_current_job_state(eventArgs)
  472. display_current_caster_state()
  473. eventArgs.handled = true
  474. end
  475.  
  476. -------------------------------------------------------------------------------------------------------------------
  477. -- Utility functions specific to this job.
  478. -------------------------------------------------------------------------------------------------------------------
  479.  
  480. function refine_various_spells(spell, action, spellMap, eventArgs)
  481. aspirs = S{'Aspir','Aspir II','Aspir III'}
  482. sleeps = S{'Sleep','Sleep II'}
  483. sleepgas = S{'Sleepga','Sleepga II'}
  484.  
  485. if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) then
  486. return
  487. end
  488.  
  489. local newSpell = spell.english
  490. local spell_recasts = windower.ffxi.get_spell_recasts()
  491. local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
  492.  
  493. if spell_recasts[spell.recast_id] > 0 then
  494. if aspirs:contains(spell.english) then
  495. if spell.english == 'Aspir' then
  496. add_to_chat(122,cancelling)
  497. eventArgs.cancel = true
  498. return
  499. elseif spell.english == 'Aspir II' then
  500. newSpell = 'Aspir'
  501. elseif spell.english == 'Aspir III' then
  502. newSpell = 'Aspir II'
  503. end
  504. elseif sleeps:contains(spell.english) then
  505. if spell.english == 'Sleep' then
  506. add_to_chat(122,cancelling)
  507. eventArgs.cancel = true
  508. return
  509. elseif spell.english == 'Sleep II' then
  510. newSpell = 'Sleep'
  511. end
  512. elseif sleepgas:contains(spell.english) then
  513. if spell.english == 'Sleepga' then
  514. add_to_chat(122,cancelling)
  515. eventArgs.cancel = true
  516. return
  517. elseif spell.english == 'Sleepga II' then
  518. newSpell = 'Sleepga'
  519. end
  520. end
  521. end
  522.  
  523. if newSpell ~= spell.english then
  524. send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
  525. eventArgs.cancel = true
  526. return
  527. end
  528. end
  529.  
  530. -- Select default macro book on initial load or subjob change.
  531. function select_default_macro_book()
  532. set_macro_page(1, 15)
  533. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement