Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.45 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. include('organizer-lib.lua')
  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')
  26. state.CastingMode:options('Normal', 'MP', 'Death')
  27. state.IdleMode:options('Normal', 'Death')
  28.  
  29. state.MagicBurst:options('None','On')
  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. send_command('bind ^` input /ma Stun <t>')
  38. send_command('bind ^= input /ma Sleep II <stnpc>')
  39.  
  40. send_command('bind !f9 input /lockstyleset 13')
  41. send_command('bind f9 gs c cycle MagicBurst')
  42. send_command('bind F10 gs c cycle CastingMode')
  43. send_command('bind F11 gs c cycle IdleMode')
  44.  
  45. send_command('unbind ^f9')
  46. send_command('unbind ^f10')
  47. send_command('unbind !f10')
  48. send_command('unbind ^f11')
  49. send_command('unbind !f11')
  50. send_command('bind f12 gs c update user')
  51. send_command('bind !f12 gs c reset defense')
  52.  
  53. gear.MpAmalric = {name="Amalric Gages", augments={'MP+60','INT+10','Enmity-5',}}
  54. gear.DmgAmalric = {name="Amalric Gages", augments={'INT+10','Mag. Acc.+15','"Mag.Atk.Bns."+15',}}
  55.  
  56.  
  57. gear.FCHead = { name="Merlinic Hood", augments={'"Mag.Atk.Bns."+9','"Fast Cast"+7','Mag. Acc.+12',}}
  58. gear.FCHands = {name="Merlinic Dastanas", augments={'Mag. Acc.+5','"Fast Cast"+6',}}
  59. gear.FCFeet = { name="Merlinic Crackows", augments={'Accuracy+20','"Fast Cast"+7','MND+9','Mag. Acc.+6','"Mag.Atk.Bns."+12',}}
  60.  
  61.  
  62. gear.DMGHead = {name="Merlinic Hood", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Magic burst mdg.+10%','CHR+6',}}
  63. gear.DMGLegs = {name="Merlinic Shalwar", augments={'"Mag.Atk.Bns."+26','Magic burst mdg.+8%','INT+8','Mag. Acc.+11',}}
  64. gear.DMGFeet = {name="Merlinic Crackows", augments={'Mag. Acc.+12 "Mag.Atk.Bns."+12','Magic burst mdg.+8%','CHR+9','"Mag.Atk.Bns."+14',}}
  65.  
  66.  
  67. gear.ASHands = {name="Merlinic Dastanas", augments={'"Drain" and "Aspir" potency +11','"Mag.Atk.Bns."+9',}}
  68. gear.ASLegs = {name="Merlinic Shalwar", augments={'"Drain" and "Aspir" potency +9','STR+8','Mag. Acc.+10','"Mag.Atk.Bns."+11',}}
  69. gear.ASFeet = {name="Merlinic Crackows", augments={'Mag. Acc.+4','"Drain" and "Aspir" potency +9','"Mag.Atk.Bns."+10',}}
  70.  
  71.  
  72.  
  73.  
  74. select_default_macro_book()
  75. end
  76. -- Called when this job file is unloaded (eg: job change)
  77. function user_unload()
  78. send_command('unbind ^`')
  79. send_command('unbind @`')
  80. end
  81.  
  82.  
  83. -- Define sets and vars used by this job file.
  84. function init_gear_sets()
  85. --------------------------------------
  86. -- Start defining the sets
  87. --------------------------------------
  88.  
  89.  
  90. ---- Precast Sets ----
  91.  
  92. -- Precast sets to enhance JAs
  93. sets.precast.JA['Mana Wall'] = {feet="Wicce sabots +1"}
  94.  
  95. sets.precast.JA.Manafont = {}
  96.  
  97. -- equip to maximize HP (for Tarus) and minimize MP loss before using convert
  98. sets.precast.JA.Convert = {}
  99.  
  100.  
  101. -- Fast cast sets for spells
  102. sets.precast.FC = {ammo="Impatiens",neck="Orunmila's Torque",
  103. head=gear.FCHead,ear1="Loquacious Earring",ear2="Etiolation Earring",
  104. body="Dalmatica +1",hangs=gear.FCHands,ring1="Prolix Ring",ring2="Lebeche Ring",
  105. back="Perimede Cape",waist="Witful Belt",legs="Psycloth Lappas",feet=gear.FCFeet}
  106.  
  107. sets.precast.FC['Elemental Magic'] = {ammo="Pemphredo Tathlum",neck="Orunmila's Torque",
  108. head=gear.FCHead,ear1="Loquacious Earring",ear2="Etiolation Earring",
  109. body="Anhur Robe",hands=gear.FCHands,ring1="Prolix Ring",ring2="",
  110. back="Swith Cape +1",waist="Channeler's Stone",legs="Psycloth Lappas",feet=gear.FCFeet}
  111.  
  112. sets.precast.FC['Death'] = {main="Lathi",sub="Niobid Strap",ammo="Strobilus",
  113. head="Pixie Hairpin +1",neck="Mizu. Kubikazari",ear1="Influx Earring",ear2="Etiolation Earring",
  114. body="Merlinic Jubbah",hands=gear.MpAmalric,ring1="Locus Ring",ring2="Mephitas's Ring +1",
  115. back="twilight cape",waist="Anrin Obi",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris", back="Pahtli Cape"})
  125.  
  126. sets.precast.FC.Curaga = sets.precast.FC.Cure
  127.  
  128. -- Weaponskill sets
  129. -- Default set for any weaponskill that isn't any more specifically defined
  130. sets.precast.WS = {}
  131.  
  132. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  133. sets.precast.WS['Myrkr'] = {main="Lathi",sub="Niobid Strap",ammo="Strobilus",
  134. head="Pixie Hairpin +1",neck="Orunmila's Torque",ear1="Influx Earring",ear2="Etiolation Earring",
  135. body="Merlinic Jubbah",hands=gear.MpAmalric,ring1="Mephitas's Ring",ring2="Mephitas's Ring +1",
  136. back="twilight cape",waist="Mujin Obi",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  137.  
  138.  
  139. ---- Midcast Sets ----
  140.  
  141. sets.midcast.FastRecast = {
  142. head=gear.FCHead,ear1="Loquacious Earring",ear2="Etiolation Earring",
  143. body="Dalmatica +1",hands=gear.FCHands,ring1="Prolix Ring",ring2="Lebeche Ring",
  144. back="Swith Cape +1",waist="Witful Belt",legs="Psycloth Lappas",feet=gear.FCFeet}
  145.  
  146. sets.midcast.Cure = {
  147. head="Vanya Hood",neck="Incanter's Torque",ear1="Loquacious Earring",ear2="Etiolation Earring",
  148. body="Heka's Kalasiris",hands="",ring1="Ephedra Ring",ring2="Sirona's Ring",feet="Vanya Clogs",
  149. back="Pahtli Cape"}
  150.  
  151. sets.midcast.Random = {waist="Refoccilation Stone"}
  152.  
  153. sets.midcast.Curaga = sets.midcast.Cure
  154.  
  155.  
  156.  
  157. sets.midcast.Haste = set_combine(sets.midcast['Enhancing Magic'], {
  158. hands="telchine gloves",
  159. head="Telchine Cap",body="Telchine Chas.",
  160. legs="Telchine Braconi",feet="Telchine Pigaches"})
  161.  
  162. sets.midcast.Storm = {main="Lathi",sub="Niobid Strap",ammo="Strobilus",
  163. head="Pixie Hairpin +1",neck="Mizu. Kubikazari",ear1="Influx Earring",ear2="Etiolation Earring",
  164. body="Merlinic Jubbah",hands=gear.MpAmalric,ring1="Locus Ring",ring2="Mephitas's Ring +1",
  165. back="twilight cape",waist="Anrin Obi",legs=gear.DMGLegs,feet=gear.DMGFeet}
  166.  
  167.  
  168.  
  169.  
  170. sets.midcast['Enfeebling Magic'] = {ammo="Pemphredo Tathlum",
  171. head="Befouled Crown",neck="Incanter's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  172. body="Vanya Robe",hands="Lurid Mitts",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  173. back="Refraction Cape",waist="Luminary Sash",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  174.  
  175. sets.midcast.ElementalEnfeeble = {ammo="Pemphredo Tathlum",
  176. head="Merlinic Hood",neck="Incanter's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  177. body="Vanya Robe",hands="Lurid Mitts",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  178. back="Refraction Cape",waist="Luminary Sash",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  179.  
  180. sets.midcast['Dark Magic'] = {ammo="Pemphredo Tathlum",
  181. head="Merlinic Hood",neck="Incanter's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  182. body="Vanya Robe",hands="Lurid Mitts",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  183. back="Refraction Cape",waist="Luminary Sash",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  184.  
  185. sets.midcast.Drain = {ammo="Pemphredo Tathlum",
  186. head="Pixie Hairpin +1",neck="Incanter's Torque",ear2="Hirudinea Earring",ear1="Barkaro. Earring",
  187. body="Vanya Robe",hands=gear.ASHands,ring1="Evanescence Ring",ring2="Shiva Ring +1",
  188. back="Refraction Cape",waist="Fucho-no-obi",legs="Merlinic Shalwar",feet=gear.ASFeet}
  189.  
  190. sets.midcast.Aspir = {ammo="Pemphredo Tathlum",
  191. head="Pixie Hairpin +1",neck="Incanter's Torque",ear2="Hirudinea Earring",ear1="Barkaro. Earring",
  192. body="Vanya Robe",hands=gear.ASHands,ring1="Evanescence Ring",ring2="Shiva Ring +1",
  193. back="Refraction Cape",waist="Fucho-no-obi",legs=gear.ASLegs,feet=gear.ASFeet}
  194.  
  195. sets.midcast.Aspir.Death = {main="Lathi",sub="Niobid Strap",ammo="Strobilus",
  196. head="Pixie Hairpin +1",neck="Incanter's Torque",ear1="Hirudinea Earring",ear2="Etiolation Earring",
  197. body="Merlinic Jubbah",hands=gear.ASHands,ring1="Evanescence Ring",ring2="Mephitas's Ring +1",
  198. back="Bane Cape",waist="Fucho-no-obi",legs=gear.ASLegs,feet=gear.ASFeet}
  199.  
  200.  
  201. sets.midcast['Enhancing Magic'] = {
  202. head="Telchine Cap",neck="Incanter's Torque",
  203. body="Telchine Chas.",hands="Telchine Gloves",
  204. legs="Telchine Braconi",feet="Telchine Pigaches"}
  205.  
  206. sets.midcast.Refresh = {
  207. head="Telchine Cap",neck="Incanter's Torque",
  208. body="Telchine Chas.",hands="Telchine Gloves",
  209. legs="Telchine Braconi",feet="Telchine Pigaches"}
  210.  
  211.  
  212. sets.midcast.Stun = {ammo="Pemphredo Tathlum",
  213. head=gear.FCHead,neck="Incanter's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  214. body="Merlinic Jubbah",hands="Lurid Mitts",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  215. back="Bane Cape",waist="Luminary Sash",legs="Psycloth Lappas",feet=gear.FCFeet}
  216.  
  217. sets.midcast.BardSong = {ammo="Pemphredo Tathlum",
  218. head="Merlinic Hood",neck="Incanter's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  219. body="Ischemia Chasu.",hands="Lurid Mitts",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  220. back="Refraction Cape",waist="Luminary Sash",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  221.  
  222.  
  223.  
  224. sets.Fire = {waist="Karin Obi"}
  225. sets.Water = {waist="Suirin Obi"}
  226. sets.Earth = {waist="Dorin Obi"}
  227. sets.Ice = {waist="Hyorin Obi"}
  228. sets.Wind = {waist="Furin Obi"}
  229. sets.Thunder = {waist="Rairin Obi"}
  230. sets.Light = {waist="Korin Obi"}
  231. sets.Dark = {waist="Anrin Obi"}
  232.  
  233.  
  234.  
  235. -- Elemental Magic sets
  236.  
  237. sets.midcast['Elemental Magic'] = {main="Lathi",sub="Niobid Strap",ammo="Pemphredo Tathlum",
  238. head=gear.DMGHead,neck="Eddy Necklace",ear1="Barkaro. Earring",ear2="Friomisi Earring",
  239. body="Merlinic Jubbah",hands=gear.DmgAmalric,ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  240. back=gear.ElementalCape,waist=gear.ElementalObi,legs=gear.DMGLegs,feet=gear.DMGFeet}
  241.  
  242. sets.midcast.Meteor = {main="Lathi",sub="Niobid Strap",ammo="Pemphredo Tathlum",
  243. head=gear.DMGHead,neck="Eddy Necklace",ear1="Barkaro. Earring",ear2="Friomisi Earring",
  244. body="Merlinic Jubbah",hands=gear.DmgAmalric,ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  245. back=gear.ElementalCape,waist=gear.ElementalObi,legs=gear.DMGLegs,feet=gear.DMGFeet}
  246.  
  247. sets.midcast['Elemental Magic'].MP = {main="Lathi",sub="Niobid Strap",ammo="Pemphredo Tathlum",
  248. head=gear.DMGHead,neck="Eddy Necklace",ear1="Barkaro. Earring",ear2="Friomisi Earring",
  249. body="Spae. Coat +1",hands=gear.DmgAmalric,ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  250. back=gear.ElementalCape,waist=gear.ElementalObi,legs=gear.DMGLegs,feet=gear.DMGFeet}
  251.  
  252. sets.midcast.Death = {main="Lathi",sub="Niobid Strap",ammo="Strobilus",
  253. head="Pixie Hairpin +1",neck="Mizu. Kubikazari",ear1="Influx Earring",ear2="Etiolation Earring",
  254. body="Merlinic Jubbah",hands=gear.MpAmalric,ring1="Locus Ring",ring2="Mephitas's Ring +1",
  255. back="twilight cape",waist="Anrin Obi",legs=gear.DMGLegs,feet=gear.DMGFeet}
  256.  
  257. sets.midcast.Death.MP = {main="Lathi",sub="Niobid Strap",ammo="Strobilus",
  258. head="Pixie Hairpin +1",neck="Mizu. Kubikazari",ear1="Influx Earring",ear2="Etiolation Earring",
  259. body="Spae. Coat +1",hands=gear.MpAmalric,ring1="Locus Ring",ring2="Mephitas's Ring +1",
  260. back=gear.ElementalCape,waist=gear.ElementalObi,legs=gear.DMGLegs,feet=gear.DMGFeet}
  261.  
  262. sets.magic_burst = {neck="Mizu. Kubikazari",ring1="Locus Ring",ring2="Mujin Band", back=gear.ElementalCape}
  263.  
  264.  
  265.  
  266. sets.midcast['Elemental Magic'].Resistant = {}
  267.  
  268. sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'])
  269. sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'])
  270.  
  271.  
  272.  
  273. -- Sets to return to when not performing an action.
  274.  
  275. -- Resting sets
  276. sets.resting = {main="Lathi", sub="Niobid Strap",ammo="Impatiens",
  277. head="Befouled Crown",neck="Loricate Torque +1",ear1="novia Earring",ear2="Ethereal Earring",
  278. body="Ischemia Chasu.",hands="Shrieker's Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  279. back="Umbra Cape",waist="Fucho-no-Obi",legs="Assid. Pants +1",feet="Herald's Gaiters"}
  280.  
  281.  
  282. -- Idle sets
  283.  
  284. -- Normal refresh idle set
  285. sets.idle = {main="Lathi", sub="Niobid Strap",ammo="Impatiens",
  286. head="Befouled Crown",neck="Loricate Torque +1",ear1="novia Earring",ear2="Ethereal Earring",
  287. body="Ischemia Chasu.",hands="Shrieker's Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  288. back="Umbra Cape",waist="Fucho-no-Obi",legs="Assid. Pants +1",feet="Herald's Gaiters"}
  289.  
  290.  
  291. -- Idle mode that keeps PDT gear on, but doesn't prevent normal gear swaps for precast/etc.
  292. sets.idle.PDT = {main="Terra's Staff", sub="Oneiros Grip",ammo="Impatiens",
  293. head="Befouled Crown",neck="Loricate Torque +1",ear1="novia Earring",ear2="Ethereal Earring",
  294. body="Ischemia Chasu.",hands="Shrieker's Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  295. back="Umbra Cape",waist="Fucho-no-Obi",legs="Assid. Pants +1",feet="Herald's Gaiters"}
  296.  
  297. sets.idle.MP = {main="Terra's Staff", sub="Oneiros Grip",ammo="Impatiens",
  298. head="Befouled Crown",neck="Loricate Torque +1",ear1="novia Earring",ear2="Ethereal Earring",
  299. body="Ischemia Chasu.",hands="Shrieker's Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  300. back="Umbra Cape",waist="Fucho-no-Obi",legs="Assid. Pants +1",feet="Herald's Gaiters"}
  301.  
  302.  
  303.  
  304. -- Town gear.
  305. sets.idle.Town = {main="Lathi", sub="Niobid Strap",ammo="Impatiens",
  306. head="Befouled Crown",neck="Loricate Torque +1",ear1="novia Earring",ear2="Ethereal Earring",
  307. body="Councilor's Garb",hands="Shrieker's Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  308. back="Umbra Cape",waist="Fucho-no-Obi",legs="Assid. Pants +1",feet="Herald's Gaiters"}
  309.  
  310. -- Defense sets
  311.  
  312. sets.idle.Death = {main="Lathi",sub="Niobid Strap",ammo="Strobilus",
  313. head="Befouled Crown",neck="Loricate Torque +1",ear1="Influx Earring",ear2="Etiolation Earring",
  314. body="Ischemia Chasu.",hands=gear.MpAmalric,ring1="Mephitas's Ring",ring2="Mephitas's Ring +1",
  315. back="Umbra Cape",waist="Mujin Obi",legs="Merlinic Shalwar",feet="Herald's Gaiters"}
  316.  
  317. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  318.  
  319. sets.buff['Mana Wall'] = {feet="Wicce Sabots +1"}
  320. gear.default.obi_waist = "Refoccilation Stone"
  321.  
  322. gear.default.obi_back = "Bane Cape"
  323.  
  324.  
  325. -- Engaged sets
  326.  
  327. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  328. -- sets if more refined versions aren't defined.
  329. -- If you create a set with both offense and defense modes, the offense mode should be first.
  330. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  331.  
  332. -- Normal melee group
  333. sets.engaged = {}
  334.  
  335. end
  336.  
  337. -------------------------------------------------------------------------------------------------------------------
  338. -- Job-specific hooks for standard casting events.
  339. -------------------------------------------------------------------------------------------------------------------
  340.  
  341. function job_aftercast(spell, action, spellMap, eventArgs)
  342. -- Lock feet after using Mana Wall.
  343.  
  344. if spell.english == 'Mana Wall' then
  345. enable('feet')
  346. equip(sets.buff['Mana Wall'])
  347. disable('feet')
  348. end
  349.  
  350. end
  351. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  352. function job_midcast(spell, action, spellMap, eventArgs)
  353.  
  354. end
  355.  
  356.  
  357. function job_post_midcast(spell, action, spellMap, eventArgs)
  358. if spell.skill == 'Elemental Magic' and state.MagicBurst.value == 'On' then
  359. equip(sets.magic_burst)
  360. end
  361. end
  362.  
  363.  
  364. -------------------------------------------------------------------------------------------------------------------
  365. -- Job-specific hooks for non-casting events.
  366. -------------------------------------------------------------------------------------------------------------------
  367.  
  368. -- Called when a player gains or loses a buff.
  369. -- buff == buff gained or lost
  370. -- gain == true if the buff was gained, false if it was lost.
  371. function job_buff_change(buff, gain)
  372. -- Unlock feet when Mana Wall buff is lost.
  373. if buff == "Mana Wall" and not gain then
  374. enable('feet')
  375. handle_equipping_gear(player.status)
  376. end
  377. end
  378.  
  379. -- Handle notifications of general user state change.
  380. function job_state_change(stateField, newValue, oldValue)
  381. if stateField == 'Offense Mode' then
  382. if newValue == 'Normal' then
  383. disable('main','sub','range')
  384. else
  385. enable('main','sub','range')
  386. end
  387. end
  388. end
  389.  
  390.  
  391. -------------------------------------------------------------------------------------------------------------------
  392. -- User code that supplements standard library decisions.
  393. -------------------------------------------------------------------------------------------------------------------
  394.  
  395. -- Custom spell mapping.
  396. function job_get_spell_map(spell, default_spell_map)
  397. if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
  398. --[[ No real need to differentiate with current gear.
  399. if lowTierNukes:contains(spell.english) then
  400. return 'LowTierNuke'
  401. else
  402. return 'HighTierNuke'
  403. end
  404. --]]
  405. end
  406. end
  407.  
  408.  
  409.  
  410. -- Function to display the current relevant user state when doing an update.
  411. function display_current_job_state(eventArgs)
  412. display_current_caster_state()
  413.  
  414. eventArgs.handled = true
  415.  
  416.  
  417. end
  418.  
  419. -------------------------------------------------------------------------------------------------------------------
  420. -- Utility functions specific to this job.
  421. -------------------------------------------------------------------------------------------------------------------
  422.  
  423.  
  424. -- Select default macro book on initial load or subjob change.
  425. function select_default_macro_book()
  426. set_macro_page(1, 18)
  427. end
  428.  
  429.  
  430. function job_setup()
  431. custom_timers = {}
  432. end
  433.  
  434. function job_aftercast(spell, action, spellMap, eventArgs)
  435. if spell.name == 'Haste' then
  436. adjust_timers(spell, spellMap)
  437. elseif spell.name == 'Shellra V' then
  438. adjust_timers(spell, spellMap)
  439. elseif spell.name == 'Protectra V' then
  440. adjust_timers(spell, spellMap)
  441. elseif string.find(spell.name,'storm') then
  442. adjust_timers(spell, spellMap)
  443. elseif string.find(spell.name,'Boost') then
  444. adjust_timers(spell, spellMap)
  445. elseif string.find(spell.name,'Regen') then
  446. adjust_timers(spell, spellMap)
  447. elseif string.find(spell.name,'Reraise') then
  448. adjust_timers(spell, spellMap)
  449. end
  450. end
  451.  
  452. function adjust_timers(spell, spellMap)
  453. local current_time = os.time()
  454. local temp_timer_list = {}
  455. local dur = calculate_duration(spell, spellName, spellMap)
  456. custom_timers[spell.name] = nil
  457. send_command('timers delete "'..spell.name..' ['..spell.target.name..']"')
  458. custom_timers[spell.name] = current_time + dur
  459. send_command('@wait 1;timers create "'..spell.name..' ['..spell.target.name..']" '..dur..' down')
  460. end
  461.  
  462. function calculate_duration(spell, spellName, spellMap)
  463.  
  464. local mult = 1.00
  465. if player.equipment.Head == 'Telchine Cap' then mult = mult + 0.1 end
  466. if player.equipment.Body == 'Telchine Chas.' then mult = mult + 0.1 end
  467. if player.equipment.Hands == 'Telchine Gloves' then mult = mult + 0.1 end
  468. if player.equipment.Legs == 'Telchine Braconi' then mult = mult + 0.1 end
  469. if player.equipment.Feet == 'Telchine Pigaches' then mult = mult + 0.1 end
  470.  
  471. if player.equipment.Hands == 'Dynasty Mitts' then mult = mult + 0.05 end
  472.  
  473. if player.equipment.Feet == 'Estq. Houseaux +2' then mult = mult + 0.20 end
  474. if player.equipment.Legs == 'Futhark Trousers' then mult = mult + 0.10 end
  475. if player.equipment.Legs == 'Futhark Trousers +1' then mult = mult + 0.20 end
  476. if player.equipment.Hands == 'Atrophy Gloves' then mult = mult + 0.15 end
  477. if player.equipment.Hands == 'Atrophy Gloves +1' then mult = mult + 0.16 end
  478. if player.equipment.Back == 'Estoqueur\'s Cape' then mult = mult + 0.10 end
  479. if player.equipment.Hands == 'Dynasty Mitts' then mult = mult + 0.05 end
  480. if player.equipment.Body == 'Shabti Cuirass' then mult = mult + 0.09 end
  481. if player.equipment.Body == 'Shabti Cuirass +1' then mult = mult + 0.10 end
  482. if player.equipment.Feet == 'Leth. Houseaux' then mult = mult + 0.25 end
  483. if player.equipment.Feet == 'Leth. Houseaux +1' then mult = mult + 0.30 end
  484. local base = 0
  485.  
  486. if spell.name == 'Haste' then base = base + 180 end
  487. if spell.name == 'Stoneskin' then base = base + 300 end
  488. if spell.name:startswith("Bar") then base = base + 480 end
  489. if spell.name == 'Blink' then base = base + 300 end
  490. if spell.name == 'Aquaveil' then base = base + 600 end
  491. if string.find(spell.english,'storm') then base = base + 180 end
  492. if spell.name == 'Auspice' then base = base + 180 end
  493. if spell.name:startswith("Boost") then base = base + 300 end
  494. if spell.name == 'Phalanx' then base = base + 180 end
  495. if spell.name:startswith("Protect") then base = base + 1800 end
  496. if spell.name:startswith("Shell") then base = base + 1800 end
  497. if spell.name:startswith("Refresh") then base = base + 150 end
  498. if spell.name:startswith("Regen") then
  499. base = base + 60
  500. if buffactive['Light arts'] and player.main_job == 'SCH' then
  501. base = base*2+60
  502. -----the *2 here is the additional 60sec from Light Arts job points maxed
  503. -----+48 is from light arts, +12 more from telchine chas.
  504. elseif player.main_job == 'WHM' then
  505. base = base + 60
  506. if player.equipment.Hands == 'Ebers Mitts' then
  507. base = base + 20
  508. elseif player.equipment.Hands == 'Ebers Mitts +1' then
  509. base = base + 22
  510. end
  511. if player.equipment.Legs == 'Theo. Pantaloons' or player.equipment.Legs == 'Theo. Pant. +1' then
  512. base = base + 18
  513. end
  514. end
  515. end
  516. if spell.name == 'Adloquium' then base = base + 180 end
  517. if spell.name:startswith("Animus") then base = base + 180 end
  518. if spell.name == 'Crusade' then base = base + 300 end
  519. if spell.name == 'Embrava' then base = base + 90 end
  520. if spell.name:startswith("En") then base = base + 180 end
  521. if spell.name:startswith("Flurry") then base = base + 180 end
  522. if spell.name == 'Foil' then base = base + 30 end
  523. if spell.name:startswith("Gain") then base = base + 180 end
  524. if spell.name == 'Reprisal' then base = base + 60 end
  525. if spell.name:startswith("Temper") then base = base + 180 end
  526. if string.find(spell.english,'Spikes') then base = base + 180 end
  527.  
  528. if buffactive['Perpetuance'] then
  529. if player.equipment.Hands == 'Arbatel Bracers' then
  530. mult = mult*2.5
  531. elseif player.equipment.Hands == 'Arbatel Bracers +1' then
  532. mult = mult*2.55
  533. else
  534. mult = mult*2
  535. end
  536. end
  537. if buffactive['Composure'] then
  538. if spell.target.type == 'SELF' then
  539. mult = mult*3
  540. else
  541. mult = mult
  542. end
  543. end
  544.  
  545. local totalDuration = math.floor(mult*base)
  546.  
  547. ---print(totalDuration)
  548.  
  549. return totalDuration
  550. end
  551.  
  552. function reset_timers()
  553. for i,v in pairs(custom_timers) do
  554. send_command('timers delete "'..i..'"')
  555. end
  556. custom_timers = {}
  557. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement