diff --git a/lib/character/behaviors/effects.lua b/lib/character/behaviors/effects.lua new file mode 100644 index 0000000..a74d929 --- /dev/null +++ b/lib/character/behaviors/effects.lua @@ -0,0 +1,40 @@ +--- ===========ЛОГИКА ЭФФЕКТОВ И ЧТО С ЭТИМ ЕДЯТ=========== +--- Лайфтайм эффектов можно поделить на три этапа: рождение, тихая жизнь у моря, смерть +--- +--- Рождение: Самый важный этап в жизни эффекта, потому что от него буквально зависит вся его судьба. +--- Когда мы применяем к объекту эффект, мы в первую очередь смотрим и ищем те эффекты, которые ему +--- противоречат, и если такие есть то один из них мы убиваем (чуть позже в этом слове будет больше смысла), +--- а накладываемый эффект не применяем. Например: мы невероятно влажные (по какой-то причине) и в нас +--- кидают фаерболл. После того как в нас попадает сей чудный огненный шар, к нам пытается примениться +--- эффект горения, но мы слишком мокрые для этого, поэтому вместо добавления одного эффекта мы теряем +--- один. После этого мы смотрим, есть ли у этих эффектов какая-то "сумма", и применяем её в +--- соответствии с правилами описанными в ней же. То есть, продолжая этот же пример, вокруг нас должен +--- образоваться пар, что (например) мешает обзору на один ход. +--- +--- Тихая жизнь: На самом деле не очень тихая. Если эффект применён к персонажу, который находится в +--- очереди ходов, то эффект после своего рождения применяется в конце хода своего владельца. + +--- behavior thats holds all effects that we applied +--- @class EffectsBehavior : Behavior +--- @field effects table +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 diff --git a/lib/spell/effect.lua b/lib/spell/effect.lua new file mode 100644 index 0000000..3d3247f --- /dev/null +++ b/lib/spell/effect.lua @@ -0,0 +1,17 @@ +--- @class Effect +local effect = {} +effect.__index = effect + +function effect:update(dt) + +end + +function effect:draw() + +end + +function effect.new() + return setmetatable({}, effect) +end + +return effect