diff --git a/lib/character/behaviors/effects.lua b/lib/character/behaviors/effects.lua index 6d4c5f1..05c44a3 100644 --- a/lib/character/behaviors/effects.lua +++ b/lib/character/behaviors/effects.lua @@ -46,11 +46,10 @@ function behavior:addEffect(effect, stacks, intensity) return end - if effect.tag == ef.tag then break end - for k, v in pairs(efb.sums) do - if k[effect.tag] and k[ef.tag] then - if not v(self.owner, effect, ef) then return end - end + if efb.sums[effect.tag] then + if not efb.sums[effect.tag][ef.tag](self.owner, effect, ef) then return end + else + if not efb.sums[ef.tag][effect.tag](self.owner, ef, effect) then return end end end diff --git a/lib/effectbook.lua b/lib/effectbook.lua index d55595f..4959adb 100644 --- a/lib/effectbook.lua +++ b/lib/effectbook.lua @@ -82,30 +82,25 @@ end ----------------- Spellbook & Sum ----------------- ---- Функция, которая облегчает создания ключа для таблицы суммирования. -local function keySum(effect1, effect2) - return { [effect1.tag] = true, [effect2.tag] = true } -end - --- Принимает таблицу, в ключах которых тэги эффектов, которые мы хотим просуммировать, и в значениях которых функция, --- возвращающая булево значение: применять ли эффект после суммирования. ---- ---- В функции порядок эффектов, что передали в качестве аргумента, не определён. ---- @type table