From c8e91c66a67fd23f303cd7018eefd4a1924bb670 Mon Sep 17 00:00:00 2001
From: "p.kosyh"
Date: Wed, 23 Jun 2010 06:05:25 +0000
Subject: [PATCH] fixes
---
stead/goto.lua | 2 +-
stead/object.lua | 15 ++++++++++++++-
stead/stead.lua | 6 +++---
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/stead/goto.lua b/stead/goto.lua
index 381135c..e4632ce 100644
--- a/stead/goto.lua
+++ b/stead/goto.lua
@@ -91,7 +91,7 @@ end
go = hook(go, function(f, ...)
local r,v = f(unpack(arg))
- if type(r) == 'string' then
+ if type(r) == 'string' and cctx() then
pr (r)
end
if stead.in_life_call then
diff --git a/stead/object.lua b/stead/object.lua
index f81208f..2f56ede 100644
--- a/stead/object.lua
+++ b/stead/object.lua
@@ -64,21 +64,34 @@ function vobj_used(self, ...)
return call(ref(r),'used', self.nam, unpack(arg));
end
+function vobj_use(self, ...)
+ local o, r = here():srch(self.nam);
+ return call(ref(r),'use', self.nam, unpack(arg));
+end
+
function vobj(name, dsc, w)
return obj{ nam = tostring(name),
+ vobject_type = true,
dsc = dsc,
where = deref(w),
act = vobj_act,
used = vobj_used,
+ use = vobj_use,
save = vobj_save };
end
function vway(name, dsc, w)
-- o.object_type = true;
return obj{ nam = tostring(name),
+ vobject_type = true,
dsc = dsc,
act = vobj_act,
where = deref(w),
- used = vobj_used,
+ used = vobj_used,
+ use = vobj_use,
save = vobj_save };
end
+
+function isVobject(v)
+ return (type(v) == 'table') and (v.vobject_type)
+end
diff --git a/stead/stead.lua b/stead/stead.lua
index 2ad8e3f..e8e44d0 100644
--- a/stead/stead.lua
+++ b/stead/stead.lua
@@ -683,7 +683,7 @@ function call_bool(v, n, ...)
end
if type(v[n]) == 'function' then
- callpush(v)
+ callpush(v, unpack(arg))
local r = v[n](v, unpack(arg));
callpop();
return r;
@@ -1622,7 +1622,7 @@ function isForcedsc(v)
if r then
return true
end
- g = call_bool(game, 'forcedsc');
+ g = call_bool(game, 'forcedsc', v);
return g and r ~= false
end
@@ -1632,7 +1632,7 @@ function isSceneUse(v)
if o then
return true
end
- g = call_bool(game, 'scene_use');
+ g = call_bool(game, 'scene_use', v);
return g and o ~= false
end