meeeeooooow

added afterCast and beforeCast effect implementation
This commit is contained in:
neckrat 2026-04-24 13:22:10 +03:00
parent a9f8816c8e
commit eecf24c471
5 changed files with 72 additions and 11 deletions

Binary file not shown.

View File

@ -26,7 +26,12 @@ end
--- @param effect Effect
--- @param stacks integer
function behavior:addEffect(effect, stacks, intensity)
-- if not effect:beforeBirth() then return end
if effect.beforeBirth then
local task1 = effect:beforeBirth(self.owner, intensity)
if task1 then
task1(function() end)
end
end
-- проверяем эффект на возможности суммирования (aka противоречия)
for i, ef in ipairs(self.effectsPriority) do
if ef == effect then
@ -59,16 +64,6 @@ function behavior:addEffect(effect, stacks, intensity)
end
end
--- должен вызываться в начале хода
function behavior:beforeTurn()
for i, ef in ipairs(self.effectsPriority) do
local task1 = ef:beforeTurn(self.owner, self.effectsProperties[ef].intensity)
if task1 then
task1(function() end)
end
end
end
--- О ДААА ЭТА ФУНКЦИЯ МЕНЯЕТ СОСТОЯНИЕ О ДАААААА О ДАААААААААА
--- @param effect Effect
--- @param amount integer
@ -88,6 +83,36 @@ function behavior:deleteStacks(effect, amount)
end
end
--- должна вызываться перед смертью персонажа
function behavior:beforeDeath()
for i, ef in ipairs(self.effectsPriority) do
local task1 = ef:beforeDeath(self.owner, self.effectsProperties[ef].intensity)
if task1 then
task1(function() end)
end
end
end
--- должна вызываться после смерти персонажа (может ли такая ситуация возникнуть вообще?)
function behavior:afterDeath()
for i, ef in ipairs(self.effectsPriority) do
local task1 = ef:afterDeath(self.owner, self.effectsProperties[ef].intensity)
if task1 then
task1(function() end)
end
end
end
--- должен вызываться в начале хода
function behavior:beforeTurn()
for i, ef in ipairs(self.effectsPriority) do
local task1 = ef:beforeTurn(self.owner, self.effectsProperties[ef].intensity)
if task1 then
task1(function() end)
end
end
end
--- должен вызываться в конце хода
function behavior:afterTurn()
for i, ef in pairs(self.effectsPriority) do
@ -98,4 +123,24 @@ function behavior:afterTurn()
end
end
--- должен вызываться перед кастом спелла
function behavior:beforeCast()
for i, ef in ipairs(self.effectsPriority) do
local task1 = ef:beforeCast(self.owner, self.effectsProperties[ef].intensity)
if task1 then
task1(function() end)
end
end
end
--- должен вызываться после каста спелла
function behavior:afterCast()
for i, ef in pairs(self.effectsPriority) do
local task1 = ef:afterCast(self.owner, self.effectsProperties[ef].intensity)
if task1 then
task1(function() end)
end
end
end
return behavior

View File

@ -20,6 +20,9 @@ function behavior.new(spellbook)
end
function behavior:endCast()
self.owner:try(Tree.behaviors.effects, function(effects)
effects:afterCast()
end)
self.state = "idle"
self.cast = nil
Tree.level.turnOrder:reorder()

View File

@ -36,6 +36,15 @@ function bleeding:afterTurn(owner, intensity)
behavior:deleteStacks(self, 1)
end
--- meow
function bleeding:afterCast(owner, intensity)
Tree.audio:play(Tree.assets.files.audio.sounds.meow)
end
function bleeding:beforeCast(owner, intensity)
Tree.audio:play(Tree.assets.files.audio.sounds.meow)
end
local effectbook = {
bleeding = bleeding
}

View File

@ -135,6 +135,10 @@ function spell.new(data)
caster:try(Tree.behaviors.spellcaster, function(spellcaster)
spellcaster.cooldowns[self.tag] = self.baseCooldown
end)
caster:try(Tree.behaviors.effects, function(effects)
effects:beforeCast()
end)
return data.onCast(caster, target)
end