68 lines
1.6 KiB
Lua

--- @class Effect
--- @field tag string
local effect = {}
effect.__index = effect
function effect:beforeBirth() end
function effect:afterBirth() end
function effect:beforeDeath() end
function effect:afterDeath() end
--- @param owner Character
--- @return Task<nil>|nil
function effect:beforeTurn(owner) end
function effect:afterTurn() end
function effect:beforeCast() end
function effect:afterCast() end
--- @param damage integer
function effect:beforeAttack(damage) end
function effect:afterAttack() end
--- @param damage integer
function effect:beforeDamage(damage) end
function effect:afterDamage() end
--- @param amountHp integer кол-во хп для регена
function effect:beforeRegeneration(amountHp) end
function effect:afterRegeneration() end
--- @param other Effect
--- @return Effect|nil
function effect:sum(other) end
function effect:update(dt) end
function effect:draw() end
--- @todo переделать дату и прочее
--- @param data {tag: string, beforeBirth: fun(owner: Character)?, beforeDeath: fun(owner: Character)?, beforeTurn: (fun(owner: Character): Task<nil>|nil), afterTurn: (fun(owner: Character): Task<nil>|nil), sum: fun(owner: Character)?}
--- @return Effect
local function new(data)
local newEffect = setmetatable({
tag = data.tag,
beforeBirth = data.beforeBirth,
beforeDeath = data.beforeDeath,
-- beforeTurn = data.beforeTurn,
afterTurn = data.afterTurn,
sum = data.sum
}, effect)
function newEffect:beforeTurn(owner)
return data.beforeTurn(owner)
end
return newEffect
end
return { new = new }