41 lines
975 B
Lua

--- @class Effect
--- @field tag string
local effect = {}
effect.__index = effect
--- @param owner Character
function effect:onBirth(owner)
end
--- @param owner Character
function effect:onDeath(owner) end
--- @param owner Character
function effect:onStartTurn(owner) end
--- @param owner Character
function effect:onEndTurn(owner) end
--- @param other Effect
--- @return Effect|nil
function effect:sum(other) end
function effect:update(dt) end
function effect:draw() end
--- @param data {tag: string, onBirth: fun(owner: Character)?, onDeath: fun(owner: Character)?, onStartTurn: fun(owner: Character)?, onEndTurn: fun(owner: Character)?, sum: fun(owner: Character)?}
--- @return Effect
local function new(data)
return setmetatable({
tag = data.tag,
onBirth = data.onBirth,
onDeath = data.onDeath,
onStartTurn = data.onStartTurn,
onEndTurn = data.onEndTurn,
sum = data.sum
}, effect)
end
return { new = new }