41 lines
2.7 KiB
Lua
41 lines
2.7 KiB
Lua
--- ===========ЛОГИКА ЭФФЕКТОВ И ЧТО С ЭТИМ ЕДЯТ===========
|
||
--- Лайфтайм эффектов можно поделить на три этапа: рождение, тихая жизнь у моря, смерть
|
||
---
|
||
--- Рождение: Самый важный этап в жизни эффекта, потому что от него буквально зависит вся его судьба.
|
||
--- Когда мы применяем к объекту эффект, мы в первую очередь смотрим и ищем те эффекты, которые ему
|
||
--- противоречат, и если такие есть то один из них мы убиваем (чуть позже в этом слове будет больше смысла),
|
||
--- а накладываемый эффект не применяем. Например: мы невероятно влажные (по какой-то причине) и в нас
|
||
--- кидают фаерболл. После того как в нас попадает сей чудный огненный шар, к нам пытается примениться
|
||
--- эффект горения, но мы слишком мокрые для этого, поэтому вместо добавления одного эффекта мы теряем
|
||
--- один. После этого мы смотрим, есть ли у этих эффектов какая-то "сумма", и применяем её в
|
||
--- соответствии с правилами описанными в ней же. То есть, продолжая этот же пример, вокруг нас должен
|
||
--- образоваться пар, что (например) мешает обзору на один ход.
|
||
---
|
||
--- Тихая жизнь: На самом деле не очень тихая. Если эффект применён к персонажу, который находится в
|
||
--- очереди ходов, то эффект после своего рождения применяется в конце хода своего владельца.
|
||
|
||
--- 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
|