Compare commits

..

No commits in common. 'add_traits' and 'main' have entirely different histories.

  1. 34
      src/Spell/Spell.lua
  2. 23
      src/SpellTrait/SpellTrait.lua
  3. 2
      src/_bastion.lua

@ -13,7 +13,14 @@ local Spell = {
conditions = {}, conditions = {},
target = false, target = false,
release_at = false, release_at = false,
traits = {}, traits = {
ignoreChanneling = false,
ignoreFacing = false,
ignoreLoS = false,
ignoreGCD = false,
ignoreMoving = false,
targeted = false
}
} }
local usableExcludes = { local usableExcludes = {
@ -334,10 +341,6 @@ end
-- Check if the spell is castable -- Check if the spell is castable
---@return boolean ---@return boolean
function Spell:Castable() function Spell:Castable()
if #self.traits > 0 then
return self:EvaluateTraits()
end
if self:GetCastableFunction() then if self:GetCastableFunction() then
return self:GetCastableFunction()(self) return self:GetCastableFunction()(self)
end end
@ -698,25 +701,4 @@ function Spell:IsFree()
return self:GetCost() == 0 return self:GetCost() == 0
end end
-- AddTraits
---@param traits table
---@return Spell
function Spell:AddTraits(traits)
for _, trait in ipairs(traits) do
table.insert(self.traits, trait)
end
return self
end
-- EvaluateTraits
---@return boolean
function Spell:EvaluateTraits()
for _, trait in ipairs(self.traits) do
if not trait:Evaluate(self) then
return false
end
end
return true
end
return Spell return Spell

@ -1,23 +0,0 @@
local Tinkr, Bastion = ...
---@class SpellTrait
local SpellTrait = {}
SpellTrait.__index = SpellTrait
-- Constructor
---@param func function
---@return SpellTrait
function SpellTrait:New(func)
local self = setmetatable({}, SpellTrait)
self.func = func
return self
end
-- Evaluate the trait
---@param spell Spell
---@return boolean
function SpellTrait:Evaluate(spell)
return self.func(spell)
end
return SpellTrait

@ -96,8 +96,6 @@ function Bastion.Bootstrap()
---@type SpellBook ---@type SpellBook
Bastion.SpellBook = Bastion.require("SpellBook") Bastion.SpellBook = Bastion.require("SpellBook")
Bastion.Globals.SpellBook = Bastion.SpellBook:New() Bastion.Globals.SpellBook = Bastion.SpellBook:New()
---@type SpellTrait
Bastion.SpellTrait = Bastion.require("SpellTrait")
---@type Item ---@type Item
Bastion.Item = Bastion.require("Item") Bastion.Item = Bastion.require("Item")
---@type ItemBook ---@type ItemBook

Loading…
Cancel
Save