41 lines
2.7 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--- ===========ЛОГИКА ЭФФЕКТОВ И ЧТО С ЭТИМ ЕДЯТ===========
--- Лайфтайм эффектов можно поделить на три этапа: рождение, тихая жизнь у моря, смерть
---
--- Рождение: Самый важный этап в жизни эффекта, потому что от него буквально зависит вся его судьба.
--- Когда мы применяем к объекту эффект, мы в первую очередь смотрим и ищем те эффекты, которые ему
--- противоречат, и если такие есть то один из них мы убиваем (чуть позже в этом слове будет больше смысла),
--- а накладываемый эффект не применяем. Например: мы невероятно влажные (по какой-то причине) и в нас
--- кидают фаерболл. После того как в нас попадает сей чудный огненный шар, к нам пытается примениться
--- эффект горения, но мы слишком мокрые для этого, поэтому вместо добавления одного эффекта мы теряем
--- один. После этого мы смотрим, есть ли у этих эффектов какая-то "сумма", и применяем её в
--- соответствии с правилами описанными в ней же. То есть, продолжая этот же пример, вокруг нас должен
--- образоваться пар, что (например) мешает обзору на один ход.
---
--- Тихая жизнь: На самом деле не очень тихая. Если эффект применён к персонажу, который находится в
--- очереди ходов, то эффект после своего рождения применяется в конце хода своего владельца.
--- behavior thats holds all effects that we applied
--- @class EffectsBehavior : Behavior
--- @field effects table<Effect, integer>
local behavior = {}
behavior.__index = behavior
behavior.id = "effects"
--- @return EffectsBehavior
function behavior.new()
return setmetatable({}, behavior)
end
--- проверяет, можно ли наложить эффект и при наложении его применяет
--- @param effect Effect
function behavior:addEffect(effect)
end
--- должен вызываться в конце хода;
function behavior:updateEffects()
end
return behavior