sum refactor i hope in better way

This commit is contained in:
neckrat 2026-04-29 16:42:58 +03:00
parent ec18710047
commit b4b9eea27e
2 changed files with 17 additions and 23 deletions

View File

@ -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

View File

@ -82,20 +82,14 @@ end
----------------- Spellbook & Sum -----------------
--- Функция, которая облегчает создания ключа для таблицы суммирования.
local function keySum(effect1, effect2)
return { [effect1.tag] = true, [effect2.tag] = true }
end
--- Принимает таблицу, в ключах которых тэги эффектов, которые мы хотим просуммировать, и в значениях которых функция,
--- возвращающая булево значение: применять ли эффект после суммирования.
---
--- В функции порядок эффектов, что передали в качестве аргумента, не определён.
--- @type table<table<string, boolean>, fun(owner: Character, effect1: Effect, effect2: Effect): boolean>
--- @type table<string, table<string, fun(owner: Character, effect1: Effect, effect2: Effect): boolean>>
local sums = {}
--- Сумма кровотечения и отвращения к смерти, (в целях разработки) удаляет оба эффекта, не позволяя дальше применять эффект
sums[keySum(bleeding, aversionToDeath)] = function(owner, effect1, effect2)
sums.bleeding = {
dev_aversion_to_death = function(owner, effect1, effect2)
print("[EffectBook]: применяем сумму, удаляем оба эффекта")
local behaviorEffect = owner:has(Tree.behaviors.effects)
if not behaviorEffect then
@ -106,6 +100,7 @@ sums[keySum(bleeding, aversionToDeath)] = function(owner, effect1, effect2)
behaviorEffect:deleteEffect(effect2)
return false
end
}
local effectbook = {
sums = sums,