diff --git a/game/engines/default/engine/ai/simple.lua b/game/engines/default/engine/ai/simple.lua index fcb8a48202034edc331d55a4b5c0bc2e62710b76..d11c70cbda93dee3ebc09ad1c9fd450e9171b044 100644 --- a/game/engines/default/engine/ai/simple.lua +++ b/game/engines/default/engine/ai/simple.lua @@ -23,13 +23,12 @@ local Astar = require "engine.Astar" newAI("move_simple", function(self) if self.ai_target.actor then - local tx, ty = self:aiSeeTargetPos(self.ai_target.actor) - - if not self:hasLOS(self.ai_target.actor.x, self.ai_target.actor.y) then - -- Move towards the last seen position if we have one - if self.ai_state.target_last_seen and type(self.ai_state.target_last_seen) == "table" then - tx, ty = self.ai_state.target_last_seen.x, self.ai_state.target_last_seen.y - end + local tx, ty + -- Move towards the last seen position if we have one + if self.ai_state.target_last_seen and type(self.ai_state.target_last_seen) == "table" then + tx, ty = self.ai_state.target_last_seen.x, self.ai_state.target_last_seen.y + else + tx, ty = self:aiSeeTargetPos(self.ai_target.actor) end return self:moveDirection(tx, ty) end diff --git a/game/engines/default/engine/interface/ActorAI.lua b/game/engines/default/engine/interface/ActorAI.lua index ecbc0ae0d0b24ec04bae4327a61e250c7e986178..ba2f754c4d98973526e6ab53311831484c64ff6d 100644 --- a/game/engines/default/engine/interface/ActorAI.lua +++ b/game/engines/default/engine/interface/ActorAI.lua @@ -122,7 +122,8 @@ function _M:doAI() -- Update the ai_target table local target_pos = self.ai_target.actor and self.fov and self.fov.actors and self.fov.actors[self.ai_target.actor] if target_pos then - self.ai_state.target_last_seen = {x=target_pos.x, y=target_pos.y, turn=self.fov_last_turn} + local tx, ty = self:aiSeeTargetPos(self.ai_target.actor) + self.ai_state.target_last_seen = {x=tx, y=ty, turn=self.fov_last_turn} end return self:runAI(self.ai) diff --git a/game/modules/tome/class/NPC.lua b/game/modules/tome/class/NPC.lua index 613834f79d02bc40f516d4e204755b353903fc05..07a8a955037be3bd79ddf2b20b481c4b65ff4c60 100644 --- a/game/modules/tome/class/NPC.lua +++ b/game/modules/tome/class/NPC.lua @@ -431,7 +431,8 @@ function _M:clearAITarget() self.ai_target.actor = self.ai_target.actor.summoner -- You think you can cheat with summons ? let's cheat back ! -- yeah it's logical because .. hum .. yeah because the npc saw were the summon came from! - self.ai_state.target_last_seen = {x=self.ai_target.actor.x, y=self.ai_target.actor.y, turn=game.turn} + local tx, ty = self:aiSeeTargetPos(self.ai_target.actor) + self.ai_state.target_last_seen = {x=tx, y=ty, turn=game.turn} end if self.ai_target.actor and self.ai_target.actor.dead then self.ai_target.actor = nil end