Advertisement
Guest User

Untitled

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