эффекты и недописанная литературная шизофрения

This commit is contained in:
neckrat 2026-04-17 09:32:01 +03:00
parent ce7b93fecd
commit 8cb6e62845
2 changed files with 57 additions and 0 deletions

View File

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

17
lib/spell/effect.lua Normal file
View File

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