From 885fabe24e840681a627962c512d741e5d0111d7 Mon Sep 17 00:00:00 2001 From: neckrat Date: Wed, 15 Apr 2026 17:29:16 +0300 Subject: [PATCH] he's (ai) doing some stuff and i think its cool --- lib/character/behaviors/ai.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/character/behaviors/ai.lua b/lib/character/behaviors/ai.lua index b2bacad..9a0dc47 100644 --- a/lib/character/behaviors/ai.lua +++ b/lib/character/behaviors/ai.lua @@ -86,6 +86,7 @@ local function circleVectors(center, radius) return vecs end +--- ищет пути к ближайшему персу в определённом радиусе --- @param owner Character --- @param radius integer здесь мы должны сами определять, сколько должны не доходить до персонажа (1 <= n) --- @return Vec3|nil @@ -112,18 +113,22 @@ local aiNature = { ["dev_warrior"] = function(self) return function(callback) -- почему так, описано в Task self.owner:try(Tree.behaviors.spellcaster, function(spellB) - self.target = pathToClosestCharacter(self.owner, 2) + self.target = pathToClosestCharacter(self.owner, 1) + local attackTarget = closestCharacter(self.owner):has(Tree.behaviors.positioned) + if not attackTarget then return end local task1 = spellB.spellbook[1]:cast(self.owner, self.target) if task1 then task1( function() -- здесь мы оказываемся после того, как сходили в первый раз - local newTarget = Vec3 { 1, 1 } - local task2 = spellB.spellbook[1]:cast(self.owner, newTarget) + print('[AI]: я походил') + local task2 = spellB.spellbook[3]:cast(self.owner, attackTarget.position) if task2 then -- дергаем функцию после завершения хода + print('[AI]: и ударил') task2(callback) else + print('[AI]: чёт не бьётся') callback() end end