From 754bfdd377292fa1a16a5286392bb2ddf85a5fb6 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sun, 27 Nov 2011 21:06:26 +0000
Subject: [PATCH] Trying to rest with foes in sight will not spend a turn

git-svn-id: http://svn.net-core.org/repos/t-engine4@4680 51575b47-30f0-44d4-a5cc-537603b46e54
---
 .../engines/default/engine/interface/PlayerRest.lua | 13 +++++++++++--
 game/modules/tome/class/Player.lua                  |  2 ++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/game/engines/default/engine/interface/PlayerRest.lua b/game/engines/default/engine/interface/PlayerRest.lua
index 5740a5d696..92c0e5e582 100644
--- a/game/engines/default/engine/interface/PlayerRest.lua
+++ b/game/engines/default/engine/interface/PlayerRest.lua
@@ -31,14 +31,23 @@ function _M:restInit(turns, what, past, on_end)
 		rest_turns = turns,
 		past = past,
 		on_end = on_end,
-		cnt = 1,
+		cnt = 0,
 		dialog = Dialog:simplePopup(what:capitalize().."...", "You are "..what..", press Enter to stop.", function()
 			self:restStop()
 		end),
 	}
 	self.resting.dialog.__showup = nil
-	self:useEnergy()
+
 	game.log(what:capitalize().." starts...")
+
+	local ret, msg = self:restCheck()
+	if ret and self.resting and self.resting.rest_turns and self.resting.cnt > self.resting.rest_turns then ret = false msg = nil end
+	if not ret then
+		self:restStop(msg)
+	else
+		self:useEnergy()
+		self.resting.cnt = self.resting.cnt + 1
+	end
 end
 
 --- Rest a turn
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index 1221f22def..5774885ca7 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -554,6 +554,8 @@ end
 
 local function spotHostiles(self)
 	local seen = {}
+	if not self.x then return seen end
+
 	-- Check for visible monsters, only see LOS actors, so telepathy wont prevent resting
 	core.fov.calc_circle(self.x, self.y, game.level.map.w, game.level.map.h, self.sight or 10, function(_, x, y) return game.level.map:opaque(x, y) end, function(_, x, y)
 		local actor = game.level.map(x, y, game.level.map.ACTOR)
-- 
GitLab