Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function get_sets()
- -- Augmented Gear
- hagpantsacc = { name = "Hagondes Pants", augments = { "Magic Accuracy +12" } }
- hagbodyatk = { name = "Hagondes Coat", augments = { "Magic Attack Bonus +10" } }
- -- Static Sets
- sets.Hagondes = { head = "Hagondes Hat",
- body = hagbodyatk, hands = "Hagondes Cuffs",
- legs = hagpantsacc, feet = "Hagondes Sabots"
- }
- sets.Refresh = { head = "Nefer Khat",
- body = "Heka's Kalasiris", hands = "Serpentes Cuffs",
- legs = "Nares Trews", feet = "Serpentes Sabots"
- }
- sets.Sublimation = { ear2 = "Savant's Earring" }
- sets.Kite = { feet = "Desert Boots" }
- sets.DT = { neck = "Twilight Torque" }
- sets.PDT = set_combine(sets.DT, { main = "Earth Staff", legs = "Hagondes Pants" })
- sets.MDT = set_combine(sets.DT, sets.Hagondes)
- sets.Haste = set_combine(sets.Hagondes, { waist = "Goading Belt" })
- sets.INT = set_combine(sets.Hagondes, { ring1 = "Aquilo's Ring", ring2 = "Spiral Ring", back = "Toro Cape", waist = "Cognition Belt" })
- sets.MND = set_combine(sets.Hagondes, { ammo = "Kalboron Stone", head = "Gende. Caubeen", ring1 = "Solemn Ring", ring2 = "Sirona's Ring", waist = "Cascade Belt" })
- sets.JA = {}
- sets.JA.Celerity = {}
- sets.Staves = {}
- sets.Staves.Damage = {}
- sets.Staves.Damage.Default = {main = "Atinian Staff"}
- sets.Staves.Damage.Ice = {main = "Vourukasha I"}
- sets.Staves.Accuracy = {}
- sets.Staves.Accuracy.Default = {main = "Atinian Staff"}
- sets.Staves.CastSpeed = {}
- sets.Staves.CastSpeed.Default = {main = "Earth Staff"}
- sets.Staves.CastSpeed.Ice = {main = "Vourukasha I"}
- sets.Staves.Cure = {main = "Chatoyant Staff"}
- sets.Staves.Drain = {main = "Chatoyant Staff"}
- sets.Obis = {}
- sets.Obis.Fire = { waist = "Karin Obi" }
- sets.Obis.Earth = { waist = "Dorin Obi" }
- sets.Obis.Water = { waist = "Suirin Obi" }
- sets.Obis.Wind = { waist = "Furin Obi" }
- sets.Obis.Ice = { waist = "Hyorin Obi" }
- sets.Obis.Thunder = { waist = "Rairin Obi" }
- sets.Obis.Light = { waist = "Korin Obi" }
- sets.Obis.Dark = { waist = "Anrin Obi" }
- sets.Matk = set_combine(sets.Hagondes, { ammo = "Witchstone",
- neck = "Stoicheion Medal", ear1 = "Hecate's Earring", ear2 = "Moldavite Earring",
- hands = "Nares Cuffs",
- back = "Toro Cape", feet = "Gende. Galoshes"
- })
- sets.Macc = set_combine(sets.Hagondes, { ammo = "Kalboron Stone",
- neck = "Stoicheion Medal"
- })
- sets.CurePotency = set_combine(sets.Staves.Cure, { head = "Gende. Caubeen",
- body = "Heka's Kalasiris", hands = "Serpentes Cuffs",
- legs = "Nares Trews", feet = "Serpentes Sabots"
- })
- -- Dynamic Sets
- sets.FastCast = set_combine(sets.Staves.CastSpeed.Default, { ammo = "Incantor Stone",
- head = "Nares Cap", ear1 = "Loquac. Earring",
- body = "Anhur Robe", hands = "Gendewitha Gages",
- back = "Swith Cape", legs = "Orvail Pants +1", feet = "Chelona Boots"
- })
- grimoire_buffs = T{ 'Celerity', 'Alacrity', 'Perpetuance', 'Immanence', 'Penury', 'Parsimony', 'Rapture', 'Ebullience', 'Klimaform' }
- sets.Grimoire = {}
- sets.Grimoire.CastTime = {} -- Add Academic's Loafers when obtained
- sets.Grimoire.Celerity = {} -- Add Argute Loafers when obtained
- sets.Grimoire.Alacrity = sets.Grimoire.Celerity
- sets.Grimoire.Perpetuance = { hands = "Svnt. Bracers +2" }
- sets.Grimoire.Immanence = sets.Grimoire.Perpetuance
- sets.Grimoire.Penury = {} -- Add Savant's Pants when obtained
- sets.Grimoire.Parsimony = sets.Grimoire.Penury
- sets.Grimoire.Rapture = {} -- Add Savant's Bonnet when obtained
- sets.Grimoire.Ebullience = sets.Grimoire.Rapture
- sets.Grimoire.Klimaform = {} -- Add Savant's Loafers when obtained
- sets.ElementalMagic = {}
- sets.ElementalMagic.FastCast = {}
- sets.ElementalMagic.FastCast.Default = set_combine(sets.Staves.CastSpeed.Default, sets.FastCast, { neck = "Stoicheion Medal" })
- sets.ElementalMagic.FastCast.Impact = set_combine(sets.ElementalMagic.FastCast.Default, { head = "", body = "Twilight Cloak" })
- sets.ElementalMagic.FastCast.Master = {}
- sets.ElementalMagic.Default = set_combine(sets.Staves.Damage.Default, sets.Macc, sets.INT, sets.Matk)
- sets.ElementalMagic.Accuracy = set_combine(sets.INT, sets.Matk, sets.Macc)
- sets.ElementalMagic.Debuff = set_combine(sets.INT, sets.Macc)
- sets.ElementalMagic.Helix = sets.ElementalMagic.Default
- sets.ElementalMagic.Impact = set_combine(sets.ElementalMagic.Default, { head = "", body = "Twilight Cloak" })
- sets.ElementalMagic.Master = {}
- sets.DarkMagic = {}
- sets.DarkMagic.FastCast = {}
- sets.DarkMagic.FastCast.Default = sets.FastCast
- sets.DarkMagic.FastCast.Stun = set_combine(sets.Staves.Accuracy.Default, sets.Macc, sets.FastCast, { sub = "Caecus Grip", waist = "Goading Belt", legs = "Hagondes Pants", feet = "Hagondes Sabots" })
- sets.DarkMagic.FastCast.Master = {}
- sets.DarkMagic.Default = set_combine(sets.Staves.Damage.Default, sets.Macc, { sub = "Caecus Grip", })
- sets.DarkMagic.Drain = set_combine(sets.DarkMagic.Default, sets.Staves.Drain)
- sets.DarkMagic.Stun = sets.DarkMagic.FastCast.Stun
- sets.DarkMagic.Master = {}
- enfeebling_potency_spells = T{ 'Slow', 'Slow II', 'Blind', 'Blind II', 'Paralyze', 'Paralyze II', 'Addle' }
- sets.EnfeeblingMagic = {}
- sets.EnfeeblingMagic.FastCast = {}
- sets.EnfeeblingMagic.FastCast.Master = {}
- sets.EnfeeblingMagic.WhiteMagic = {}
- sets.EnfeeblingMagic.WhiteMagic.Default = set_combine(sets.Staves.Accuracy.Default, sets.MND, sets.Macc, { sub = "Macero Grip" })
- sets.EnfeeblingMagic.WhiteMagic.Potency = set_combine(sets.Staves.Accuracy.Default, sets.Macc, sets.MND, {sub = "Macero Grip" })
- sets.EnfeeblingMagic.BlackMagic = {}
- sets.EnfeeblingMagic.BlackMagic.Default = set_combine(sets.Staves.Accuracy.Default, sets.INT, sets.Macc, { sub = "Macero Grip" })
- sets.EnfeeblingMagic.BlackMagic.Potency = set_combine(sets.Staves.Accuracy.Default, sets.Macc, sets.INT, {sub = "Macero Grip" })
- sets.EnfeeblingMagic.Master = {}
- enhancing_no_skill_spells = T{ 'Haste', 'Refresh', 'Refresh II', 'Protect', 'Shell', 'Blink', 'Aquaveil', 'Sneak', 'Invisible' }
- sets.EnhancingMagic = {}
- sets.EnhancingMagic.FastCast = {}
- sets.EnhancingMagic.FastCast.Default = set_combine(sets.FastCast, { waist = "Siegel Sash" })
- sets.EnhancingMagic.FastCast.Master = {}
- sets.EnhancingMagic.Default = set_combine(sets.EnhancingMagic.FastCast.Default, { waist = "Goading Belt", legs = "Hagondes Pants", feet = "Hagondes Sabots" })
- sets.EnhancingMagic.Skill = set_combine(sets.EnhancingMagic.Default, { sub = "Fulcio Grip", body = "Anhur Robe", waist = "Olympus Sash" })
- sets.EnhancingMagic.Stoneskin = set_combine(sets.MND, sets.EnhancingMagic.Skill, { waist = "Siegel Sash" })
- sets.EnhancingMagic.Master = {}
- sets.HealingMagic = {}
- sets.HealingMagic.FastCast = {}
- sets.HealingMagic.FastCast.Default = sets.FastCast
- sets.HealingMagic.FastCast.Cure = set_combine(sets.FastCast, { body = "Heka's Kalasiris" })
- sets.HealingMagic.FastCast.Master = {}
- sets.HealingMagic.Default = sets.HealingMagic.FastCast.Default
- sets.HealingMagic.Skill = { ring2 = "Sirona's Ring" }
- sets.HealingMagic.Cursna = set_combine(sets.HealingMagic.Default, sets.HealingMagic.Skill, { waist = "Goading Belt", legs = "Hagondes Pants", feet = "Hagondes Sabots" })
- sets.HealingMagic.Cure = set_combine(sets.MND, sets.HealingMagic.Skill, sets.CurePotency)
- sets.HealingMagic.Master = {}
- sets.Idle = {}
- sets.Idle.Default = set_combine(sets.INT, sets.PDT, sets.Refresh)
- sets.Idle.Master = sets.Idle.Default
- sets.Resting = {}
- sets.Resting.Default = sets.Idle.Default
- sets.Resting.Master = sets.Resting.Default
- sets.Engaged = {}
- sets.Engaged.Melee = set_combine(sets.Hagondes, { main = "Atinian Staff", sub = "Pole Grip", waist = "Goading Belt" })
- sets.Engaged.Caster = sets.Idle.Default
- sets.Engaged.Master = sets.Engaged.Caster
- strategems = {}
- strategems['Light Arts'] = { addend = 'addendumwhite', cost = 'penury', speed = 'celerity', aoe = 'accession', power = 'rapture', duration = 'perpetuance', accuracy = 'altruism', enmity = 'tranquility' }
- strategems['Dark Arts'] = { addend = 'addendumblack', cost = 'parsimony', speed = 'alacrity', aoe = 'manifestation', power = 'ebullience', skillchain = 'immanence', accuracy = 'focalization', enmity = 'equanimity' }
- strategems.list = T{ 'addend', 'cost', 'speed', 'aoe', 'power', 'duration', 'skillchain', 'accuracy', 'enmity' }
- strategems.affected = { ElementalMagic = { 'Parsimony', 'Alacrity', 'Ebullience', 'Immanence', 'Focalization', 'Equanimity' },
- DarkMagic = { 'Parsimony', 'Alacrity', 'Ebullience', 'Immanence', 'Focalization', 'Eqanimity' },
- EnhancingMagic = { 'Penury', 'Celerity', 'Accession', 'Perpetuance' },
- EnfeeblingMagic = { 'Parsimony', 'Alacrity', 'Manifestation', 'Focalization' },
- HealingMagic = { 'Penury', 'Celerity', 'Accession', 'Rapture', 'Tranquility' },
- DivineMagic = { 'Penury', 'Celerity', 'Accession', 'Rapture', 'Tranquility' }
- }
- -- Declare aliases for strategems
- for i = 1, #strategems.list do
- windower.send_command('alias ' .. strategems.list[i] .. ' gs c ' .. strategems.list[i])
- end
- -- Strat Queue Implementation
- queue = {}
- queue.max = 3
- queue.delay = 1.5
- queue.enabled = false
- queue.entries = {}
- end
- function precast(spell, action)
- verify_equip()
- if spell.skill:find('Magic') and sets[spell.skill] then
- build_casting_sets(spell)
- end
- end
- function midcast(spell, action)
- if spell.skill:find('Magic') and sets[spell.skill] then
- equip(sets[spell.skill].Master)
- end
- end
- function aftercast(spell, action)
- if T{'Idle', 'Resting', 'Engaged'}:contains(player.status) then
- equip(sets[player.status].Master)
- end
- end
- function pet_midcast(spell, action)
- end
- function pet_aftercast(spell, action)
- end
- function buff_change(buff, gain_or_loss)
- if buff == 'Sublimation: Activated' and gain_or_loss == 'gain' then
- sets.Idle.Master = set_combine(sets.Idle.Master, sets.Sublimation)
- elseif buff == 'Sublimation: Activated' and gain_or_loss == 'loss' then
- sets.Idle.Master = sets.Idle.Default
- end
- end
- function status_change(new, old)
- if T{'Zoning', 'Fishing', 'Event', 'Dead'}:contains(old) then
- return
- end
- if T{'Idle', 'Resting', 'Engaged'}:contains(new) then
- equip(sets[new].Master)
- end
- end
- function self_command(command)
- --Handle strategem calls
- if strategems.list:contains(command) then
- if queue.enabled then
- enqueue(command)
- else
- use_strategem(command)
- end
- end
- --equip(sets.ElementalMagic.Default)
- end
- function use_strategem(command)
- -- Commands: addend, power, speed, cost, duration, aoe, skillchain
- -- Must have either shortcuts addon or spellcast plugin loaded to handle the alias command sent to windower
- if buffactive['Light Arts'] or buffactive['Addendum: White'] then
- if strategems['Light Arts'][command] then
- windower.send_command(strategems['Light Arts'][command])
- else
- windower.add_to_chat(123, 'Light Arts does not have a strategem for ' .. command .. '.')
- end
- elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
- if strategems['Dark Arts'][command] then
- windower.send_command(strategems['Dark Arts'][command])
- else
- windower.add_to_chat(123, 'Dark Arts does not have a strategem for ' .. command .. '.')
- end
- else
- windower.add_to_chat(123, 'Command could not be processed, arts not up.')
- end
- end
- function clear_queue()
- queue.entries = {}
- end
- function set_max_queue(value)
- -- Impose limit on max queue value, > 1 and < 6
- if value < 1 or value > 5 then
- windower.add_to_chat(123, 'You must set queue max to be between 1 and 5.')
- elseif value > 0 and value < 6 then
- queue.max = value
- else
- windower.add_to_chat(123, 'A non valid max value was passed into the function set_max_queue: ' .. value)
- end
- end
- function enqueue(strat)
- -- For now, the enqueue function does not convert the alias to the actual strategem command. I may change that later to
- -- write code to prevent strategems from being added to the queue that cannot be cast such as perpetuance when in dark arts.
- if #queue.entries < queue.max then
- if not #queue.entries:contains(strat) then
- queue.entries:insert(strat, 1) -- Adds strat to the front of the queue so that when dequeued, strats are cast in the order sent.
- else
- windower.add_to_chat(123, 'The strategem ' .. strat .. ' is already in the queue.')
- end
- else
- windower.add_to_chat(123, 'The queue is already at its maximum capacity')
- end
- end
- function dequeue()
- if #queue.entries > 0 then
- strat = queue.entries.remove()
- use_strategem(strat)
- end
- end
- function list_queue()
- windower.add_to_chat(123, 'Current Queue: { ' .. queue.entries:concat(', ') .. ' }')
- windower.add_to_chat(123, 'Max Queue Length: ' .. queue.max)
- windower.add_to_chat(123, 'Strat Delay: ' .. queue.delay)
- end
- function build_master(status)
- if sets[status].Master then
- sets[status].Master = sets[status].Default
- end
- end
- function build_casting_sets(spell)
- sets[spell.skill].FastCast.Master = {}
- sets[spell.skill].Master = {}
- -- Build Precast set
- if sets[spell.skill].FastCast[spell.english] then -- Covers Stun and Impact Casting
- sets[spell.skill].FastCast.Master = sets[spell.skill].FastCast[spell.english]
- elseif spell.english:find('Cure') or spell.english:find('Cura') then -- Covers Cure, Cura, and Curaga Casting
- sets[spell.skill].FastCast.Master = sets[spell.skill].FastCast.Cure
- elseif sets[spell.skill].FastCast.Default then -- Covers specific skill casting gear such as Stoicheion Medal or Siegel Sash
- sets[spell.skill].FastCast.Master = sets[spell.skill].FastCast.Default
- else
- sets[spell.skill].FastCast.Master = sets.FastCast
- end
- -- Adds any gear that enhances cast speed through the buff Grimoire such as Academic's Loafers
- if spell.type == 'BlackMagic' and (buffactive['Dark Arts'] or buffactive['Addendum: Black']) then
- sets[spell.skill].FastCast.Master = set_combine(sets[spell.skill].FastCast.Master, sets.Grimoire.CastTime)
- elseif spell.type == 'WhiteMagic' and (buffactive['Light Arts'] or buffactive['Addendum: White']) then
- sets[spell.skill].FastCast.Master = set_combine(sets[spell.skill].FastCast.Master, sets.Grimoire.CastTime)
- end
- -- Adds relevant cast speed reduction Magian Staff if available
- if sets.Staves.CastSpeed[spell.element] then
- sets[spell.skill].FastCast.Master = set_combine(sets[spell.skill].FastCast.Master, sets.Staves.CastSpeed[spell.element])
- end
- -- equip(sets[spell.skill].FastCast.Master)
- -- windower.add_to_chat(123, "Testing Set Build, Fast Cast")
- -- Build Midcast set
- if sets[spell.skill][spell.english] then
- sets[spell.skill].Master = sets[spell.skill][spell.english]
- if spell.english == 'Drain' then
- weather_check(spell)
- end
- else
- if spell.skill == 'ElementalMagic' then
- if spell.english:find('helix') then
- sets[spell.skill].Master = sets[spell.skill].Helix
- weather_check(spell)
- elseif T{ 'Burn', 'Frost', 'Drown', 'Shock', 'Rasp', 'Choke' }:contains(spell.english) then
- sets[spell.skill].Master = sets[spell.skill].Debuff
- else
- sets[spell.skill].Master = sets[spell.skill].Default
- weather_check(spell)
- end
- elseif spell.skill == 'DarkMagic' then
- windower.add_to_chat(123, spell.english)
- if spell.english:find('Aspir') then
- windower.add_to_chat(123, 'made it')
- sets[spell.skill].Master = sets[spell.skill].Drain
- weather_check(spell)
- else
- sets[spell.skill].Master = sets[spell.skill].Default
- end
- elseif spell.skill == 'EnhancingMagic' then
- if not enhancing_no_skill_spells:contains(spell.english) then
- sets[spell.skill].Master = sets[spell.skill].Skill
- else
- sets[spell.skill].Master = sets[spell.skill].Default
- end
- elseif spell.skill == 'EnfeeblingMagic' then
- if enfeebling_potency_spells:contains(spell.english) then
- sets[spell.skill].Master = sets[spell.skill][spell.type].Potency
- else
- sets[spell.skill].Master = sets[spell.skill][spell.type].Default
- end
- elseif spell.skill == 'HealingMagic' then
- if spell.english:find('Cur') then
- sets[spell.skill].Master = sets[spell.skill].Cure
- weather_check(spell)
- else
- sets[spell.skill].Master = sets[spell.skill].Default
- end
- end
- end
- -- This adds any relevant strategem gear to both fast cast and casting sets after they are built
- for i = 1, #strategems.affected[spell.skill] do
- if buffactive[strategems.affected[spell.skill][i]] and sets.Grimoire[strategems.affected[spell.skill][i]] then
- sets[spell.skill].FastCast.Master = set_combine(sets[spell.skill].FastCast.Master, sets.Grimoire[strategems.affected[spell.skill][i]])
- sets[spell.skill].Master = set_combine(sets[spell.skill].Master, sets.Grimoire[strategems.affected[spell.skill][i]])
- end
- end
- if spell.casttime > 1.9 then
- equip(sets[spell.skill].FastCast.Default)
- else
- equip(sets[spell.skill].Master)
- end
- end
- function weather_check(spell)
- if spell.element == world.day_element or spell.element == world.weather_element then
- sets[spell.skill].Master = set_combine(sets[spell.skill].Master, sets.Obis[spell.element], {back = "Twilight Cape"})
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement