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