Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- NOTE: I do not play run, so this will not be maintained for 'active' use.
- -- It is added to the repository to allow people to have a baseline to build from,
- -- and make sure it is up-to-date with the library API.
- -------------------------------------------------------------------------------------------------------------------
- -- Setup functions for this job. Generally should not be modified.
- -------------------------------------------------------------------------------------------------------------------
- -- Initialization function for this job file.
- function get_sets()
- mote_include_version = 2
- -- Load and initialize the include file.
- include('Mote-Include.lua')
- include('organizer-lib')
- end
- include('organizer-lib')
- -- Setup vars that are user-independent.
- function job_setup()
- -- Table of entries
- rune_timers = T{}
- -- entry = rune, index, expires
- if player.main_job_level >= 65 then
- max_runes = 3
- elseif player.main_job_level >= 35 then
- max_runes = 2
- elseif player.main_job_level >= 5 then
- max_runes = 1
- else
- max_runes = 0
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
- -------------------------------------------------------------------------------------------------------------------
- function user_setup()
- state.OffenseMode:options('Normal','Tank','DDDW', 'DD', 'Acc', 'PDT', 'MDT', 'BDT')
- state.WeaponskillMode:options('Normal', 'Acc')
- state.PhysicalDefenseMode:options('PDT')
- state.IdleMode:options('Regen', 'Refresh')
- select_default_macro_book()
- info.RuneEnchantment = S{"Tellus", "Unda", "Flabra", "Ignis", "Gelus", "Sulpor", "Lux", "Tenebrae"}
- end
- function init_gear_sets()
- sets.organizer = {
- item="Echo Drop",
- item="Remedy",
- item="Sublime Sushi",
- item="Alber Strap",}
- sets.enmity = {ammo="Iron Gobbet",
- head="Halitus Helm", neck="Unmoving Collar +1", ear1="Trux Earring", ear2="Cryptic Earring",
- body="Emet Harness +1", hands="Kurys Gloves", ring1="Provocare ring", ring2="Petrov Ring",
- back="Evasionist's Cape", waist="Goading Belt", legs="Eri. Leg Guards +1", feet="Erilaz Greaves +1"}
- --------------------------------------
- -- Precast sets
- --------------------------------------
- -- Precast sets to enhance JAs
- sets.precast.JA['Vallation'] =set_combine(sets.enmity, {body="Runeist coat +1", legs="Futhark trousers +1"})
- sets.precast.JA['Valiance'] = sets.precast.JA['Vallation']
- sets.precast.JA['Pflug'] = set_combine(sets.enmity, {feet="Runeist bottes +1"})
- sets.precast.JA['Battuta'] = set_combine(sets.enmity, {head="Futhark Bandeau"})
- sets.precast.JA['Liement'] = set_combine(sets.enmity, {body="Futhark Coat +1"})
- sets.precast.JA['Lunge'] = {ammo="Ghastly Tathlum +1",
- head="Highwing Helm", neck="Eddy Necklace", ear1="Crematio Earring", ear2="Friomisi Earring",
- body="Samnuha Coat", hands="Leyline Gloves", ring1="Fenrir Ring +1", ring2="Shiva Ring +1",
- back="Toro Cape", waist="Eschan Stone", legs="Shned. Tights +1", feet="Manabyss Pigaches"}
- sets.precast.JA['Swipe'] = sets.precast.JA['Lunge']
- sets.precast.JA['Gambit'] = set_combine(sets.enmity, {hands="Runeist Mitons +1"})
- sets.precast.JA['Rayke'] = set_combine(sets.enmity, {feet="Futhark Boots +1"})
- sets.precast.JA['Elemental Sforzo'] = set_combine(sets.enmity, {body="Futhark Coat +1"})
- sets.precast.JA['Swordplay'] = set_combine(sets.enmity, {hands="Futhark Mitons"})
- sets.precast.JA['Embolden'] = set_combine(sets.enmity, {back="Evasionist's Cape"})
- sets.precast.JA['Vivacious Pulse'] = set_combine(sets.enmity, {head="Erilaz Galea +1", legs="Rune. Trousers +1"})
- sets.precast.JA['One For All'] = set_combine(sets.enmity, {})
- sets.precast.JA['Provoke'] = sets.enmity
- sets.precast.JA['Sekkanoki'] = sets.enmity
- sets.precast.JA['Meditate'] = sets.enmity
- sets.precast.JA['Warding Circle'] = sets.enmity
- sets.precast.JA['Seigan'] = sets.enmity
- sets.precast.JA['Third Eye'] = sets.enmity
- sets.precast.JA['Hasso'] = sets.enmity
- -- Fast cast sets for spells
- sets.precast.FC = {ammo="Sapience Orb",
- head="Carmine Mask", neck="Orunmila's Torque",
- ear1="Loquacious Earring", ear2="Etiolation Earring",
- body={ name="Taeon Tabard", augments={'"Fast Cast"+5',}},
- hands="Leyline Gloves",
- ring1="Weather. Ring", ring2="Prolix Ring",
- legs="Rawhide Trousers", feet="Carmine Greaves"}
- sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash", legs="Futhark Trousers +1"})
- sets.precast.FC['Utsusemi: Ichi'] = set_combine(sets.precast.FC, {neck='Magoraga beads'})
- sets.precast.FC['Utsusemi: Ni'] = set_combine(sets.precast.FC['Utsusemi: Ichi'], {})
- -- Weaponskill sets
- sets.precast.WS = {ammo="Ginsen",
- head={ name="Herculean Helm", augments={'Weapon skill damage +4%',}},
- neck="Fotia Gorget", ear1="Brutal Earring", ear2="Moonshade Earring",
- body={ name="Herculean Vest", augments={'Accuracy+20 Attack+20','"Triple Atk."+3','AGI+8','Accuracy+14','Attack+11',}},
- hands={ name="Herculean Gloves", augments={'Accuracy+30','Phys. dmg. taken -3%','AGI+1','Attack+3',}},
- ring1="Ifrit Ring", ring2="Ifrit Ring",
- back="Buquwik Cape", waist="Fotia Belt",
- legs="Taeon Tights",
- feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.precast.WS['Resolution'] = {ammo="Ginsen",
- head={ name="Herculean Helm", augments={'Weapon skill damage +4%',}}, neck="Fotia Gorget", ear1="Flame Pearl", ear2="Moonshade Earring",
- body="Rawhide Vest", hands="Erilaz Gauntlets +1", ring1="Ifrit Ring", ring2="Ifrit Ring",
- back="Buquwik Cape", waist="Fotia Belt", legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS['Resolution'].Normal,
- {ammo="Amar Cluster",
- ear1="Cessance Earring",
- body={ name="Herculean Vest", augments={'Accuracy+20 Attack+20','"Triple Atk."+3','AGI+8','Accuracy+14','Attack+11',}}, ring1="Rufescent Ring",
- back="Grounded Mantle +1", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},})
- sets.precast.WS['Ground Strike'] = {ammo="Ginsen",
- head={ name="Herculean Helm", augments={'Weapon skill damage +4%',}}, neck="Fotia Gorget", ear1="Ishvara Earring", ear2="Moonshade Earring",
- body={ name="Herculean Vest", augments={'Accuracy+20 Attack+20','"Triple Atk."+3','AGI+8','Accuracy+14','Attack+11',}}, hands="Erilaz Gauntlets +1", ring1="Ifrit Ring", ring2="Ifrit Ring",
- back="Buquwik Cape", waist="Fotia Belt", legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.precast.WS['Ground Strike'].Acc = set_combine(sets.precast.WS['Ground Strike'].Normal,
- {ammo="Amar Cluster",
- ear1="Cessance Earring",
- body={ name="Herculean Vest", augments={'Accuracy+20 Attack+20','"Triple Atk."+3','AGI+8','Accuracy+14','Attack+11',}}, ring1="Rufescent Ring",
- back="Grounded Mantle +1", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},})
- sets.precast.WS['Savage Blade'] = {ammo="Ginsen",
- head={ name="Herculean Helm", augments={'Weapon skill damage +4%',}}, neck="Fotia Gorget", ear1="Flame Pearl", ear2="Moonshade Earring",
- body="Rawhide Vest", hands={ name="Herculean Gloves", augments={'Accuracy+30','Phys. dmg. taken -3%','AGI+1','Attack+3',}}, ring1="Ifrit Ring", ring2="Ifrit Ring",
- back="Buquwik Cape", waist="Fotia Belt", legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'].Normal,
- {ammo="Amar Cluster",
- ear1="Cessance Earring",
- body={ name="Herculean Vest", augments={'Accuracy+20 Attack+20','"Triple Atk."+3','AGI+8','Accuracy+14','Attack+11',}}, ring1="Rufescent Ring",
- back="Grounded Mantle +1", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},})
- sets.precast.WS['Dimidiation'] = {ammo="Jukukik Feather",
- head={ name="Herculean Helm", augments={'Weapon skill damage +4%',}}, neck="Fotia Gorget", ear1="Ishvara Earring", ear2="Moonshade Earring",
- body="Rawhide Vest", hands="Rawhide Gloves", ring1="Ramuh Ring", ring2="Ramuh Ring",
- back="Kayapa Cape", waist="Fotia Belt", legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.precast.WS['Dimidiation'].Acc = set_combine(sets.precast.WS['Dimidiation'].Normal,
- {ammo="Honed Tathlum", head={ name="Herculean Helm", augments={'Weapon skill damage +4%',}}, ear1="Cessance Earring",})
- sets.precast.WS['Herculean Slash'] = set_combine(sets.precast['Lunge'], {})
- sets.precast.WS['Herculean Slash'].Acc = set_combine(sets.precast.WS['Herculean Slash'].Normal, {})
- sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast['Lunge'], {ring1="Archon Ring"})
- sets.precast.WS['Sanguine Blade'].Acc = set_combine(sets.precast.WS['Sanguine Blade'].Normal, {})
- --------------------------------------
- -- Midcast sets
- --------------------------------------
- sets.midcast.FastRecast = {}
- sets.midcast['Enhancing Magic'] = {head="Erilaz Galea +1", neck="Colossus's torque", ear1="Andoaa Earring",
- hands="Runeist mitons +1", waist="Olympus Sash",
- back="Merciful Cape", legs="Futhark Trousers +1"}
- sets.midcast['Phalanx'] = set_combine(sets.midcast['Enhancing Magic'], {head="Futhark Bandeau"})
- sets.midcast['Regen'] = {head="Runeist Bandeau +1", legs="Futhark Trousers +1"}
- sets.midcast['Refresh'] = set_combine(sets.enmity, {head="Erilaz Galea +1"})
- sets.midcast['Stoneskin'] = {waist="Siegel Sash"}
- sets.midcast.Cure = set_combine(sets.enmity, {neck="Colossus's Torque", feet="Futhark Boots +1"})
- sets.midcast['Flash'] = {ammo="Iron Gobbet",
- head="Halitus Helm", neck="Warder's Charm", ear1="Trux Earring", ear2="Cryptic Earring",
- body="Emet Harness +1", hands="Kurys Gloves", ring1="Provocare ring", ring2="Petrov Ring",
- back="Evasionist's Cape", waist="Goading Belt", legs="Eri. Leg Guards +1", feet="Erilaz Greaves +1"}
- sets.midcast['Foil'] = sets.midcast['Flash']
- sets.midcast['Crusade'] = sets.midcast['Flash']
- --------------------------------------
- -- Idle/resting/defense/etc sets
- --------------------------------------
- sets.idle = {ammo="Vanir Battery",
- head="Rawhide Mask", neck="Sanctity Necklace", ear1="Ethereal earring", ear2="Genmei earring",
- body="Runeist Coat +1", hands="Runeist Mitons +1", ring1="Sheltered Ring", ring2="Paguroidea ring",
- back="Reiki Cloak", waist="Fucho-no-Obi", legs="Rawhide Trousers", feet="Skadi's Jambeaux +1"}
- sets.idle.Refresh = set_combine(sets.idle, {body="Runeist Coat +1", waist="Fucho-no-obi"})
- sets.defense.PDT = {ammo="Iron Gobbet",
- head="Erilaz Galea +1", neck="Loricate Torque +1",
- ear1="Ethereal Earring", ear2="Genmei Earring",
- body="Erilaz Surcoat +1",
- hands="Runeist Mitons +1",
- ring1="Dark Ring", ring2="Dark Ring",
- waist="Flume Belt",
- legs="Eri. Leg Guards +1",
- feet="Erilaz Greaves +1",
- back="Evasionist's Cape"}
- sets.defense.MDT = {ammo="Vanir Battery",
- head="Erilaz Galea +1", neck="Warder's Charm", ear1="Sanare Earring", ear2="Etiolation Earring",
- body="Runeist Coat +1", hands="Runeist Mitons +1", ring1="Dark Ring", ring2="Shadow Ring",
- back="Reiki Cloak", waist="Lieutenant's Sash", legs="Mes'yohi Slacks", feet="Erilaz Greaves +1",}
- sets.defense.BDT = {ammo="Vanir Battery",
- head="Erilaz Galea +1", neck="Loricate Torque +1", ear1="Sanare Earring", ear2="Genmei Earring",
- body="Futhark Coat +1", hands="Kurys Gloves", ring1="Dark Ring", ring2="Dark Ring",
- back="Mollusca Mantle", waist="Lieutenant's Sash", legs="Mes'yohi Slacks", feet="Erilaz Greaves +1",}
- sets.Kiting = {feet="Skadi's Jambeaux +1"}
- --------------------------------------
- -- Engaged sets
- --------------------------------------
- sets.engaged = {ammo="Ginsen",
- head="Dampening Tam", neck="Asperity Necklace", ear1="Trux Earring", ear2="Brutal Earring",
- body={ name="Herculean Vest", augments={'Accuracy+20 Attack+20','"Triple Atk."+3','AGI+8','Accuracy+14','Attack+11',}},
- hands={ name="Herculean Gloves", augments={'Accuracy+30','Phys. dmg. taken -3%','AGI+1','Attack+3',}},
- ring1="Epona's Ring", ring2="Petrov Ring",
- back="Bleating Mantle", waist="Windbuffet Belt +1",
- legs="Taeon Tights",
- feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.engaged.DD = {ammo="Ginsen",
- head="Dampening Tam", neck="Asperity Necklace", ear1="Trux Earring", ear2="Brutal Earring",
- body="Rawhide Vest", hands={ name="Herculean Gloves", augments={'Accuracy+30','Phys. dmg. taken -3%','AGI+1','Attack+3',}}, ring1="Epona's Ring", ring2="Petrov Ring",
- back="Bleating Mantle", waist="Windbuffet Belt +1",
- legs="Ta'lab Trousers", feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.engaged.DDDW = {ammo="Ginsen",
- head="Adhemar Bonnet",
- neck="Asperity Necklace",
- --ear1="Cessance Earring",
- ear1="Brutal Earring",ear2="Suppanomimi",
- body="Adhemar Jacket",
- hands="Adhemar Wristbands",
- ring1="Petrov Ring",ring2="Epona's Ring",
- back="Bleating Mantle",
- waist="Windbuffet Belt +1",
- legs="Samnuha Tights",
- feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}}}
- sets.engaged.Acc = {ammo="Honed Tathlum",
- head="Adhemar Bonnet", neck="Combatant's Torque", ear1="Cessance Earring", ear2="Zennaroi Earring",
- body={ name="Herculean Vest", augments={'Accuracy+20 Attack+20','"Triple Atk."+3','AGI+8','Accuracy+14','Attack+11',}},
- hands={ name="Herculean Gloves", augments={'Accuracy+30','Phys. dmg. taken -3%','AGI+1','Attack+3',}},
- ring1="Ramuh Ring", ring2="Ramuh Ring",
- back="Grounded Mantle +1", waist="Kentarch Belt +1",
- legs={ name="Herculean Trousers", augments={'Accuracy+22 Attack+22','Weapon skill damage +2%','AGI+7','Accuracy+14',}},
- feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Store TP"+2','DEX+10','Accuracy+14','Attack+10',}},}
- sets.engaged.PDT = {ammo="Amar Cluster",
- head="Lithelimb Cap", neck="Combatant's Torque", ear1="Ethereal Earring", ear2="Genmei Earring",
- body="Erilaz Surcoat +1", hands="Erilaz Gauntlets +1", ring1="Dark Ring", ring2="Dark Ring",
- back="Evasionist's Cape", waist="Flume Belt", legs="Eri. Leg Guards +1", feet="Erilaz Greaves +1"}
- sets.engaged.MDT = {ammo="Vanir Battery",
- head="Dampening Tam", neck="Loricate Torque +1", ear1="Sanare Earring", ear2="Etiolation Earring",
- body="Runeist Coat +1", hands="Futhark Mitons", ring1="Dark Ring", ring2="Shadow Ring",
- back="Engulfer Cape", waist="Flume Belt", legs="Eri. Leg Guards +1", feet="Erilaz Greaves +1"}
- sets.engaged.BDT = {ammo="Vanir Battery",
- head="Erilaz Galea +1", neck="Loricate Torque +1", ear1="Sanare Earring", ear2="Genmei Earring",
- body="Futhark Coat +1", hands="Kurys Gloves", ring1="Dark Ring", ring2="Dark Ring",
- back="Mollusca Mantle", waist="Lieutenant's Sash", legs="Mes'yohi Slacks", feet="Erilaz Greaves +1",}
- sets.engaged.Tank = {ammo="Amar Cluster",
- head="Erilaz Galea +1",
- neck="Loricate Torque +1",ear1="Ethereal Earring", ear2="Genmei Earring",
- body="Futhark Coat +1",
- hands={ name="Herculean Gloves", augments={'Accuracy+30','Phys. dmg. taken -3%','AGI+1','Attack+3',}},
- legs="Eri. Leg Guards +1",
- feet="Erilaz Greaves +1",
- ring1="Dark Ring", ring2="Dark Ring",
- waist="Flume Belt",
- back="Shadow Mantle"}
- sets.engaged.repulse = {}
- sets.engaged.Aettir = {main="Aettir"}
- sets.engaged.Fettering = {main="Fettering Blade"}
- end
- ------------------------------------------------------------------
- -- Action events
- ------------------------------------------------------------------
- -- Run after the default midcast() is done.
- -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
- function job_post_midcast(spell, action, spellMap, eventArgs)
- if spell.english == 'Lunge' or spell.english == 'Swipe' then
- local obi = get_obi(get_rune_obi_element())
- if obi then
- equip({waist=obi})
- end
- end
- end
- function job_aftercast(spell)
- if not spell.interrupted then
- if spell.type == 'Rune' then
- update_timers(spell)
- elseif spell.name == "Lunge" or spell.name == "Gambit" or spell.name == 'Rayke' then
- reset_timers()
- elseif spell.name == "Swipe" then
- send_command(trim(1))
- end
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Customization hooks for idle and melee sets, after they've been automatically constructed.
- -------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------
- -- General hooks for other events.
- -------------------------------------------------------------------------------------------------------------------
- function job_precast(spell)
- if info.RuneEnchantment:contains(spell.english) then
- equip(sets.enmity)
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User code that supplements self-commands.
- -------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------
- -- Utility functions specific to this job.
- -------------------------------------------------------------------------------------------------------------------
- -- Select default macro book on initial load or subjob change.
- function select_default_macro_book()
- -- Default macro set/book
- if player.sub_job == 'WAR' then
- set_macro_page(4, 14)
- elseif player.sub_job == 'NIN' then
- set_macro_page(4, 14)
- elseif player.sub_job == 'SAM' then
- set_macro_page(4, 14)
- else
- set_macro_page(4, 14)
- end
- end
- function get_rune_obi_element()
- weather_rune = buffactive[elements.rune_of[world.weather_element] or '']
- day_rune = buffactive[elements.rune_of[world.day_element] or '']
- local found_rune_element
- if weather_rune and day_rune then
- if weather_rune > day_rune then
- found_rune_element = world.weather_element
- else
- found_rune_element = world.day_element
- end
- elseif weather_rune then
- found_rune_element = world.weather_element
- elseif day_rune then
- found_rune_element = world.day_element
- end
- return found_rune_element
- end
- function get_obi(element)
- if element and elements.obi_of[element] then
- return (player.inventory[elements.obi_of[element]] or player.wardrobe[elements.obi_of[element]]) and elements.obi_of[element]
- end
- end
- ------------------------------------------------------------------
- -- Timer manipulation
- ------------------------------------------------------------------
- -- Add a new run to the custom timers, and update index values for existing timers.
- function update_timers(spell)
- local expires_time = os.time() + 300
- local entry_index = rune_count(spell.name) + 1
- local entry = {rune=spell.name, index=entry_index, expires=expires_time}
- rune_timers:append(entry)
- local cmd_queue = create_timer(entry).. ';wait 0.05;'
- cmd_queue = cmd_queue .. trim()
- -- add_to_chat(123,'cmd_queue='..cmd_queue)
- send_command(cmd_queue)
- end
- -- Get the command string to create a custom timer for the provided entry.
- function create_timer(entry)
- local timer_name = '"Rune: ' .. entry.rune .. '-' .. tostring(entry.index) .. '"'
- local duration = entry.expires - os.time()
- return 'timers c ' .. timer_name .. ' ' .. tostring(duration) .. ' down'
- end
- -- Get the command string to delete a custom timer for the provided entry.
- function delete_timer(entry)
- local timer_name = '"Rune: ' .. entry.rune .. '-' .. tostring(entry.index) .. '"'
- return 'timers d ' .. timer_name .. ''
- end
- -- Reset all timers
- function reset_timers()
- local cmd_queue = ''
- for index,entry in pairs(rune_timers) do
- cmd_queue = cmd_queue .. delete_timer(entry) .. ';wait 0.05;'
- end
- rune_timers:clear()
- send_command(cmd_queue)
- end
- -- Get a count of the number of runes of a given type
- function rune_count(rune)
- local count = 0
- local current_time = os.time()
- for _,entry in pairs(rune_timers) do
- if entry.rune == rune and entry.expires > current_time then
- count = count + 1
- end
- end
- return count
- end
- -- Remove the oldest rune(s) from the table, until we're below the max_runes limit.
- -- If given a value n, remove n runes from the table.
- function trim(n)
- local cmd_queue = ''
- local to_remove = n or (rune_timers:length() - max_runes)
- while to_remove > 0 and rune_timers:length() > 0 do
- local oldest
- for index,entry in pairs(rune_timers) do
- if oldest == nil or entry.expires < rune_timers[oldest].expires then
- oldest = index
- end
- end
- cmd_queue = cmd_queue .. prune(rune_timers[oldest].rune)
- to_remove = to_remove - 1
- end
- return cmd_queue
- end
- -- Drop the index of all runes of a given type.
- -- If the index drops to 0, it is removed from the table.
- function prune(rune)
- local cmd_queue = ''
- for index,entry in pairs(rune_timers) do
- if entry.rune == rune then
- cmd_queue = cmd_queue .. delete_timer(entry) .. ';wait 0.05;'
- entry.index = entry.index - 1
- end
- end
- for index,entry in pairs(rune_timers) do
- if entry.rune == rune then
- if entry.index == 0 then
- rune_timers[index] = nil
- else
- cmd_queue = cmd_queue .. create_timer(entry) .. ';wait 0.05;'
- end
- end
- end
- return cmd_queue
- end
- ------------------------------------------------------------------
- -- Reset events
- ------------------------------------------------------------------
- windower.raw_register_event('zone change',reset_timers)
- windower.raw_register_event('logout',reset_timers)
- windower.raw_register_event('status change',function(new, old)
- if gearswap.res.statuses[new].english == 'Dead' then
- reset_timers()
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement