Compare commits

...

2 Commits

Author SHA1 Message Date
d8a89ec24b deleteEffect() function 2026-04-28 00:42:01 +03:00
d587c93222 fix effect returns in constructor (or something like that) 2026-04-28 00:29:44 +03:00
2 changed files with 28 additions and 21 deletions

View File

@ -65,6 +65,18 @@ function behavior:addEffect(effect, stacks, intensity)
end
end
--- Удаляет один эффект по порядку
--- @param effect Effect
function behavior:deleteEffect(effect)
self.effectsProperties[effect] = nil
for i, ef in ipairs(self.effectsPriority) do
if ef == effect then
table.remove(self.effectsPriority, i)
return
end
end
end
--- О ДААА ЭТА ФУНКЦИЯ МЕНЯЕТ СОСТОЯНИЕ О ДАААААА О ДАААААААААА
--- @param effect Effect
--- @param amount integer
@ -74,14 +86,9 @@ function behavior:deleteStacks(effect, amount)
amount -- !!!!!!!!!!!!!!!! <<<<< 21+ only
if self.effectsProperties[effect].stacks <= 0 then
print("[Effects]:", effect.tag, "ДОЛЖЕН БЫТЬ СТЁРТ")
self.effectsProperties[effect] = nil
for i, ef in ipairs(self.effectsPriority) do
if ef == effect then
table.remove(self.effectsPriority, i)
self:deleteEffect(effect)
print("[Effects]:", effect.tag, "СТЁРТ")
end
end
end
end
--- должна вызываться перед смертью персонажа;

View File

@ -137,79 +137,79 @@ local function new(data)
}, effect)
function newEffect:beforeBirth(owner, intensity)
if not data.beforeBirth then return end
if not data.beforeBirth then return taskUtils.wait {}, true end
local task, statement = data.beforeBirth(owner, intensity)
return task, statement
end
function newEffect:afterBirth(owner, intensity)
if not data.afterBirth then return end
if not data.afterBirth then return taskUtils.wait {} end
return data.afterBirth(owner, intensity)
end
function newEffect:beforeDeath(owner, intensity)
if not data.beforeDeath then return end
if not data.beforeDeath then return taskUtils.wait {}, true end
local task, statement = data.beforeBirth(owner, intensity)
return task, statement
end
function newEffect:afterDeath(owner, intensity)
if not data.afterDeath then return end
if not data.afterDeath then return taskUtils.wait {} end
return data.afterDeath(owner, intensity)
end
function newEffect:beforeTurn(owner, intensity)
if not data.beforeTurn then return end
if not data.beforeTurn then return taskUtils.wait {}, true end
local task, statement = data.beforeBirth(owner, intensity)
return task, statement
end
function newEffect:afterTurn(owner, intensity)
if not data.afterTurn then return end
if not data.afterTurn then return taskUtils.wait {} end
return data.afterTurn(owner, intensity)
end
function newEffect:beforeCast(owner, intensity)
if not data.beforeCast then return end
if not data.beforeCast then return taskUtils.wait {}, true end
local task, statement = data.beforeBirth(owner, intensity)
return task, statement
end
function newEffect:afterCast(owner, intensity)
if not data.afterCast then return end
if not data.afterCast then return taskUtils.wait {} end
return data.afterCast(owner, intensity)
end
function newEffect:beforeAttack(owner, intensity, damage)
if not data.beforeAttack then return end
if not data.beforeAttack then return taskUtils.wait {}, damage end
local task, newDamage = data.beforeDamage(owner, intensity, damage)
return task, newDamage
end
function newEffect:afterAttack(owner, intensity)
if not data.afterAttack then return end
if not data.afterAttack then return taskUtils.wait {} end
return data.afterAttack(owner, intensity)
end
function newEffect:beforeDamage(owner, intensity, damage)
if not data.beforeDamage then return end
if not data.beforeDamage then return taskUtils.wait {}, damage end
local task, newDamage = data.beforeDamage(owner, intensity, damage)
return task, newDamage
end
function newEffect:afterDamage(owner, intensity)
if not data.afterDamage then return end
if not data.afterDamage then return taskUtils.wait {} end
return data.afterDamage(owner, intensity)
end
function newEffect:beforeRegeneration(owner, intensity, amountHp)
if not data.beforeRegeneration then return end
if not data.beforeRegeneration then return taskUtils.wait {}, amountHp end
local task, newAmountHp = data.beforeRegeneration(owner, intensity, amountHp)
return task, newAmountHp
end
function newEffect:afterRegeneration(owner, intensity)
if not data.afterRegeneration then return end
if not data.afterRegeneration then return taskUtils.wait {} end
return data.afterRegeneration(owner, intensity)
end