feature/effects #37

Manually merged
neckrat merged 64 commits from feature/effects into main 2026-05-06 10:19:49 +03:00
2 changed files with 17 additions and 23 deletions
Showing only changes of commit b4b9eea27e - Show all commits

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
@ -105,7 +99,8 @@ sums[keySum(bleeding, aversionToDeath)] = function(owner, effect1, effect2)
behaviorEffect:deleteEffect(effect1)
behaviorEffect:deleteEffect(effect2)
return false
end
end
}
local effectbook = {
sums = sums,