diff options
Diffstat (limited to 'Data/BuiltIn/Libraries/lua-addons/addons/bluguide/bluguide.lua')
-rw-r--r-- | Data/BuiltIn/Libraries/lua-addons/addons/bluguide/bluguide.lua | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/bluguide/bluguide.lua b/Data/BuiltIn/Libraries/lua-addons/addons/bluguide/bluguide.lua new file mode 100644 index 0000000..e541b98 --- /dev/null +++ b/Data/BuiltIn/Libraries/lua-addons/addons/bluguide/bluguide.lua @@ -0,0 +1,290 @@ +traits = require ('res/traits') +buttons = require ('ui/buttons') +spellinfo = require ('res/spellinfo') +pages = require("ui/pages") +traitboxes = require("ui/traitboxes") +spellboxes = require("ui/spellboxes") +setspells = require("masterlist") + +_addon.version = '1.2' +_addon.name = 'bluGuide' +_addon.author = 'Anissa of Cerberus' + +local button_settings = { + text = { size = 15, font = 'Arial',}, + bg = { alpha = 200, red = 0, green = 100, blue = 100, visible = false }, +} + +windower.register_event('load',function () + + giftexempttraits = { + ['Double/Triple Attack'] = true, + ['Auto Refresh'] = true, + ['Gilfinder/Treasure Hunter'] = true, + } + lineheight = 14 + updatelist = {} + setspells.create(30, 50, update) + build_columns() + + local player = windower.ffxi.get_player() + job = player.main_job + sub = player.sub_job + + traitsbutton = buttons.new("Traits", button_settings) + traitsbutton.pos(80, 360) + traitsbutton.show() + traitsbutton.left_click = show_traits + traitsbutton.hover_on = function() traitsbutton.bg_visible(true) end + traitsbutton.hover_off = function() traitsbutton.bg_visible(false) end + + utilbutton = buttons.new("Utility", button_settings) + utilbutton.pos(80, 390) + utilbutton.show() + utilbutton.left_click = show_utilities + utilbutton.hover_on = function() utilbutton.bg_visible(true) end + utilbutton.hover_off = function() utilbutton.bg_visible(false) end + + scbutton = buttons.new("Damage", button_settings) + scbutton.pos(80, 420) + scbutton.show() + scbutton.left_click = show_skillchain + scbutton.hover_on = function() scbutton.bg_visible(true) end + scbutton.hover_off = function() scbutton.bg_visible(false) end + + procsbutton = buttons.new("Procs", button_settings) + procsbutton.pos(80, 450) + procsbutton.show() + procsbutton.left_click = show_procs + procsbutton.hover_on = function() procsbutton.bg_visible(true) end + procsbutton.hover_off = function() procsbutton.bg_visible(false) end + + closebutton = buttons.new("Close", button_settings) + closebutton.pos(80, 480) + closebutton.show() + closebutton.left_click = close + closebutton.hover_on = function() closebutton.bg_visible(true) end + closebutton.hover_off = function() closebutton.bg_visible(false) end +end) + +function update() + for _, v in pairs(updatelist) do + v:update() + end +end + +windower.register_event('job change', function(new, old) + jobchange = coroutine.schedule(check_job, 5) +end) + +function check_job() + local player = windower.ffxi.get_player() + local t = {} + if player.main_job == "BLU" then + if job ~= "BLU" then + print("Reloading bluGuide. Changed job/subjob combo.") + windower.send_command('lua reload bluguide') + end + elseif player.sub_job == "BLU" then + if sub ~= "BLU" then + print("Reloading bluGuide. Changed job/subjob combo.") + windower.send_command('lua reload bluguide') + end + else + print("Unloading bluGuide. Invalid job/subjob combo.") + windower.send_command('lua unload bluguide') + end +end + +function build_columns() + traitpage = pages.new(260, 50) + + traitpage:add(traitboxes.new(traits['Dual Wield'])) + traitpage:add(traitboxes.new(traits['Double/Triple Attack'])) + traitpage:add(traitboxes.new(traits['Attack Bonus'])) + traitpage:add(traitboxes.new(traits['Accuracy Bonus'])) + traitpage:add(traitboxes.new(traits['Store TP'])) + traitpage:add(traitboxes.new(traits['Skillchain Bonus'])) + traitpage:add(traitboxes.new(traits['Critical Attack Bonus'])) + traitpage:add(traitboxes.new(traits['Magic Attack Bonus'])) + traitpage:add(traitboxes.new(traits['Magic Accuracy Bonus'])) + traitpage:add(traitboxes.new(traits['Fast Cast'])) + traitpage:add(traitboxes.new(traits['Magic Burst Bonus'])) + traitpage:add(traitboxes.new(traits['Conserve MP'])) + traitpage:add(traitboxes.new(traits['Auto Refresh'])) + traitpage:add(traitboxes.new(traits['Clear Mind'])) + traitpage:add(traitboxes.new(traits['Max MP Boost'])) + traitpage:add(traitboxes.new(traits['Counter'])) + traitpage:add(traitboxes.new(traits['Defense Bonus'])) + traitpage:add(traitboxes.new(traits['Magic Defense Bonus'])) + traitpage:add(traitboxes.new(traits['Magic Evasion Bonus'])) + traitpage:add(traitboxes.new(traits['Evasion Bonus'])) + traitpage:add(traitboxes.new(traits['Inquartata'])) + traitpage:add(traitboxes.new(traits['Auto Regen'])) + traitpage:add(traitboxes.new(traits['Max HP Boost'])) + traitpage:add(traitboxes.new(traits['Tenacity'])) + traitpage:add(traitboxes.new(traits['Resist Gravity'])) + traitpage:add(traitboxes.new(traits['Resist Silence'])) + traitpage:add(traitboxes.new(traits['Resist Sleep'])) + traitpage:add(traitboxes.new(traits['Resist Slow'])) + traitpage:add(traitboxes.new(traits['Gilfinder/TH'])) + traitpage:add(traitboxes.new(traits['Beast Killer'])) + traitpage:add(traitboxes.new(traits['Lizard Killer'])) + traitpage:add(traitboxes.new(traits['Undead Killer'])) + traitpage:add(traitboxes.new(traits['Plantoid Killer'])) + traitpage:add(traitboxes.new(traits['Rapid Shot'])) + traitpage:add(traitboxes.new(traits['Zanshin'])) + + updatelist[#updatelist+1] = traitpage + traitpage:show() + + buffpage = pages.new(260, 50) + buffpage:add(spellboxes.new('Cure', function(s) return s.effect['Cure'] end)) + buffpage:add(spellboxes.new('Erase', function(s) return s.effect['Erase'] end)) + buffpage:add(spellboxes.new('Haste', function(s) return s.effect['Haste'] end)) + buffpage:add(spellboxes.new('Attack Boost', function(s) return s.effect['Attack Boost'] end)) + buffpage:add(spellboxes.new('Refresh', function(s) return s.effect['Refresh'] end)) + buffpage:add(spellboxes.new('Accuracy Boost', function(s) return s.effect['Accuracy Boost'] end)) + buffpage:add(spellboxes.new('Magic Attack Boost', function(s) return s.effect['Magic Attack Boost'] end)) + + buffpage:add(spellboxes.new('Blink', function(s) return s.effect['Blink'] end)) + buffpage:add(spellboxes.new('Defense Boost', function(s) return s.effect['Defense Boost'] end)) + buffpage:add(spellboxes.new('Phalanx', function(s) return s.effect['Phalanx'] end)) + buffpage:add(spellboxes.new('Stoneskin', function(s) return s.effect['Stoneskin'] end)) + buffpage:add(spellboxes.new('Spikes', function(s) return s.effect['Spikes'] end)) + buffpage:add(spellboxes.new('Magic Defense Boost', function(s) return s.effect['Magic Defense Boost'] end)) + buffpage:add(spellboxes.new('Evasion Boost', function(s) return s.effect['Evasion Boost'] end)) + buffpage:add(spellboxes.new('Regen', function(s) return s.effect['Regen'] end)) + buffpage:add(spellboxes.new('Counter', function(s) return s.effect['Counter'] end)) + + buffpage:add(spellboxes.new('Sleep', function(s) return s.effect['Sleep'] end)) + buffpage:add(spellboxes.new('Dispel', function(s) return s.effect['Dispel'] end)) + buffpage:add(spellboxes.new('Defense Down', function(s) return s.effect['Defense Down'] end)) + buffpage:add(spellboxes.new('Evasion Down', function(s) return s.effect['Evasion Down'] end)) + buffpage:add(spellboxes.new('Magic Defense Down', function(s) return s.effect['Magic Defense Down'] end)) + + buffpage:add(spellboxes.new('Aspir', function(s) return s.effect['Aspir'] end)) + buffpage:add(spellboxes.new('Drain', function(s) return s.effect['Drain'] end)) + buffpage:add(spellboxes.new('Poison', function(s) return s.effect['Poison'] end)) + buffpage:add(spellboxes.new('Stun', function(s) return s.effect['Stun'] end)) + buffpage:add(spellboxes.new('Terror', function(s) return s.effect['Terror'] end)) + + buffpage:add(spellboxes.new('Silence', function(s) return s.effect['Silence'] end)) + buffpage:add(spellboxes.new('Slow', function(s) return s.effect['Slow'] end)) + buffpage:add(spellboxes.new('Paralyze', function(s) return s.effect['Paralyze'] end)) + buffpage:add(spellboxes.new('Reduce TP', function(s) return s.effect['Reduce TP'] end)) + buffpage:add(spellboxes.new('Plague', function(s) return s.effect['Plague'] end)) + + buffpage:add(spellboxes.new('Bind', function(s) return s.effect['Bind'] end)) + buffpage:add(spellboxes.new('Gravity', function(s) return s.effect['Gravity'] end)) + buffpage:add(spellboxes.new('Petrify', function(s) return s.effect['Petrify'] end)) + buffpage:add(spellboxes.new('Flash', function(s) return s.effect['Flash'] end)) + buffpage:add(spellboxes.new('Blind', function(s) return s.effect['Blind'] end)) + buffpage:add(spellboxes.new('Accuracy Down', function(s) return s.effect['Accuracy Down'] end)) + + buffpage:add(spellboxes.new('Bio', function(s) return s.effect['Bio'] end)) + buffpage:add(spellboxes.new('Doom', function(s) return s.effect['Doom'] end)) + buffpage:add(spellboxes.new('Frost', function(s) return s.effect['Frost'] end)) + buffpage:add(spellboxes.new('Burn', function(s) return s.effect['Burn'] end)) + buffpage:add(spellboxes.new('Drown', function(s) return s.effect['Drown'] end)) + buffpage:add(spellboxes.new('Vit Down', function(s) return s.effect['Vit Down'] end)) + buffpage:add(spellboxes.new('Int Down', function(s) return s.effect['Int Down'] end)) + buffpage:add(spellboxes.new('Str Down', function(s) return s.effect['Str Down'] end)) + buffpage:add(spellboxes.new('Dex Down', function(s) return s.effect['Dex Down'] end)) + + updatelist[#updatelist+1] = buffpage + + procpage = pages.new(260, 50) + procpage:add(spellboxes.new('Voidwatch - Fire', function(s) return s.Voidwatch ~= nil and s.element == 0 end)) + procpage:add(spellboxes.new('Voidwatch - Ice', function(s) return s.Voidwatch and s.element == 1 end)) + procpage:add(spellboxes.new('Voidwatch - Wind', function(s) return s.Voidwatch and s.element == 2 end)) + procpage:add(spellboxes.new('Voidwatch - Earth', function(s) return s.Voidwatch and s.element == 3 end)) + procpage:add(spellboxes.new('Voidwatch - Thunder', function(s) return s.Voidwatch and s.element == 4 end)) + procpage:add(spellboxes.new('Voidwatch - Water', function(s) return s.Voidwatch and s.element == 5 end)) + procpage:add(spellboxes.new('Voidwatch - Light', function(s) return s.Voidwatch and s.element == 6 end)) + procpage:add(spellboxes.new('Voidwatch - Dark', function(s) return s.Voidwatch and s.element == 7 end)) + procpage:add(spellboxes.new('Abyssea', function(s) return s.Abyssea end)) + updatelist[#updatelist+1] = procpage + + scpage = pages.new(260, 50) + scpage:add(spellboxes.new('Gravitation', function(s) return s.SCA == "Gravitation" or s.SCB == "Gravitation" end, function(s) if s.SCB == "Gravitation" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Fusion', function(s) return s.SCA == "Fusion" or s.SCB == "Fusion" end, function(s) if s.SCB == "Fusion" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Distortion', function(s) return s.SCA == "Distortion" or s.SCB == "Distortion" end, function(s) if s.SCB == "Distortion" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Fragmentation', function(s) return s.SCA == "Fragmentation" or s.SCB == "Fragmentation" end, function(s) if s.SCB == "Fragmentation" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Transfixion', function(s) return s.SCA == "Transfixion" or s.SCB == "Transfixion" end, function(s) if s.SCB == "Transfixion" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Compression', function(s) return s.SCA == "Compression" or s.SCB == "Compression" end, function(s) if s.SCB == "Compression" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Reverberation', function(s) return s.SCA == "Reverberation" or s.SCB == "Reverberation" end, function(s) if s.SCB == "Reverberation" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Induration', function(s) return s.SCA == "Induration" or s.SCB == "Induration" end, function(s) if s.SCB == "Induration" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Impaction', function(s) return s.SCA == "Impaction" or s.SCB == "Impaction" end, function(s) if s.SCB == "Impaction" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Liquifaction', function(s) return s.SCA == "Liquifaction" or s.SCB == "Liquifaction" end, function(s) if s.SCB == "Liquifaction" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Detonation', function(s) return s.SCA == "Detonation" or s.SCB == "Detonation" end, function(s) if s.SCB == "Detonation" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + scpage:add(spellboxes.new('Scission', function(s) return s.SCA == "Scission" or s.SCB == "Scission" end, function(s) if s.SCB == "Scission" then return s.name.." ("..string.sub(s.SCA, 1, 3)..")" end end)) + + scpage:add(spellboxes.new("Fire", function(s) return s.Nuke and s.element == 0 end)) + scpage:add(spellboxes.new("Ice", function(s) return s.Nuke and s.element == 1 end)) + scpage:add(spellboxes.new("Wind", function(s) return s.Nuke and s.element == 2 end)) + scpage:add(spellboxes.new("Earth", function(s) return s.Nuke and s.element == 3 end)) + scpage:add(spellboxes.new("Thunder", function(s) return s.Nuke and s.element == 4 end)) + scpage:add(spellboxes.new("Water", function(s) return s.Nuke and s.element == 5 end)) + scpage:add(spellboxes.new("Light", function(s) return s.Nuke and s.element == 6 end)) + scpage:add(spellboxes.new("Dark", function(s) return s.Nuke and s.element == 7 end)) + updatelist[#updatelist+1] = scpage +end + +function show_traits() + traitpage:show() + buffpage:hide() + procpage:hide() + scpage:hide() +end + +function show_utilities() + traitpage:hide() + buffpage:show() + procpage:hide() + scpage:hide() +end + +function show_procs() + traitpage:hide() + buffpage:hide() + procpage:show() + scpage:hide() +end + +function show_skillchain() + traitpage:hide() + buffpage:hide() + procpage:hide() + scpage:show() +end + +function close() + windower.send_command('lua unload bluguide') +end + +--Copyright © 2015, Anissa +--All rights reserved. + +--Redistribution and use in source and binary forms, with or without +--modification, are permitted provided that the following conditions are met: + +-- * Redistributions of source code must retain the above copyright +-- notice, this list of conditions and the following disclaimer. +-- * Redistributions in binary form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- * Neither the name of bluGuide nor the +-- names of its contributors may be used to endorse or promote products +-- derived from this software without specific prior written permission. + +--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +--ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +--WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +--DISCLAIMED. IN NO EVENT SHALL ANISSA BE LIABLE FOR ANY +--DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +--(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +--LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +--ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +--(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |