Keya

Untitled

Feb 14th, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.68 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- Initialization function for this job file.
  6. function get_sets()
  7. mote_include_version = 2
  8.  
  9. -- Load and initialize the include file.
  10. include('Mote-Include.lua')
  11. end
  12.  
  13.  
  14. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  15. function job_setup()
  16.  
  17. end
  18.  
  19. -------------------------------------------------------------------------------------------------------------------
  20. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  21. -------------------------------------------------------------------------------------------------------------------
  22.  
  23. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  24. function user_setup()
  25. state.OffenseMode:options('None', 'Normal')
  26. state.CastingMode:options('Normal', 'Resistant', 'Proc')
  27. state.IdleMode:options('Normal', 'PDT')
  28.  
  29. state.MagicBurst = M(false, 'Magic Burst')
  30.  
  31. lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder',
  32. 'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II',
  33. 'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III',
  34. 'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
  35. 'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II'}
  36.  
  37.  
  38.  
  39. -- Additional local binds
  40. send_command('bind ^` input /ma Stun <t>')
  41. send_command('bind f10 gs c toggle MagicBurst')
  42.  
  43. select_default_macro_book()
  44. end
  45.  
  46. -- Called when this job file is unloaded (eg: job change)
  47. function user_unload()
  48. send_command('unbind ^`')
  49. send_command('unbind f10')
  50. end
  51.  
  52.  
  53. -- Define sets and vars used by this job file.
  54. function init_gear_sets()
  55. --------------------------------------
  56. -- Start defining the sets
  57. --------------------------------------
  58.  
  59. ---- Precast Sets ----
  60.  
  61. -- Precast sets to enhance JAs
  62. sets.precast.JA['Mana Wall'] = {feet="Goetia Sabots +2"}
  63.  
  64. sets.precast.JA.Manafont = {body="Sorcerer's Coat +2"}
  65.  
  66. -- equip to maximize HP and minimize MP loss before using convert
  67. sets.precast.JA.Convert = {ring1="Meridian Ring"}
  68.  
  69.  
  70. -- Fast cast sets for spells
  71.  
  72. sets.precast.FC = {ammo="Impatiens",
  73. head="Merlinic Hood",ear1="Enchanter Earring +1", ear2="Loquacious Earring",
  74. body="Shango Robe",ring1="Prolix Ring",Ring2="Weatherspoon ring",Feet="Chelona Boots",Neck="Voltsurge Torque",
  75. back="Swith Cape",waist="Witful Belt",legs="Orvail Pants +1"}
  76.  
  77. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  78.  
  79. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal"})
  80.  
  81. sets.precast.Stoneskin = set_combine(sets.precast.FC, {legs="Doyen Pants"})
  82.  
  83. sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris", legs="Doyen Pants", back="Disperser's Cape"})
  84.  
  85. sets.precast.FC.Curaga = sets.precast.FC.Cure
  86.  
  87. -- Weaponskill sets
  88. -- Default set for any weaponskill that isn't any more specifically defined
  89. sets.precast.WS = {
  90. head="Hagondes Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  91. body="Hagondes Coat",hands="Psycloth Manillas",ring1="Rajas Ring",ring2="Icesoul Ring",
  92. back="Aurist's Cape",waist="Cognition Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  93.  
  94. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  95. -- Myrkr - Sub in all your +MP gear
  96. sets.precast.WS['Myrkr'] = {ammo="Elis Tome",
  97. head="Kaabnax Hat",neck="Sanctity Necklace",ear1="Barkarole Earring",ear2="Etiolation Earring",
  98. body="Shango Robe",hands="Merlinic Dastanas",ring1="Sangoma Ring",ring2="Mephitas's Ring",
  99. back="Bane Cape",waist="Refoccilation Stone",legs="Merlinic Shalwar",feet="Inspirited Boots"}
  100.  
  101.  
  102. ---- Midcast Sets ----
  103.  
  104. sets.midcast.FastRecast = {
  105. head="Merlinic Hood",ear1="Enchanter Earring +1", ear2="Loquacious Earring",
  106. body="Shango Robe",ring1="Prolix Ring",Ring2="Weatherspoon ring",Feet="Chelona Boots",Neck="Voltsurge Torque",
  107. back="Swith Cape",waist="Witful Belt",legs="Orvail Pants +1"}
  108.  
  109. sets.midcast.Cure = {
  110. head="Merlinic Hood",neck="Colossus's Torque",ear2="Loquacious Earring",
  111. body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Ephedra Ring",ring2="Sirona's Ring",
  112. back="Pahtli Cape",waist=gear.ElementalObi,legs="Hagondes Pants",feet="Hagondes Sabots"}
  113.  
  114. sets.midcast.Curaga = sets.midcast.Cure
  115.  
  116. sets.midcast['Enhancing Magic'] = {
  117. neck="Incanter's Torque",
  118. body="",hands="",
  119. legs="Portent Pants"}
  120.  
  121. sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {feet="Inspirited Boots"})
  122.  
  123. sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
  124.  
  125. sets.midcast['Enfeebling Magic'] = {main="Lathi",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  126. head="Befouled Crown",neck="Incanter's Torque",ear1="Enchanter earring +1",ear2="Barkarole Earring",
  127. body="Shango robe",hands="Merlinic Dastanas",ring1="Weatherspoon Ring",ring2="Sangoma Ring",
  128. back="Kumbira Cape", waist="Eschan Stone", legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  129.  
  130. sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
  131.  
  132. sets.midcast['Dark Magic'] = {main="Lathi",
  133. head="Reraise hairpin",neck="Eddy Necklace",
  134. body="Almalric Doublet",hands="amalric Gages",ring1="Archon Ring",ring2="Mujin Band",
  135. back="", waist="Refoccilation stone", legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  136.  
  137. sets.midcast.Drain = {main="Lathi",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  138. head="Merlinic Hood",neck="Incantor's Torque",ear1="Enchanter earring +1",ear2="Barkarole Earring",
  139. body="Shango robe",hands="Amalric Gages",ring1="Weatherspoon Ring",ring2="Sangoma Ring",
  140. back="Bane Cape",waist="Eschan Stone",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  141.  
  142. sets.midcast.Aspir = sets.midcast.Drain
  143.  
  144. sets.midcast.Stun = {main="Lathi",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  145. head="Merlinic Hood",neck="Incanter's Torque",ear1="Enchanter earring +1",ear2="Barkarole Earring",
  146. body="Shango robe",hands="Amalric gages",ring1="Weatherspoon Ring",ring2="Sangoma Ring",
  147. back="Bane Cape", waist="Eschan Stone",legs="Orvail Pants +1",feet="Merlinic Crackows"}
  148.  
  149. sets.midcast.BardSong = {main="Lathi",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  150. head="Merlinic Hood",neck="Incanter's Torque",ear1="Enchanter earring +1",ear2="Barkarole Earring",
  151. body="Shango robe",hands="Amalric Gages",ring1="Weatherspoon Ring",ring2="Sangoma Ring",
  152. back="Kumbira Cape",legs="Merlinic Shalwar", waist="Eschan Stone",feet="Merlinic Crackows"}
  153.  
  154.  
  155. -- Elemental Magic sets
  156.  
  157. sets.midcast['Elemental Magic'] = {ammo="Ghastly Tathlum +1",
  158. head="Merlinic Hood",neck="Eddy Necklace",ear1="Barkarole Earring",ear2="Friomisi Earring",
  159. body="Spaekona's Coat +1", hands= "Amalric Gages",ring1="Resonance ring",ring2="Shiva ring +1",
  160. back="Toro Cape",waist="Hachirin-no-obi",legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+10%','MND+8','"Mag.Atk.Bns."+11',}},feet="Merlinic Crackows"}
  161.  
  162. sets.midcast['Elemental Magic'].Resistant = {main="Lathi",
  163. head="Merlinic Hood",neck="Incanter's Torque",ear1="Hermetic Earring",ear2="Friomisi Earring",
  164. body="Amalric Doublet",hands="Amalric Gages",ring1="Weatherspoon Ring",ring2="Shiva ring +1",
  165. back="Toro cape", waist="Eschan Stone", legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Mag. Acc.+13','"Mag.Atk.Bns."+14',}},feet="Merlinic Crackows"}
  166.  
  167. sets.magic_burst_death = {main="Lathi",
  168. head="Pixie Hairpin +1",neck="Eddy Necklace",
  169. body="Almalric Doublet",hands="amalric Gages",ring1="Archon Ring",ring2="Mujin Band",
  170. back="Seshaw Cape", waist="Refoccilation stone", legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  171.  
  172. -- Minimal damage gear for procs.
  173. sets.midcast['Elemental Magic'].Proc = {main="Terra's Staff", sub="Niobid Strap",ammo="Impatiens",
  174. head="Merlinic Hood",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  175. body="Manasa Chasuble",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  176. back="Swith Cape +1",waist="Witful Belt",legs="Assiduity pants",feet="Chelona Boots +1"}
  177.  
  178.  
  179.  
  180. -- Sets to return to when not performing an action.
  181.  
  182. -- Resting sets
  183. sets.resting = {
  184. head="Nefer Khat +1",neck="Grandiose Chain",
  185. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  186. waist="Austerity Belt",legs="Assiduity pants",feet="Serpentes Sabots"}
  187.  
  188.  
  189. -- Idle sets
  190.  
  191. -- Normal refresh idle set
  192. sets.idle = {
  193. head="Befouled Crown",neck="Dualism Collar +1",ear1="Laqquacious Earring",ear2="Barkarole Earring",
  194. body="Amalric Doublet",hands="Amalric gages",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  195. back="Bane Cape",waist="Fucho-no-obi",legs="Assiduity pants",feet="Conduit shoes +1"}
  196.  
  197.  
  198. -- Idle mode that keeps PDT gear on, but doesn't prevent normal gear swaps for precast/etc.
  199. sets.idle.PDT = {
  200. head="Befouled Crown",neck="Twilight Torque",ear1="Infused Earringg",ear2="Enchanter earring +1",
  201. body="Amalric Doublet",hands="Amalric gages",ring1="Defending Ring",ring2="Patricius Ring",
  202. back="Solemnity Cape",waist="",legs="Hagondes Pants +1",feet="Herald's Gaiter's"}
  203.  
  204. -- Idle mode scopes:
  205. -- Idle mode when weak.
  206. sets.idle.Weak = {
  207. head="Befouled Crown",neck="Twilight Torque",ear1="Infused Earring",ear2="Enchanter earring +1",
  208. body="Amalric Doublet",hands="Amalric gages",ring1="Defending Ring",ring2="",
  209. back="Umbra Cape",waist="",legs="Vanya Slops", feet="Hagondes Sabots"}
  210.  
  211. -- Town gear.
  212. sets.idle.Town = {
  213. head="Merlinic Dastanas",neck="Incanter's Torque",ear1="Barkarole Earring",ear2="",
  214. body="Amalric Doublet",hands="Amalric gages", back="Bane Cape",waist="Eschan Stone",
  215. legs="Merlinic Shalwar",feet="Heralds gater's"}
  216.  
  217. -- Defense sets
  218.  
  219. sets.defense.PDT = {head="Merlinic Hood",neck="Twilight Torque",
  220. body="Amalric Doublet",hands="Amalric gages",ring1="Defending Ring",ring2="Patricius Ring",
  221. back="Umbra Cape",waist="Hierarch Belt",legs="Hagondes Pants +1",feet="Merlinic Crackows"}
  222.  
  223. sets.defense.MDT = {
  224. head="Merlinic Hood",neck="Twilight Torque",
  225. body="Amalric Doublet",hands="Amalric gages",ring1="Defending Ring",ring2="Patricius Ring",
  226. back="Solemnity Cape",waist="Hierarch Belt",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  227.  
  228. sets.Kiting = {feet="Herald's Gaiters"}
  229.  
  230. sets.latent_refresh = {waist="Fucho-no-obi"}
  231.  
  232. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  233.  
  234. sets.buff['Mana Wall'] = {feet="Goetia Sabots +2"}
  235. sets.weather = {waist="Hachirin-no-obi",back="Twilight Cape"}
  236.  
  237. sets.magic_burst = {body="Amalric Doublet", legs={ name="Merlinic Shalwar", augments={'"Mag.Atk.Bns."+30','Magic burst mdg.+10%','INT+13',}},neck="Mizukage-no-Kubikazari",ring1="Mujin Band"}
  238.  
  239. -- Engaged sets
  240.  
  241. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  242. -- sets if more refined versions aren't defined.
  243. -- If you create a set with both offense and defense modes, the offense mode should be first.
  244. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  245.  
  246. -- Normal melee group
  247. sets.engaged = {
  248. head="",neck="",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  249. body="Ischemia Chasuble",hands="",ring1="Rajas Ring",ring2="Petrov Ring",
  250. back="",waist="Eschan Stone",legs="",feet=""}
  251. end
  252.  
  253. -------------------------------------------------------------------------------------------------------------------
  254. -- Job-specific hooks for standard casting events.
  255. -------------------------------------------------------------------------------------------------------------------
  256.  
  257. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  258. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  259. function job_precast(spell, action, spellMap, eventArgs)
  260. if spellMap == 'Cure' or spellMap == 'Curaga' then
  261. gear.default.obi_waist = "Goading Belt"
  262. elseif spell.skill == 'Elemental Magic' then
  263. gear.default.obi_waist = "Sekhmet Corset"
  264. if state.CastingMode.value == 'Proc' then
  265. classes.CustomClass = 'Proc'
  266. end
  267. end
  268. end
  269.  
  270.  
  271. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  272. function job_post_midcast(spell, action, spellMap, eventArgs)
  273. if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
  274. equip(sets.magic_burst)
  275. elseif spell.element == world.day_element or spell.element == world.weather_element then
  276. equip(sets.weather)
  277. end
  278.  
  279. if spell.english == 'Death' then
  280. equip(sets.midcast['Elemental Magic'])
  281. if state.MagicBurst.value then
  282. equip(sets.magic_burst_death)
  283. end
  284. end
  285. end
  286.  
  287.  
  288. function job_post_midcast(spell, action, spellMap, eventArgs)
  289. if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
  290. equip(sets.magic_burst)
  291. end
  292. end
  293.  
  294. function job_aftercast(spell, action, spellMap, eventArgs)
  295. -- Lock feet after using Mana Wall.
  296. if not spell.interrupted then
  297. if spell.english == 'Mana Wall' then
  298. enable('feet')
  299. equip(sets.buff['Mana Wall'])
  300. disable('feet')
  301. elseif spell.skill == 'Elemental Magic' then
  302. state.MagicBurst:reset()
  303. end
  304. end
  305. end
  306.  
  307. -------------------------------------------------------------------------------------------------------------------
  308. -- Job-specific hooks for non-casting events.
  309. -------------------------------------------------------------------------------------------------------------------
  310.  
  311. -- Called when a player gains or loses a buff.
  312. -- buff == buff gained or lost
  313. -- gain == true if the buff was gained, false if it was lost.
  314. function job_buff_change(buff, gain)
  315. -- Unlock feet when Mana Wall buff is lost.
  316. if buff == "Mana Wall" and not gain then
  317. enable('feet')
  318. handle_equipping_gear(player.status)
  319. end
  320. end
  321.  
  322. -- Handle notifications of general user state change.
  323. function job_state_change(stateField, newValue, oldValue)
  324. if stateField == 'Offense Mode' then
  325. if newValue == 'Normal' then
  326. disable('main','sub','range')
  327. else
  328. enable('main','sub','range')
  329. end
  330. end
  331. end
  332.  
  333.  
  334. -------------------------------------------------------------------------------------------------------------------
  335. -- User code that supplements standard library decisions.
  336. -------------------------------------------------------------------------------------------------------------------
  337.  
  338. -- Custom spell mapping.
  339. function job_get_spell_map(spell, default_spell_map)
  340. if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
  341. --[[ No real need to differentiate with current gear.
  342. if lowTierNukes:contains(spell.english) then
  343. return 'LowTierNuke'
  344. else
  345. return 'HighTierNuke'
  346. end
  347. --]]
  348. end
  349. end
  350.  
  351. -- Modify the default idle set after it was constructed.
  352. function customize_idle_set(idleSet)
  353. if player.mpp < 51 then
  354. idleSet = set_combine(idleSet, sets.latent_refresh)
  355. end
  356.  
  357. return idleSet
  358. end
  359.  
  360.  
  361. -- Function to display the current relevant user state when doing an update.
  362. function display_current_job_state(eventArgs)
  363. display_current_caster_state()
  364. eventArgs.handled = true
  365. end
  366.  
  367. -------------------------------------------------------------------------------------------------------------------
  368. -- Utility functions specific to this job.
  369. -------------------------------------------------------------------------------------------------------------------
  370.  
  371. -- Select default macro book on initial load or subjob change.
  372. function select_default_macro_book()
  373. set_macro_page(1, 1)
  374. end
Advertisement
Add Comment
Please, Sign In to add comment