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
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 effect Effect
--- @param amount integer --- @param amount integer
@ -74,15 +86,10 @@ function behavior:deleteStacks(effect, amount)
amount -- !!!!!!!!!!!!!!!! <<<<< 21+ only amount -- !!!!!!!!!!!!!!!! <<<<< 21+ only
if self.effectsProperties[effect].stacks <= 0 then if self.effectsProperties[effect].stacks <= 0 then
print("[Effects]:", effect.tag, "ДОЛЖЕН БЫТЬ СТЁРТ") print("[Effects]:", effect.tag, "ДОЛЖЕН БЫТЬ СТЁРТ")
self.effectsProperties[effect] = nil self:deleteEffect(effect)
for i, ef in ipairs(self.effectsPriority) do
if ef == effect then
table.remove(self.effectsPriority, i)
print("[Effects]:", effect.tag, "СТЁРТ") print("[Effects]:", effect.tag, "СТЁРТ")
end end
end end
end
end
--- должна вызываться перед смертью персонажа; --- должна вызываться перед смертью персонажа;
--- ---

View File

@ -137,79 +137,79 @@ local function new(data)
}, effect) }, effect)
function newEffect:beforeBirth(owner, intensity) 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) local task, statement = data.beforeBirth(owner, intensity)
return task, statement return task, statement
end end
function newEffect:afterBirth(owner, intensity) 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) return data.afterBirth(owner, intensity)
end end
function newEffect:beforeDeath(owner, intensity) 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) local task, statement = data.beforeBirth(owner, intensity)
return task, statement return task, statement
end end
function newEffect:afterDeath(owner, intensity) 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) return data.afterDeath(owner, intensity)
end end
function newEffect:beforeTurn(owner, intensity) 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) local task, statement = data.beforeBirth(owner, intensity)
return task, statement return task, statement
end end
function newEffect:afterTurn(owner, intensity) 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) return data.afterTurn(owner, intensity)
end end
function newEffect:beforeCast(owner, intensity) 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) local task, statement = data.beforeBirth(owner, intensity)
return task, statement return task, statement
end end
function newEffect:afterCast(owner, intensity) 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) return data.afterCast(owner, intensity)
end end
function newEffect:beforeAttack(owner, intensity, damage) 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) local task, newDamage = data.beforeDamage(owner, intensity, damage)
return task, newDamage return task, newDamage
end end
function newEffect:afterAttack(owner, intensity) 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) return data.afterAttack(owner, intensity)
end end
function newEffect:beforeDamage(owner, intensity, damage) 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) local task, newDamage = data.beforeDamage(owner, intensity, damage)
return task, newDamage return task, newDamage
end end
function newEffect:afterDamage(owner, intensity) 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) return data.afterDamage(owner, intensity)
end end
function newEffect:beforeRegeneration(owner, intensity, amountHp) 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) local task, newAmountHp = data.beforeRegeneration(owner, intensity, amountHp)
return task, newAmountHp return task, newAmountHp
end end
function newEffect:afterRegeneration(owner, intensity) 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) return data.afterRegeneration(owner, intensity)
end end