feature/effects #37

Manually merged
neckrat merged 64 commits from feature/effects into main 2026-05-06 10:19:49 +03:00
2 changed files with 52 additions and 5 deletions
Showing only changes of commit 9b10557435 - Show all commits

View File

@ -15,13 +15,37 @@ end
--- проверяет, можно ли наложить эффект и при наложении его применяет
--- @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
--- должен вызываться в конце хода;
function behavior:updateEffects()
self.effects[effect] = cooldown
effect:onBirth()
end
--- должен вызываться в начале хода
function behavior:onStartTurn()
for ef, t in pairs(self.effects) do
if t == 0 then
ef:onDeath()

Всё таки позволяет через наложение сильного короткого эффекта поверх слабого длинного получить и сильный, и длинный эффект одновременно?

Всё таки позволяет через наложение сильного короткого эффекта поверх слабого длинного получить и сильный, и длинный эффект одновременно?

да, мы вроде так и договорились по итогу

да, мы вроде так и договорились по итогу

Так вроде смысл реферата по DOS сводился к тому, что так делать не надо? Мы сделали разные выводы?

Так вроде смысл реферата по DOS сводился к тому, что так делать не надо? Мы сделали разные выводы?

Так вроде смысл реферата по DOS сводился к тому, что так делать не надо? Мы сделали разные выводы?
получается, ты сделал

В этот момент новый, невероятно слабый эффект полностью перезапишет сильный эффект высокоуровневого мага.

Так вроде смысл реферата по DOS сводился к тому, что так делать не надо? Мы сделали разные выводы? получается, ты сделал > В этот момент новый, невероятно слабый эффект полностью перезапишет сильный эффект высокоуровневого мага.

видимо ¯(ツ)/¯, я предположил так сделать из-за всех этих скрытых механик, где ты переопределяешь бесконечный эффект конечным и тд

видимо ¯_(ツ)_/¯, я предположил так сделать из-за всех этих скрытых механик, где ты переопределяешь бесконечный эффект конечным и тд

а поддержка бесконечных эффектов же не присутствует в каком-то дополнительном виде, кроме как не указывать эффекту момент потери стака?

а поддержка бесконечных эффектов же не присутствует в каком-то дополнительном виде, кроме как не указывать эффекту момент потери стака?

да, можно добавить просто какое-то магическое значение по типу -1 ради ui, ну или сделать флаг для этого

да, можно добавить просто какое-то магическое значение по типу -1 ради ui, ну или сделать флаг для этого
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
return behavior

View File

@ -2,6 +2,28 @@
local effect = {}
effect.__index = effect
Review

Почему это вообще в папке со спеллами?

Почему это вообще в папке со спеллами?
Review

я не придумал куда в другое место это запихать, не в либ же кидать 🥵

я не придумал куда в другое место это запихать, не в либ же кидать 🥵
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)
end
@ -10,8 +32,9 @@ function effect:draw()
end
function effect.new()
--- @return Effect
local function new()
return setmetatable({}, effect)
end
return effect
return { new = new }