diff --git a/src/APL/APL.lua b/src/APL/APL.lua index 95d2ebe..49f0659 100644 --- a/src/APL/APL.lua +++ b/src/APL/APL.lua @@ -1,5 +1,4 @@ -- Document with emmy lua: https://emmylua.github.io/ - -- Create an APL trait for the APL class ---@class APLTrait local APLTrait = {} @@ -55,7 +54,7 @@ end ---@param ... APLTrait ---@return APLActor function APLActor:AddTraits(...) - for _, trait in ipairs({ ... }) do + for _, trait in ipairs({...}) do table.insert(self.traits, trait) end @@ -85,13 +84,11 @@ function APLActor:Execute() -- If the actor is a sequencer we don't want to continue executing the APL if the sequencer is not finished if self:GetActor().sequencer then if self:GetActor().condition and self:GetActor().condition() and not self:GetActor().sequencer:Finished() then - print("Execute?") self:GetActor().sequencer:Execute() return true end if not self:GetActor().condition and not self:GetActor().sequencer:Finished() then - print("Execute?") self:GetActor().sequencer:Execute() return true end @@ -111,13 +108,12 @@ function APLActor:Execute() if self:GetActor().condition then -- print("Bastion: APL:Execute: Condition for spell " .. self:GetActor().spell:GetName()) self:GetActor().spell:CastableIf(self:GetActor().castableFunc):OnCast(self:GetActor().onCastFunc):Cast( - self:GetActor().target, - self:GetActor().condition) + self:GetActor().target, self:GetActor().condition) end -- print("Bastion: APL:Execute: No condition for spell " .. self:GetActor().spell:GetName()) - self:GetActor().spell:CastableIf(self:GetActor().castableFunc):OnCast(self:GetActor().onCastFunc):Cast(self - :GetActor().target) + self:GetActor().spell:CastableIf(self:GetActor().castableFunc):OnCast(self:GetActor().onCastFunc):Cast( + self:GetActor().target) end if self:GetActor().item then if self:GetActor().condition then @@ -189,7 +185,11 @@ end ---@param cb fun(...):any ---@return APLActor function APL:AddVariable(name, cb) - local actor = APLActor:New({ variable = name, cb = cb, _apl = self }) + local actor = APLActor:New({ + variable = name, + cb = cb, + _apl = self + }) table.insert(self.apl, actor) return actor end @@ -199,7 +199,10 @@ end ---@param cb fun(...):any ---@return APLActor function APL:AddAction(action, cb) - local actor = APLActor:New({ action = action, cb = cb }) + local actor = APLActor:New({ + action = action, + cb = cb + }) table.insert(self.apl, actor) return actor end @@ -234,7 +237,12 @@ function APL:AddItem(item, condition) local usableFunc = item.UsableIfFunc local target = item:GetTarget() - local actor = APLActor:New({ item = item, condition = condition, usableFunc = usableFunc, target = target }) + local actor = APLActor:New({ + item = item, + condition = condition, + usableFunc = usableFunc, + target = target + }) table.insert(self.apl, actor) @@ -249,7 +257,10 @@ function APL:AddAPL(apl, condition) if not condition then error("Bastion: APL:AddAPL: No condition for APL " .. apl.name) end - local actor = APLActor:New({ apl = apl, condition = condition }) + local actor = APLActor:New({ + apl = apl, + condition = condition + }) table.insert(self.apl, actor) return actor end @@ -259,12 +270,10 @@ function APL:Execute() for _, actor in ipairs(self.apl) do if actor:HasTraits() and actor:Evaluate() then if actor:Execute() then - print("BREAQK", actor) break end else if actor:Execute() then - print("BREAQK", actor) break end end @@ -276,7 +285,10 @@ end ---@param condition fun(...):boolean ---@return APLActor function APL:AddSequence(sequencer, condition) - local actor = APLActor:New({ sequencer = sequencer, condition = condition }) + local actor = APLActor:New({ + sequencer = sequencer, + condition = condition + }) table.insert(self.apl, actor) return actor end diff --git a/src/Aura/Aura.lua b/src/Aura/Aura.lua index 72bf052..056d488 100644 --- a/src/Aura/Aura.lua +++ b/src/Aura/Aura.lua @@ -1,5 +1,4 @@ -- Document with emmy lua: https://emmylua.github.io/ - local Tinkr, Bastion = ... -- Create a new Aura class @@ -66,19 +65,18 @@ function Aura:New(unit, index, type) timeMod = 0, index = nil, - type = nil, + type = nil } if self.aura.spellId then - Bastion.SpellBook:GetSpell(self.aura.spellId) + Bastion.Globals.SpellBook:GetSpell(self.aura.spellId) end return self end - local name, icon, count, dispelType, duration, expirationTime, source, isStealable, nameplateShowPersonal, - spellId, canApplyAura, isBossDebuff, castByPlayer, nameplateShowAll, timeMod = UnitAura(unit:GetOMToken(), index, - type) + local name, icon, count, dispelType, duration, expirationTime, source, isStealable, nameplateShowPersonal, spellId, + canApplyAura, isBossDebuff, castByPlayer, nameplateShowAll, timeMod = UnitAura(unit:GetOMToken(), index, type) local self = setmetatable({}, Aura) self.aura = { @@ -100,10 +98,10 @@ function Aura:New(unit, index, type) auraInstanceID = nil, index = index, - type = type, + type = type } if self.aura.spellId then - Bastion.SpellBook:GetSpell(self.aura.spellId) + Bastion.Globals.SpellBook:GetSpell(self.aura.spellId) end return self end @@ -132,11 +130,11 @@ function Aura:CreateFromUnitAuraInfo(unitAuraInfo) auraInstanceID = unitAuraInfo.auraInstanceID, index = nil, - type = unitAuraInfo.isHarmful and "HARMFUL" or "HELPFUL", + type = unitAuraInfo.isHarmful and "HARMFUL" or "HELPFUL" } -- Register spell in spellbook - Bastion.SpellBook:GetSpell(self.aura.spellId) + Bastion.Globals.SpellBook:GetSpell(self.aura.spellId) return self end @@ -239,7 +237,7 @@ end -- Get the auras spell id ---@return Spell function Aura:GetSpell() - return Bastion.SpellBook:GetSpell(self.aura.spellId) + return Bastion.Globals.SpellBook:GetSpell(self.aura.spellId) end -- Get the auras can apply aura status diff --git a/src/Item/Item.lua b/src/Item/Item.lua index 72c8ca0..fe0d8ef 100644 --- a/src/Item/Item.lua +++ b/src/Item/Item.lua @@ -54,7 +54,7 @@ function Item:New(id) local name, spellID = GetItemSpell(self:GetID()) if spellID then self.spellID = spellID - Bastion.SpellBook:GetSpell(spellID) + Bastion.Globals.SpellBook:GetSpell(spellID) end return self @@ -302,7 +302,7 @@ end -- Get the last use time ---@return number function Item:GetLastUseTime() - return Bastion.SpellBook:GetSpell(self:GetID()):GetLastCastTime() + return Bastion.Globals.SpellBook:GetSpell(self:GetID()):GetLastCastTime() end -- Get time since last use @@ -430,7 +430,7 @@ end ---@return Spell | nil function Item:GetSpell() if self.spellID then - return Bastion.SpellBook:GetSpell(self.spellID) + return Bastion.Globals.SpellBook:GetSpell(self.spellID) end return nil diff --git a/src/MythicPlusUtils/MythicPlusUtils.lua b/src/MythicPlusUtils/MythicPlusUtils.lua index f84ee36..f3222b5 100644 --- a/src/MythicPlusUtils/MythicPlusUtils.lua +++ b/src/MythicPlusUtils/MythicPlusUtils.lua @@ -430,7 +430,7 @@ function MythicPlusUtils:New() } } - Bastion.EventManager:RegisterWoWEvent('UNIT_AURA', function(unit, auras) + Bastion.Globals.EventManager:RegisterWoWEvent('UNIT_AURA', function(unit, auras) if not self.debuffLogging then return end @@ -453,7 +453,7 @@ function MythicPlusUtils:New() end end) - Bastion.EventManager:RegisterWoWEvent('UNIT_SPELLCAST_START', function(unitTarget, castGUID, spellID) + Bastion.Globals.EventManager:RegisterWoWEvent('UNIT_SPELLCAST_START', function(unitTarget, castGUID, spellID) if not self.castLogging then return end @@ -472,7 +472,7 @@ function MythicPlusUtils:New() ]], true) end) - Bastion.EventManager:RegisterWoWEvent('UNIT_SPELLCAST_CHANNEL_START', function(unitTarget, castGUID, spellID) + Bastion.Globals.EventManager:RegisterWoWEvent('UNIT_SPELLCAST_CHANNEL_START', function(unitTarget, castGUID, spellID) if not self.castLogging then return end diff --git a/src/Sequencer/Sequencer.lua b/src/Sequencer/Sequencer.lua index bb688e3..be1c567 100644 --- a/src/Sequencer/Sequencer.lua +++ b/src/Sequencer/Sequencer.lua @@ -1,5 +1,4 @@ -- Create a sequencer class that takes a table of actions and executes them in order - ---@class Sequencer ---@field resetCondition fun(): boolean ---@field abortCondition fun(): boolean @@ -45,12 +44,10 @@ end ---@return boolean function Sequencer:Next() if self:Finished() then - print("Its finished?") return false end local action = self.actions[self.index] - print("Attempting action: " .. self.index .. "") if action(self) then self.index = self.index + 1 return true diff --git a/src/Unit/Unit.lua b/src/Unit/Unit.lua index 0640dcb..8c10a46 100644 --- a/src/Unit/Unit.lua +++ b/src/Unit/Unit.lua @@ -422,7 +422,7 @@ function Unit:GetCastingOrChannelingSpell() end if name then - return Bastion.SpellBook:GetSpell(spellId) + return Bastion.Globals.SpellBook:GetSpell(spellId) end return nil @@ -926,12 +926,12 @@ end -- IsStealthed ---@return boolean function Unit:IsStealthed() - local Stealth = Bastion.SpellBook:GetSpell(1784) - local Vanish = Bastion.SpellBook:GetSpell(1856) - local ShadowDance = Bastion.SpellBook:GetSpell(185422) - local Subterfuge = Bastion.SpellBook:GetSpell(115192) - local Shadowmeld = Bastion.SpellBook:GetSpell(58984) - local Sepsis = Bastion.SpellBook:GetSpell(328305) + local Stealth = Bastion.Globals.SpellBook:GetSpell(1784) + local Vanish = Bastion.Globals.SpellBook:GetSpell(1856) + local ShadowDance = Bastion.Globals.SpellBook:GetSpell(185422) + local Subterfuge = Bastion.Globals.SpellBook:GetSpell(115192) + local Shadowmeld = Bastion.Globals.SpellBook:GetSpell(58984) + local Sepsis = Bastion.Globals.SpellBook:GetSpell(328305) return self:GetAuras():FindAny(Stealth) or self:GetAuras():FindAny(ShadowDance) end @@ -959,7 +959,7 @@ end ---@return nil function Unit:WatchForSwings() - Bastion.EventManager:RegisterWoWEvent("COMBAT_LOG_EVENT_UNFILTERED", function() + Bastion.Globals.EventManager:RegisterWoWEvent("COMBAT_LOG_EVENT_UNFILTERED", function() local _, subtype, _, sourceGUID, sourceName, _, _, destGUID, destName, destFlags, _, spellID, spellName, _, amount, interrupt, a, b, c, d, offhand, multistrike = CombatLogGetCurrentEventInfo() diff --git a/src/_bastion.lua b/src/_bastion.lua index 0341772..b224ac8 100644 --- a/src/_bastion.lua +++ b/src/_bastion.lua @@ -10,6 +10,8 @@ function Bastion.require(class) return require("scripts/bastion/src/" .. class .. "/" .. class, Bastion) end +Bastion.Globals = {} + ---@type ClassMagic Bastion.ClassMagic = Bastion.require("ClassMagic") ---@type List @@ -43,15 +45,18 @@ Bastion.UnitManager = Bastion.require("UnitManager"):New() ---@type ObjectManager Bastion.ObjectManager = Bastion.require("ObjectManager"):New() ---@type EventManager -Bastion.EventManager = Bastion.require("EventManager"):New() +Bastion.EventManager = Bastion.require("EventManager") +Bastion.Globals.EventManager = Bastion.EventManager:New() ---@type Spell Bastion.Spell = Bastion.require("Spell") ---@type SpellBook Bastion.SpellBook = Bastion.require("SpellBook") +Bastion.Globals.SpellBook = Bastion.SpellBook:New() ---@type Item Bastion.Item = Bastion.require("Item") ---@type ItemBook Bastion.ItemBook = Bastion.require("ItemBook") +Bastion.Globals.ItemBook = Bastion.ItemBook:New() ---@type AuraTable Bastion.AuraTable = Bastion.require("AuraTable") ---@type Class @@ -64,11 +69,13 @@ Bastion.CombatTimer = Bastion.Timer:New('combat') Bastion.MythicPlusUtils = Bastion.require("MythicPlusUtils"):New() ---@type NotificationsList Bastion.Notifications = Bastion.NotificationsList:New() + local LIBRARIES = {} local MODULES = {} + Bastion.Enabled = false -Bastion.EventManager:RegisterWoWEvent('UNIT_AURA', function(unit, auras) +Bastion.Globals.EventManager:RegisterWoWEvent('UNIT_AURA', function(unit, auras) local u = Bastion.UnitManager[unit] if u then @@ -76,7 +83,7 @@ Bastion.EventManager:RegisterWoWEvent('UNIT_AURA', function(unit, auras) end end) -Bastion.EventManager:RegisterWoWEvent("UNIT_SPELLCAST_SUCCEEDED", function(...) +Bastion.Globals.EventManager:RegisterWoWEvent("UNIT_SPELLCAST_SUCCEEDED", function(...) local unit, castGUID, spellID = ... local spell = Bastion.SpellBook:GetIfRegistered(spellID) @@ -92,7 +99,8 @@ end) local pguid = UnitGUID("player") local missed = {} -Bastion.EventManager:RegisterWoWEvent("COMBAT_LOG_EVENT_UNFILTERED", function() + +Bastion.Globals.EventManager:RegisterWoWEvent("COMBAT_LOG_EVENT_UNFILTERED", function() local args = {CombatLogGetCurrentEventInfo()} local subEvent = args[2] @@ -207,6 +215,7 @@ Command:Register('debug', 'Toggle debug mode on/off', function() Bastion:Print("Debug mode disabled") end end) + Command:Register('dumpspells', 'Dump spells to a file', function() local i = 1 local rand = math.random(100000, 999999) @@ -284,7 +293,6 @@ end ---@param library Library function Bastion:RegisterLibrary(library) LIBRARIES[library.name] = library - print("Registered library", library.name) end function Bastion:CheckLibraryDependencies()