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 '';