diff --git a/game/engines/default/engine/interface/PlayerRest.lua b/game/engines/default/engine/interface/PlayerRest.lua index 5740a5d69601dfc66880f0a22231bad6c9c57c4f..92c0e5e582373e6e47fd7dd4aa7446d67c1b4d7c 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 1221f22def0e093f3b9d4687c347c9eed3050bce..5774885ca720d36180739a5bad14e1376ac1e0a7 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)