scene_use bug

This commit is contained in:
p.kosyh 2010-01-24 15:17:44 +00:00
parent 7c9ad19469
commit 6ab2bc8106

View file

@ -1012,34 +1012,35 @@ end
function player_use(self, what, onwhat) function player_use(self, what, onwhat)
local obj, obj2, v, vv, r; local obj, obj2, v, vv, r;
local scene_use_mode local scene_use_mode = false
obj = self:srch(what);
if not obj then obj = self:srch(what); -- in inv?
obj = ref(self.where):srch(what); if not obj then -- no
if not obj then obj = ref(self.where):srch(what); -- in scene?
if not obj then -- no!
return game.err, false; return game.err, false;
end end
scene_use_mode = true scene_use_mode = true -- scene_use_mode!
end end
if onwhat == nil then if onwhat == nil then -- only one?
if scene_use_mode then if scene_use_mode then
return self:action(what); return self:action(what); -- call act
else else
v, r = call(ref(obj),'inv'); v, r = call(ref(obj),'inv'); -- call inv
end end
if not v and r ~= true then if not v and r ~= true then
v, r = call(game, 'inv', obj); v, r = call(game, 'inv', obj);
end end
return v, r; return v, r;
end end
obj2 = ref(self.where):srch(onwhat); obj2 = ref(self.where):srch(onwhat); -- in scene?
if not obj2 then if not obj2 then
obj2 = self:srch(onwhat); obj2 = self:srch(onwhat); -- in inv?
end end
if not obj2 or obj2 == obj then if not obj2 or obj2 == obj then
return game.err, false; return game.err, false;
end end
if not use_mode or isSceneUse(obj) then if not scene_use_mode or isSceneUse(ref(obj)) then
v, r = call(ref(obj), 'use', obj2); v, r = call(ref(obj), 'use', obj2);
if r ~= false then if r ~= false then
vv = call(ref(obj2), 'used', obj); vv = call(ref(obj2), 'used', obj);