69 lines
1.7 KiB
Lua
69 lines
1.7 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 }
|