From aac6e5e8f49f43d359d0f7acc1c4c1d983761c34 Mon Sep 17 00:00:00 2001 From: neckrat Date: Sat, 2 May 2026 02:00:33 +0300 Subject: [PATCH] refactor effectdata --- lib/effectbook.lua | 29 +++++++++++++++-------------- lib/spell/effect.lua | 2 +- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lib/effectbook.lua b/lib/effectbook.lua index 8826544..d107d86 100644 --- a/lib/effectbook.lua +++ b/lib/effectbook.lua @@ -9,22 +9,23 @@ local easing = require "lib.utils.easing" --- --- Наносит `intensity` урона перед началом каждого хода. local bleeding = effect.new({ - tag = "bleeding", - afterBirth = function(owner, intensity) - local light = require "lib/character/character".spawn("Bleeding Light Effect") - light:addBehavior { - Tree.behaviors.light.new { color = Vec3 { 1, 0., 0. }, intensity = 4 }, - Tree.behaviors.positioned.new(owner:has(Tree.behaviors.positioned).position + Vec3 { 0.5, 0.5 }), - } - - return task.wait({ task.chain(task.tween(light:has(Tree.behaviors.light) --[[@as LightBehavior]], - { intensity = 1, color = Vec3 { 0, 0., 0. } }, 800, easing.easeInCubic), function() - light:die() - return task.fromValue() - end) }) - end + tag = "bleeding" }) +function bleeding:afterBirth(owner, intensity) + local light = require "lib/character/character".spawn("Bleeding Light Effect") + light:addBehavior { + Tree.behaviors.light.new { color = Vec3 { 1, 0., 0. }, intensity = 4 }, + Tree.behaviors.positioned.new(owner:has(Tree.behaviors.positioned).position + Vec3 { 0.5, 0.5 }), + } + + return task.wait({ task.chain(task.tween(light:has(Tree.behaviors.light) --[[@as LightBehavior]], + { intensity = 1, color = Vec3 { 0, 0., 0. } }, 800, easing.easeInCubic), function() + light:die() + return task.fromValue() + end) }) +end + function bleeding:beforeTurn(owner, intensity) local stats = owner:has(Tree.behaviors.stats) local sprite = owner:has(Tree.behaviors.sprite) diff --git a/lib/spell/effect.lua b/lib/spell/effect.lua index 1a03acc..8ee4ac9 100644 --- a/lib/spell/effect.lua +++ b/lib/spell/effect.lua @@ -19,7 +19,7 @@ effect.__index = effect --- @alias EffectStatementFunc fun(owner: Character, intensity: integer): Task, boolean --- @alias EffectDamageFunc fun(owner: Character, intensity: integer, damage: integer): Task, integer --- @alias EffectRegenFunc fun(owner: Character, intensity: integer, amountHp: integer): Task, integer ---- @alias EffectData { tag: string, [string]: EffectFunc|EffectStatementFunc|EffectDamageFunc|EffectRegenFunc } +--- @alias EffectData { tag: string } --- Срабатывает перед применением эффекта ---