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)
else
local char = Tree.level.characters[self.id]
char:try(Tree.behaviors.spellcaster, function(b)
if not b.cast then
self:select(selectedId)

View File

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

View File

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