fix attack spell
This commit is contained in:
parent
78f9347b86
commit
a0ddd5f7cd
@ -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)
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
--- Создает новый спеллбук с уникальными спеллами (а не ссылками на шаблоны)
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user