From 56e7892630f4e09993d0903f4719838b34e8bdd9 Mon Sep 17 00:00:00 2001
From: "p.kosyh"
Date: Thu, 15 Oct 2009 08:54:20 +0000
Subject: [PATCH] scene_use fixes
---
stead/gui.lua | 3 ---
stead/stead.lua | 32 ++++++++++++++++++++------------
2 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/stead/gui.lua b/stead/gui.lua
index 6ceeabf..f31a50d 100644
--- a/stead/gui.lua
+++ b/stead/gui.lua
@@ -136,6 +136,3 @@ function isMenu(v)
return false
end
-function isSceneUse(v)
- return call_bool(v, 'scene_use');
-end
diff --git a/stead/stead.lua b/stead/stead.lua
index 43de348..8f11c72 100644
--- a/stead/stead.lua
+++ b/stead/stead.lua
@@ -911,21 +911,17 @@ end
function player_use(self, what, onwhat)
local obj, obj2, v, vv, r;
- local use_mode
+ local scene_use_mode
obj = self:srch(what);
if not obj then
- if call_bool(game, 'scene_use') then
- use_mode = true
- obj = ref(self.where):srch(what);
- if not obj then
- return
- end
- else
+ obj = ref(self.where):srch(what);
+ if not obj then
return game.err, false;
end
+ scene_use_mode = true
end
if onwhat == nil then
- if use_mode then
+ if scene_use_mode then
return player_action(self, what);
else
v, r = call(ref(obj),'inv');
@@ -942,9 +938,11 @@ function player_use(self, what, onwhat)
if not obj2 or obj2 == obj then
return game.err, false;
end
- v, r = call(ref(obj), 'use', obj2);
- if r ~= false then
- vv = call(ref(obj2), 'used', obj);
+ if not use_mode or isSceneUse(obj) then
+ v, r = call(ref(obj), 'use', obj2);
+ if r ~= false then
+ vv = call(ref(obj2), 'used', obj);
+ end
end
if not v and not vv then
v, r = call(game, 'use', obj, obj2);
@@ -1401,6 +1399,16 @@ function isForcedsc(v)
return g and r ~= false
end
+function isSceneUse(v)
+ local o,g
+ o = call_bool(v, 'scene_use');
+ if o then
+ return true
+ end
+ g = call_bool(game, 'scene_use');
+ return g and o ~= false
+end
+
iface = {
img = function(self, str)
return '';