feature/effects #37
@ -15,13 +15,37 @@ end
|
|||||||
|
|
||||||
--- проверяет, можно ли наложить эффект и при наложении его применяет
|
--- проверяет, можно ли наложить эффект и при наложении его применяет
|
||||||
--- @param effect Effect
|
--- @param effect Effect
|
||||||
function behavior:addEffect(effect)
|
--- @param cooldown integer
|
||||||
|
function behavior:addEffect(effect, cooldown)
|
||||||
|
-- проверяем эффект на возможности суммирования (aka противоречия)
|
||||||
|
for ef, t in pairs(self.effects) do
|
||||||
|
local effectSum = effect:sum(ef)
|
||||||
|
if effectSum then
|
||||||
|
-- применяем результат суммы и удаляем эффект
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
self.effects[effect] = cooldown
|
||||||
|
effect:onBirth()
|
||||||
end
|
end
|
||||||
|
|
||||||
--- должен вызываться в конце хода;
|
--- должен вызываться в начале хода
|
||||||
function behavior:updateEffects()
|
function behavior:onStartTurn()
|
||||||
|
for ef, t in pairs(self.effects) do
|
||||||
|
if t == 0 then
|
||||||
|
ef:onDeath()
|
||||||
|
|
|||||||
|
self.effects[ef] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- должен вызываться в конце хода
|
||||||
|
function behavior:onEndTurn()
|
||||||
|
for ef, t in pairs(self.effects) do
|
||||||
|
self.effects[ef] = t - 1
|
||||||
|
ef:onEndTurn()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return behavior
|
return behavior
|
||||||
|
|||||||
@ -2,6 +2,28 @@
|
|||||||
local effect = {}
|
local effect = {}
|
||||||
effect.__index = effect
|
effect.__index = effect
|
||||||
|
PeaAshMeter
commented
Почему это вообще в папке со спеллами? Почему это вообще в папке со спеллами?
neckrat
commented
я не придумал куда в другое место это запихать, не в либ же кидать 🥵 я не придумал куда в другое место это запихать, не в либ же кидать 🥵
|
|||||||
|
|
||||||
|
function effect:onBirth()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function effect:onDeath()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function effect:onStartTurn()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function effect:onEndTurn()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
--- @param other Effect
|
||||||
|
--- @return Effect|nil
|
||||||
|
function effect:sum(other)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
function effect:update(dt)
|
function effect:update(dt)
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -10,8 +32,9 @@ function effect:draw()
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function effect.new()
|
--- @return Effect
|
||||||
|
local function new()
|
||||||
return setmetatable({}, effect)
|
return setmetatable({}, effect)
|
||||||
end
|
end
|
||||||
|
|
||||||
return effect
|
return { new = new }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user
Всё таки позволяет через наложение сильного короткого эффекта поверх слабого длинного получить и сильный, и длинный эффект одновременно?
да, мы вроде так и договорились по итогу
Так вроде смысл реферата по DOS сводился к тому, что так делать не надо? Мы сделали разные выводы?
Так вроде смысл реферата по DOS сводился к тому, что так делать не надо? Мы сделали разные выводы?
получается, ты сделал
видимо ¯(ツ)/¯, я предположил так сделать из-за всех этих скрытых механик, где ты переопределяешь бесконечный эффект конечным и тд
а поддержка бесконечных эффектов же не присутствует в каком-то дополнительном виде, кроме как не указывать эффекту момент потери стака?
да, можно добавить просто какое-то магическое значение по типу -1 ради ui, ну или сделать флаг для этого