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 effect Effect
--- @param stacks integer --- @param stacks integer
function behavior:addEffect(effect, stacks, intensity) 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 противоречия) -- проверяем эффект на возможности суммирования (aka противоречия)
for i, ef in ipairs(self.effectsPriority) do for i, ef in ipairs(self.effectsPriority) do
if ef == effect then if ef == effect then
@ -59,16 +64,6 @@ function behavior:addEffect(effect, stacks, intensity)
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
--- О ДААА ЭТА ФУНКЦИЯ МЕНЯЕТ СОСТОЯНИЕ О ДАААААА О ДАААААААААА --- О ДААА ЭТА ФУНКЦИЯ МЕНЯЕТ СОСТОЯНИЕ О ДАААААА О ДАААААААААА
--- @param effect Effect --- @param effect Effect
--- @param amount integer --- @param amount integer
@ -88,6 +83,36 @@ function behavior:deleteStacks(effect, amount)
end end
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() function behavior:afterTurn()
for i, ef in pairs(self.effectsPriority) do for i, ef in pairs(self.effectsPriority) do
@ -98,4 +123,24 @@ function behavior:afterTurn()
end end
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 return behavior

View File

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

View File

@ -36,6 +36,15 @@ function bleeding:afterTurn(owner, intensity)
behavior:deleteStacks(self, 1) behavior:deleteStacks(self, 1)
end 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 = { local effectbook = {
bleeding = bleeding bleeding = bleeding
} }

View File

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