--- @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 function effect:beforeTurn() 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, 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 }