Compare commits

..

No commits in common. "8b24793e829f46297238a9052179eda986f7e5c6" and "3d125f5cbc3a2e84692cd5162304afe76966cb21" have entirely different histories.

2 changed files with 28 additions and 22 deletions

View File

@ -9,10 +9,8 @@ local easing = require "lib.utils.easing"
--- ---
--- Наносит `intensity` урона перед началом каждого хода. --- Наносит `intensity` урона перед началом каждого хода.
local bleeding = effect.new({ local bleeding = effect.new({
tag = "bleeding" tag = "bleeding",
}) afterBirth = function(owner, intensity)
function bleeding:afterBirth(owner, intensity)
local light = require "lib/character/character".spawn("Bleeding Light Effect") local light = require "lib/character/character".spawn("Bleeding Light Effect")
light:addBehavior { light:addBehavior {
Tree.behaviors.light.new { color = Vec3 { 1, 0., 0. }, intensity = 4 }, Tree.behaviors.light.new { color = Vec3 { 1, 0., 0. }, intensity = 4 },
@ -25,6 +23,7 @@ function bleeding:afterBirth(owner, intensity)
return task.fromValue() return task.fromValue()
end) }) end) })
end end
})
function bleeding:beforeTurn(owner, intensity) function bleeding:beforeTurn(owner, intensity)
local stats = owner:has(Tree.behaviors.stats) local stats = owner:has(Tree.behaviors.stats)

View File

@ -19,7 +19,7 @@ effect.__index = effect
--- @alias EffectStatementFunc fun(owner: Character, intensity: integer): Task<nil>, boolean --- @alias EffectStatementFunc fun(owner: Character, intensity: integer): Task<nil>, boolean
--- @alias EffectDamageFunc fun(owner: Character, intensity: integer, damage: integer): Task<nil>, integer --- @alias EffectDamageFunc fun(owner: Character, intensity: integer, damage: integer): Task<nil>, integer
--- @alias EffectRegenFunc fun(owner: Character, intensity: integer, amountHp: integer): Task<nil>, integer --- @alias EffectRegenFunc fun(owner: Character, intensity: integer, amountHp: integer): Task<nil>, integer
--- @alias EffectData { tag: string } --- @alias EffectData { tag: string, [string]: EffectFunc|EffectStatementFunc|EffectDamageFunc|EffectRegenFunc }
--- Срабатывает перед применением эффекта --- Срабатывает перед применением эффекта
--- ---
@ -131,12 +131,12 @@ function effect:onBirth(owner, stacks, intensity)
if not effects then return end if not effects then return end
-- проверяем на наличие такого же эффекта -- проверяем на наличие такого же эффекта
if effects.effectsProperties[self.tag] then if effects.effectsProperties[self.tag] then
local i = 1 for i, ef in ipairs(effects.effectsPriority) do
while i < #effects.effectsPriority and effects.effectsPriority[i] ~= self.tag do if ef == self.tag then
i = i + 1 table.remove(effects.effectsProperties, i)
effects.effectsProperties[#effects.effectsProperties + 1] = ef
end
end end
local ef = table.remove(effects.effectsPriority, i)
effects.effectsPriority[#effects.effectsPriority + 1] = ef
else else
effects.effectsPriority[#effects.effectsPriority + 1] = self.tag effects.effectsPriority[#effects.effectsPriority + 1] = self.tag
end end
@ -161,9 +161,16 @@ end
--- @return Effect --- @return Effect
local function new(data) local function new(data)
local newEffect = setmetatable({ local newEffect = setmetatable({
tag = data.tag, tag = data.tag
}, effect) }, effect)
--- дип сравнение эффектов
--- @param other Effect
--- @return boolean
function newEffect:__eq(other)
return utils.deepComparison(self, other)
end
return newEffect return newEffect
end end