From efe98e8210cbed7107f7d12cdf2a40a6c428c3fb Mon Sep 17 00:00:00 2001 From: neckrat Date: Fri, 1 May 2026 01:21:53 +0300 Subject: [PATCH] fix effects birth --- lib/character/behaviors/effects.lua | 32 ++++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/character/behaviors/effects.lua b/lib/character/behaviors/effects.lua index 057d695..e11fa98 100644 --- a/lib/character/behaviors/effects.lua +++ b/lib/character/behaviors/effects.lua @@ -25,27 +25,35 @@ end --- проверяет, можно ли наложить эффект и при наложении его применяет --- @param effect EffectTag --- @param stacks integer +--- @param intensity integer function behavior:addEffect(effect, stacks, intensity) local task1, birthStatement = book[effect]:beforeBirth(self.owner, intensity) if task1 then task1(function() end) end if not birthStatement then return end - -- проверяем эффект на возможности суммирования (aka противоречия) - for i, ef in ipairs(self.effectsPriority) do - if ef == effect then - self.effectsProperties[ef] = { - stacks = stacks + self.effectsProperties[ef].stacks, - intensity = intensity - } - local task2 = book[effect]:afterBirth(self.owner, intensity) - if task2 then - task2(function() end) + -- проверяем на наличие того же эффекта + if self.effectsProperties[effect] then + -- добавляем в конец очереди эффектов + for i, ef in ipairs(self.effectsPriority) do + if ef == effect then + table.remove(self.effectsProperties, i) + self.effectsProperties[#self.effectsProperties + 1] = ef end - return end + self.effectsProperties[effect] = { + stacks = stacks, + intensity = intensity + } + local task2 = book[effect]:afterBirth(self.owner, intensity) + if task2 then + task2(function() end) + end + return + end - --- проверка на сумму, и её применение + -- проверка на сумму, и её применение + for i, ef in ipairs(self.effectsPriority) do if efb.sums[effect] then if efb.sums[effect][ef] then if not efb.sums[effect][ef](self.owner, effect, ef) then return end