fix attack spell

This commit is contained in:
PeaAshMeter 2025-10-16 01:23:05 +03:00
parent 78f9347b86
commit a0ddd5f7cd
3 changed files with 23 additions and 17 deletions

View File

@ -28,6 +28,7 @@ function selector:update(dt)
return self:select(selectedId) return self:select(selectedId)
else else
local char = Tree.level.characters[self.id] local char = Tree.level.characters[self.id]
char:try(Tree.behaviors.spellcaster, function(b) char:try(Tree.behaviors.spellcaster, function(b)
if not b.cast then if not b.cast then
self:select(selectedId) self:select(selectedId)

View File

@ -87,15 +87,18 @@ end
local attack = setmetatable({}, spell) local attack = setmetatable({}, spell)
function attack:cast(caster, target) function attack:cast(caster, target)
-- caster:try(Tree.behaviors.map, function(map) if caster:try(Tree.behaviors.map, function(map)
-- local dist = math.ceil((target - map.position):length()) local dist = math.max(math.abs(map.position.x - target.x), math.abs(map.position.y - target.y))
-- if dist >= 2 then print("dist:", dist)
-- return false return dist >= 2
-- end end) then
-- end) return false
end
--- @type Character --- @type Character
local targetCharacter = Tree.level.characterGrid:get(target) local targetCharacterId = Tree.level.characterGrid:get(target)
if not targetCharacterId then return false end
local targetCharacter = Tree.level.characters[targetCharacterId]
targetCharacter:try(Tree.behaviors.stats, function(stats) targetCharacter:try(Tree.behaviors.stats, function(stats)
stats.hp = stats.hp - 4 stats.hp = stats.hp - 4
end) end)
@ -103,22 +106,24 @@ function attack:cast(caster, target)
caster:try(Tree.behaviors.sprite, function(sprite) caster:try(Tree.behaviors.sprite, function(sprite)
sprite:play("attack", function() sprite:play("attack", function()
sprite:play("idle") sprite:play("idle")
caster:has(Tree.behaviors.spellcaster):endCast() targetCharacter:try(Tree.behaviors.sprite, function(targetSprite)
end) targetSprite:play("hurt", function()
end) targetSprite:play("idle")
targetCharacter:try(Tree.behaviors.sprite, function(sprite) caster:has(Tree.behaviors.spellcaster):endCast()
sprite:play("hurt", function() end)
sprite:play("idle") end)
end) end)
end) end)
return true return true
end end
---------------------------------------- ----------------------------------------
local spellbook = { local spellbook = {
walk = walk, walk = walk,
regenerateMana = regenerateMana regenerateMana = regenerateMana,
attack = attack
} }
--- Создает новый спеллбук с уникальными спеллами (а не ссылками на шаблоны) --- Создает новый спеллбук с уникальными спеллами (а не ссылками на шаблоны)

View File

@ -43,9 +43,9 @@ function layout:build()
local r = local r =
ui.Row { ui.Row {
children = { children = {
setmetatable({ owner = Tree.level.characters[id], spellId = 1 }, { __index = SkillButton }), ui.Padding { padding = { left = 4, right = 4 }, child = setmetatable({ owner = Tree.level.characters[id], spellId = 1 }, { __index = SkillButton }) },
setmetatable({ owner = Tree.level.characters[id], spellId = 2 }, { __index = SkillButton }), ui.Padding { padding = { left = 4, right = 4 }, child = setmetatable({ owner = Tree.level.characters[id], spellId = 2 }, { __index = SkillButton }) },
setmetatable({ owner = Tree.level.characters[id], spellId = 3 }, { __index = SkillButton }) ui.Padding { padding = { left = 4, right = 4 }, child = setmetatable({ owner = Tree.level.characters[id], spellId = 3 }, { __index = SkillButton }) },
} }
} }
skillRows[id] = r skillRows[id] = r