Compare commits
No commits in common. "8b24793e829f46297238a9052179eda986f7e5c6" and "3d125f5cbc3a2e84692cd5162304afe76966cb21" have entirely different histories.
8b24793e82
...
3d125f5cbc
@ -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 },
|
||||||
@ -24,7 +22,8 @@ function bleeding:afterBirth(owner, intensity)
|
|||||||
light:die()
|
light:die()
|
||||||
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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user