From b4b9eea27e1faac8482808021f0fdd62a2599c9f Mon Sep 17 00:00:00 2001 From: neckrat Date: Wed, 29 Apr 2026 16:42:58 +0300 Subject: [PATCH] sum refactor i hope in better way --- lib/character/behaviors/effects.lua | 9 ++++----- lib/effectbook.lua | 31 ++++++++++++----------------- 2 files changed, 17 insertions(+), 23 deletions(-) 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, fun(owner: Character, effect1: Effect, effect2: Effect): boolean> +--- @type table> local sums = {} --- Сумма кровотечения и отвращения к смерти, (в целях разработки) удаляет оба эффекта, не позволяя дальше применять эффект -sums[keySum(bleeding, aversionToDeath)] = function(owner, effect1, effect2) - print("[EffectBook]: применяем сумму, удаляем оба эффекта") - local behaviorEffect = owner:has(Tree.behaviors.effects) - if not behaviorEffect then - print("[EffectBook]: yo man what the hell wheres your behavior how thats possible please stop thats not normal") - return true +sums.bleeding = { + dev_aversion_to_death = function(owner, effect1, effect2) + print("[EffectBook]: применяем сумму, удаляем оба эффекта") + local behaviorEffect = owner:has(Tree.behaviors.effects) + if not behaviorEffect then + print("[EffectBook]: yo man what the hell wheres your behavior how thats possible please stop thats not normal") + return true + end + behaviorEffect:deleteEffect(effect1) + behaviorEffect:deleteEffect(effect2) + return false end - behaviorEffect:deleteEffect(effect1) - behaviorEffect:deleteEffect(effect2) - return false -end +} local effectbook = { sums = sums,