Compare commits
No commits in common. "f59f32bd70286b8a12085a9cae2ac0d9aab0e137" and "7c5314b7c8e01fcd3c7c2069a0ca01ba9ad83167" have entirely different histories.
f59f32bd70
...
7c5314b7c8
@ -29,14 +29,6 @@ function behavior:addEffect(effect, stacks)
|
|||||||
-- if not effect:beforeBirth() then return end
|
-- if not effect:beforeBirth() then return end
|
||||||
-- проверяем эффект на возможности суммирования (aka противоречия)
|
-- проверяем эффект на возможности суммирования (aka противоречия)
|
||||||
for i, ef in ipairs(self.effectsPriority) do
|
for i, ef in ipairs(self.effectsPriority) do
|
||||||
if ef == effect then
|
|
||||||
self.effectsStacks[ef] = stacks
|
|
||||||
local task1 = effect:afterBirth(self.owner)
|
|
||||||
if task1 then
|
|
||||||
task1(function() end)
|
|
||||||
end
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local effectSum = effect:sum(ef)
|
local effectSum = effect:sum(ef)
|
||||||
if effectSum then
|
if effectSum then
|
||||||
-- применяем результат суммы и удаляем эффект
|
-- применяем результат суммы и удаляем эффект
|
||||||
@ -47,10 +39,7 @@ function behavior:addEffect(effect, stacks)
|
|||||||
self.effectsPriority[#self.effectsPriority + 1] = effect
|
self.effectsPriority[#self.effectsPriority + 1] = effect
|
||||||
self.effectsStacks[effect] = stacks
|
self.effectsStacks[effect] = stacks
|
||||||
print("[Effects]: мы применили эффект!!")
|
print("[Effects]: мы применили эффект!!")
|
||||||
local task1 = effect:afterBirth(self.owner)
|
effect:afterBirth(self.owner)
|
||||||
if task1 then
|
|
||||||
task1(function() end)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- должен вызываться в начале хода
|
--- должен вызываться в начале хода
|
||||||
@ -63,24 +52,6 @@ function behavior:beforeTurn()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- О ДААА ЭТА ФУНКЦИЯ МЕНЯЕТ СОСТОЯНИЕ О ДАААААА О ДАААААААААА
|
|
||||||
--- @param effect Effect
|
|
||||||
--- @param amount integer
|
|
||||||
function behavior:deleteStacks(effect, amount)
|
|
||||||
print("[Effects]: удаляем стаки!!")
|
|
||||||
self.effectsStacks[effect] = self.effectsStacks[effect] - amount -- !!!!!!!!!!!!!!!! <<<<< 21+ only
|
|
||||||
if self.effectsStacks[effect] <= 0 then
|
|
||||||
print("[Effects]:", effect.tag, "ДОЛЖЕН БЫТЬ СТЁРТ")
|
|
||||||
self.effectsStacks[effect] = nil
|
|
||||||
for i, ef in ipairs(self.effectsPriority) do
|
|
||||||
if ef == effect then
|
|
||||||
table.remove(self.effectsPriority, i)
|
|
||||||
print("[Effects]:", effect.tag, "СТЁРТ")
|
|
||||||
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
|
||||||
|
|||||||
@ -4,37 +4,29 @@ local easing = require "lib.utils.easing"
|
|||||||
|
|
||||||
local bleeding = effect.new({
|
local bleeding = effect.new({
|
||||||
tag = "bleeding",
|
tag = "bleeding",
|
||||||
|
beforeTurn = function(owner)
|
||||||
|
print("мы начали применять блидинг!!", owner)
|
||||||
|
local stats = owner:has(Tree.behaviors.stats)
|
||||||
|
local sprite = owner:has(Tree.behaviors.sprite)
|
||||||
|
if not stats or not sprite then return end
|
||||||
|
stats:dealDamage(2)
|
||||||
|
return task.wait({ sprite:animate("hurt") })
|
||||||
|
end,
|
||||||
afterBirth = function(owner)
|
afterBirth = function(owner)
|
||||||
local light = require "lib/character/character".spawn("Bleeding Light Effect")
|
local light = require "lib/character/character".spawn("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 },
|
||||||
Tree.behaviors.positioned.new(owner:has(Tree.behaviors.positioned).position + Vec3 { 0.5, 0.5 }),
|
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]],
|
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()
|
{ intensity = 1, color = Vec3 { 1, 0., 0. } }, 800, easing.easeInCubic), function()
|
||||||
light:die()
|
light:die()
|
||||||
return task.fromValue()
|
return task.fromValue()
|
||||||
end) })
|
end) })
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
function bleeding:beforeTurn(owner)
|
|
||||||
local stats = owner:has(Tree.behaviors.stats)
|
|
||||||
local sprite = owner:has(Tree.behaviors.sprite)
|
|
||||||
if not stats or not sprite then return end
|
|
||||||
stats:dealDamage(2)
|
|
||||||
return task.wait({ sprite:animate("hurt") })
|
|
||||||
end
|
|
||||||
|
|
||||||
function bleeding:afterTurn(owner)
|
|
||||||
local behavior = owner:has(Tree.behaviors.effects)
|
|
||||||
if not behavior then
|
|
||||||
print('[Effect]: yo man what the hell wheres your behavior how thats possible please stop thats not normal')
|
|
||||||
return
|
|
||||||
end
|
|
||||||
behavior:deleteStacks(self, 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
local effectbook = {
|
local effectbook = {
|
||||||
bleeding = bleeding
|
bleeding = bleeding
|
||||||
|
|||||||
@ -73,9 +73,6 @@ function turnOrder:endRound()
|
|||||||
char:try(Tree.behaviors.spellcaster, function(spellcaster)
|
char:try(Tree.behaviors.spellcaster, function(spellcaster)
|
||||||
spellcaster:processCooldowns()
|
spellcaster:processCooldowns()
|
||||||
end)
|
end)
|
||||||
char:try(Tree.behaviors.effects, function(effects)
|
|
||||||
effects:afterTurn()
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
self.actedQueue, self.pendingQueue = self.pendingQueue, self.actedQueue
|
self.actedQueue, self.pendingQueue = self.pendingQueue, self.actedQueue
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
local utils = require "lib.utils.utils"
|
|
||||||
|
|
||||||
--- @class Effect
|
--- @class Effect
|
||||||
--- @field tag string
|
--- @field tag string
|
||||||
local effect = {}
|
local effect = {}
|
||||||
@ -78,13 +76,6 @@ function effect:update(dt) end
|
|||||||
|
|
||||||
function effect:draw() end
|
function effect:draw() end
|
||||||
|
|
||||||
--- дип сравнение эффектов
|
|
||||||
--- @param other Effect
|
|
||||||
--- @return boolean
|
|
||||||
function effect:__eq(other)
|
|
||||||
return utils.deepComprasion(self, other)
|
|
||||||
end
|
|
||||||
|
|
||||||
--- @todo переделать дату и прочее
|
--- @todo переделать дату и прочее
|
||||||
-- --- @param data {tag: string, beforeBirth: fun(owner: Character)?, beforeDeath: fun(owner: Character)?, beforeTurn: (fun(owner: Character): Task<nil>|nil), afterTurn: (fun(owner: Character): Task<nil>|nil), sum: fun(owner: Character)?}
|
-- --- @param data {tag: string, beforeBirth: fun(owner: Character)?, beforeDeath: fun(owner: Character)?, beforeTurn: (fun(owner: Character): Task<nil>|nil), afterTurn: (fun(owner: Character): Task<nil>|nil), sum: fun(owner: Character)?}
|
||||||
--- @param data EffectData
|
--- @param data EffectData
|
||||||
@ -164,13 +155,6 @@ local function new(data)
|
|||||||
return data.afterRegeneration(owner)
|
return data.afterRegeneration(owner)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- дип сравнение эффектов
|
|
||||||
--- @param other Effect
|
|
||||||
--- @return boolean
|
|
||||||
function newEffect:__eq(other)
|
|
||||||
return utils.deepComprasion(self, other)
|
|
||||||
end
|
|
||||||
|
|
||||||
return newEffect
|
return newEffect
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -74,20 +74,4 @@ function P.lerp(from, to, t)
|
|||||||
return from + (to - from) * t
|
return from + (to - from) * t
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Compares two tables by their fields
|
|
||||||
--- @param t1 table
|
|
||||||
--- @param t2 table
|
|
||||||
--- @return boolean
|
|
||||||
function P.deepComprasion(t1, t2)
|
|
||||||
for k, v in pairs(t1) do
|
|
||||||
if type(v) == "table" and type(t2[k]) == "table" then
|
|
||||||
return P.deepComprasion(v, t2[k])
|
|
||||||
end
|
|
||||||
if t2[k] ~= v then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
return P
|
return P
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user