diff --git a/stead/dbg.lua b/stead/dbg.lua index d20a7c4..0408b69 100644 --- a/stead/dbg.lua +++ b/stead/dbg.lua @@ -88,7 +88,7 @@ function disp_obj() end dump_obj = function(w) - w = ref(w) + w = stead.ref(w) if type(w) ~= 'table' then seen('disp')._txt = '^^No such object.'; return true @@ -103,8 +103,8 @@ dump_obj = function(w) if t then if rc ~='' then rc = rc..'^' end local n = ''; - if type(o) ~= 'function' and isObject(ref(o)) then - n = stead.call(ref(o), 'nam'); + if type(o) ~= 'function' and isObject(stead.ref(o)) then + n = stead.call(stead.ref(o), 'nam'); if type(n) ~= 'string' then n = '' else n = ' : '..n; end end rc = stead.cat(rc, stead.par(' ', tostring(i)..' : '..t..n)); @@ -138,13 +138,13 @@ end list_objects = function() local i,o - local rc = stead.par(' ', 'Room:'..tostring(deref(dbg_here())), + local rc = stead.par(' ', 'Room:'..tostring(stead.deref(dbg_here())), 'Nam:'..tostring(stead.call(dbg_here(),'nam'))); for i,o in opairs(objs(dbg_here())) do rc = rc..'^'; - o = ref(o) + o = stead.ref(o) rc = stead.cat(rc, stead.par(' ', 'Id:'..tostring(o.id), - 'Obj:'..tostring(deref(o)), + 'Obj:'..tostring(stead.deref(o)), 'Nam:'..tostring(stead.call(o, 'nam')), 'Disabled:'..tostring(isDisabled(o)))); end @@ -157,8 +157,8 @@ list_inv = function() local rc='' for i,o in opairs(inv()) do if rc ~='' then rc = rc..'^' end - o = ref(o) - rc = stead.cat(rc, stead.par(' ', 'Id:'..tostring(o.id), 'Obj:'..tostring(deref(o)), + o = stead.ref(o) + rc = stead.cat(rc, stead.par(' ', 'Id:'..tostring(o.id), 'Obj:'..tostring(stead.deref(o)), 'Nam:'..tostring(stead.call(o, 'nam')), 'Disabled:'..tostring(isDisabled(o)), 'Taken:'..tostring(taken(o)))); @@ -201,7 +201,7 @@ dump_object = room { inp_enter = function(s) local w = s.obj[1]._txt if type(w) == 'string' then - if not ref(w) then w = objs(dbg_here()):srch(w); end + if not stead.ref(w) then w = objs(dbg_here()):srch(w); end return dump_obj(w); end return back(); @@ -274,14 +274,14 @@ drop_object = dlg { local k,v objs(s):zap(); for k,v in ipairs(inv()) do - v = ref(v); + v = stead.ref(v); if not v.debug then local n = tostring(stead.call(v, 'nam')); - local o = deref(v); + local o = stead.deref(v); if type(o) == 'string' then n = n..' : '..o; n = _xref_escape(n); - put (phr(n, true, o..':enable(); drop('..o..','..deref(dbg_here())..')'), s) + put (phr(n, true, o..':enable(); drop('..o..','..stead.deref(dbg_here())..')'), s) end end end diff --git a/stead/goto.lua b/stead/goto.lua index 38018d7..36c1e56 100644 --- a/stead/goto.lua +++ b/stead/goto.lua @@ -15,11 +15,11 @@ go = function (self, where, back, noenter, noexit, nodsc) return nil, ret(false) end - if not isRoom(ref(where)) then + if not isRoom(stead.ref(where)) then error ("Trying to go nowhere: "..where); end - if not isRoom(ref(self.where)) then + if not isRoom(stead.ref(self.where)) then error ("Trying to go from nowhere: "..self.where); end @@ -29,15 +29,15 @@ go = function (self, where, back, noenter, noexit, nodsc) local v, r, jump; - if not isVroom(ref(where)) and not stead.in_exit_call and not noexit then + if not isVroom(stead.ref(where)) and not stead.in_exit_call and not noexit then stead.in_exit_call = true -- to break recurse - v,r = stead.call(ref(self.where), 'exit', ref(where)); + v,r = stead.call(stead.ref(self.where), 'exit', stead.ref(where)); stead.in_exit_call = nil if r == false or (stead.api_version >= "1.3.0" and v == false and r == nil) then return v, ret(r) end if self.where ~= was then - where = deref(self.where) -- jump + where = stead.deref(self.where) -- jump jump = true end end @@ -45,12 +45,12 @@ go = function (self, where, back, noenter, noexit, nodsc) local res = v; v = nil; - if not isVroom(ref(where)) then - self.where = deref(where); + if not isVroom(stead.ref(where)) then + self.where = stead.deref(where); end if not jump and not noenter then - v, r = stead.call(ref(where), 'enter', ref(was)); + v, r = stead.call(stead.ref(where), 'enter', stead.ref(was)); if r == false or (stead.api_version >= "1.3.0" and v == false and r == nil) then self.where = was; return par('^^', res, v), ret(r) @@ -58,14 +58,14 @@ go = function (self, where, back, noenter, noexit, nodsc) end need_scene = true; - if ref(where) ~= ref(self.where) then -- jump !!! + if stead.ref(where) ~= stead.ref(self.where) then -- jump !!! need_scene = false; end res = par('^^',res,v); if not back then - ref(where).__from__ = deref(was); + stead.ref(where).__from__ = stead.deref(was); end ret() @@ -80,28 +80,28 @@ go = function (self, where, back, noenter, noexit, nodsc) if not noexit then self.where = was stead.in_onexit_call = true - v = stead.call(ref(was), 'left', ref(to)); + v = stead.call(stead.ref(was), 'left', stead.ref(to)); stead.in_onexit_call = false res = par('^^',res,v); end - self.where = deref(to) + self.where = stead.deref(to) if not noenter then stead.in_entered_call = true - v = stead.call(ref(to), 'entered', ref(was)); + v = stead.call(stead.ref(to), 'entered', stead.ref(was)); stead.in_entered_call = false res = par('^^',res,v); end - if tonumber(ref(to).__visited) then - ref(to).__visited = ref(to).__visited + 1; + if tonumber(stead.ref(to).__visited) then + stead.ref(to).__visited = stead.ref(to).__visited + 1; elseif here().__visited == nil then - ref(to).__visited = 1 + stead.ref(to).__visited = 1 end - if isDialog(ref(to)) then - dialog_rescan(ref(to)); + if isDialog(stead.ref(to)) then + dialog_rescan(stead.ref(to)); end end return res; @@ -109,7 +109,7 @@ end stead.go = go function player_go(self, where) -- cmd iface - local w = ref(self.where).way:srch(where); + local w = stead.ref(self.where).way:srch(where); if not w then return nil,false end @@ -149,7 +149,7 @@ end stead.goin = goin function goout(what) - if isRoom(ref(what)) then + if isRoom(stead.ref(what)) then return me():goto(what, true, true, false, true); end return me():goto(from(), true, true, false, true); @@ -158,7 +158,7 @@ stead.goout = goout function visited(w) if not w then w = here() end - w = ref(w) + w = stead.ref(w) if w == nil then return nil; end diff --git a/stead/gui.lua b/stead/gui.lua index fd4b507..d3018c3 100644 --- a/stead/gui.lua +++ b/stead/gui.lua @@ -9,14 +9,14 @@ game.gui = { } iface.xref = function(self, str, obj, ...) - local o = ref(obj); + local o = stead.ref(obj); local cmd='' if not isObject(o) or isStatus(o) or (not o.id and not isXaction(o)) then return str; end - if ref(ways():srch(obj)) then + if stead.ref(ways():srch(obj)) then cmd = 'go '; elseif isMenu(o) then cmd = 'act '; @@ -32,7 +32,7 @@ iface.xref = function(self, str, obj, ...) a = a..','..varg[i] end if isXaction(o) and not o.id then - return stead.cat('',str,''); + return stead.cat('',str,''); end return stead.cat('',str,''); end; diff --git a/stead/input.lua b/stead/input.lua index 0c1fa22..fb5678a 100644 --- a/stead/input.lua +++ b/stead/input.lua @@ -206,7 +206,7 @@ end) lookup_inp = function() local i,o for i,o in opairs(objs()) do - o = ref(o) + o = stead.ref(o) if o._edit then return o end diff --git a/stead/object.lua b/stead/object.lua index 74cfe71..4e7ba24 100644 --- a/stead/object.lua +++ b/stead/object.lua @@ -2,7 +2,7 @@ function player_action(self, what, ...) local v,r,obj obj = _G[what]; if not isXaction(obj) then - obj = ref(self.where):srch(what); + obj = stead.ref(self.where):srch(what); end if not obj then return stead.call(game, 'action', what, ...); --player_do(self, what, ...); @@ -24,7 +24,7 @@ function player_use(self, what, onwhat, ...) obj = self:srch(what); -- in inv? if not obj then -- no - obj = ref(self.where):srch(what); -- in scene? + obj = stead.ref(self.where):srch(what); -- in scene? if not obj then -- no! return game.err, false; end @@ -34,14 +34,14 @@ function player_use(self, what, onwhat, ...) if scene_use_mode then return self:action(what, ...); -- call act else - v, r = stead.call(ref(obj),'inv', ...); -- call inv + v, r = stead.call(stead.ref(obj),'inv', ...); -- call inv end if not v and r ~= true then v, r = stead.call(game, 'inv', obj, ...); end return v, r; end - obj2 = ref(self.where):srch(onwhat); -- in scene? + obj2 = stead.ref(self.where):srch(onwhat); -- in scene? if not obj2 then obj2 = self:srch(onwhat); -- in inv? end @@ -49,8 +49,8 @@ function player_use(self, what, onwhat, ...) return game.err, false; end - obj = ref(obj) - obj2 = ref(obj2) + obj = stead.ref(obj) + obj2 = stead.ref(obj2) if not scene_use_mode or isSceneUse(obj) then v, r = stead.call(obj, 'use', obj2, ...); @@ -72,7 +72,7 @@ function player_use(self, what, onwhat, ...) end function vobj_save(self, name, h, need) - local w = deref(self.where) + local w = stead.deref(self.where) local dsc = self.dsc if need then @@ -87,27 +87,27 @@ end function vobj_act(self, ...) local o, r = here():srch(self); -- self.nam - if ref(o) and ref(o).where then - return goto(ref(o).where); + if stead.ref(o) and stead.ref(o).where then + return goto(stead.ref(o).where); end - return stead.call(ref(r),'act', self.nam, ...); + return stead.call(stead.ref(r),'act', self.nam, ...); end function vobj_used(self, ...) local o, r = here():srch(self.nam); - return stead.call(ref(r),'used', self.nam, ...); + return stead.call(stead.ref(r),'used', self.nam, ...); end function vobj_use(self, ...) local o, r = here():srch(self.nam); - return stead.call(ref(r),'use', self.nam, ...); + return stead.call(stead.ref(r),'use', self.nam, ...); end function vobj(name, dsc, w) return obj{ nam = tostring(name), vobject_type = true, dsc = dsc, - where = deref(w), + where = stead.deref(w), act = vobj_act, used = vobj_used, use = vobj_use, @@ -120,7 +120,7 @@ function vway(name, dsc, w) vobject_type = true, dsc = dsc, act = vobj_act, - where = deref(w), + where = stead.deref(w), used = vobj_used, use = vobj_use, save = vobj_save }; @@ -133,18 +133,18 @@ end function list_check(self, name) -- force using of objects, instead refs local i, v, ii; for i,v,ii in opairs(self) do - local o = ref(v); + local o = stead.ref(v); if not isObject(o) then error ("No object: "..tostring(v)) return false end - if (v.auto_allocated and not ref(v.key_name)) -- renew - or (isObject(deref(v)) and not v._dynamic_type) then -- no named object! + if (v.auto_allocated and not stead.ref(v.key_name)) -- renew + or (isObject(stead.deref(v)) and not v._dynamic_type) then -- no named object! local n = stead.string.format("%s[%d]", name, ii); v = allocator:new(n, n); self[ii] = v; v.auto_allocated = true; - for_each(v, n, check_list, isList, deref(v)); + for_each(v, n, check_list, isList, stead.deref(v)); else self[ii] = o; end @@ -155,7 +155,7 @@ end function list_add(self, name, pos) local nam = name if stead.initialized then - nam = ref(name); + nam = stead.ref(name); end if not nam then error ("Add wrong object to list: "..tostring(name), 2); @@ -164,7 +164,7 @@ function list_add(self, name, pos) return nil end self.__modified__ = true; - if isObject(deref(nam)) then + if isObject(stead.deref(nam)) then nam._dynamic_type = true end if tonumber(pos) then @@ -183,12 +183,12 @@ function list_set(self, name, pos) return nil end if stead.initialized then - nam = ref(name); + nam = stead.ref(name); end if not nam then error ("Set wrong object in list: "..tostring(name), 2); end - if isObject(deref(nam)) then + if isObject(stead.deref(nam)) then nam._dynamic_type = true end self.__modified__ = true; @@ -199,7 +199,7 @@ end function list_concat(self, other, pos) local n,o,ii for n,o,ii in opairs(other) do - o = ref(o); + o = stead.ref(o); if pos == nil then self:add(o); else @@ -214,7 +214,7 @@ stead.delim = '|' function list_str(self) local i, v, vv, o; for i,o in opairs(self) do - o = ref(o); + o = stead.ref(o); if isObject(o) and not isDisabled(o) then vv = nil if game.gui then @@ -239,7 +239,7 @@ function obj_str(self) return end for i,o in opairs(self.obj) do - o = ref(o); + o = stead.ref(o); if isObject(o) and not isDisabled(o) then vv = nil if game.gui then @@ -259,10 +259,10 @@ function path(w, wh) -- search in way, disabled too if not wh then wh = here(); else - wh = ref(wh); + wh = stead.ref(wh); end local o = ways(wh):srch(w, true); - o = ref(o); + o = stead.ref(o); if isRoom(o) then return o end diff --git a/stead/stead.lua b/stead/stead.lua index 079e2b6..cff9f84 100644 --- a/stead/stead.lua +++ b/stead/stead.lua @@ -87,8 +87,8 @@ stead.tostring = function(v) v = stead.string.format("%q", v); elseif v == nil or type(v) == 'boolean' or type(v) == 'number' then v = tostring(v); - elseif type(v) == 'table' and type(deref(v)) == 'string' then - v = deref(v); + elseif type(v) == 'table' and type(stead.deref(v)) == 'string' then + v = stead.deref(v); else v = nil end @@ -413,7 +413,7 @@ function obj_look(self) v = stead.string.gsub(v, '[{}]',''); end for i,o in opairs(self.obj) do - o = ref(o); + o = stead.ref(o); if isObject(o) then vv = obj_look(o); v = stead.par(' ',v, vv); @@ -475,7 +475,7 @@ function obj_str(self) return end for i,o in opairs(self.obj) do - o = ref(o); + o = stead.ref(o); if o~= nil and not isDisabled(o) then -- isObject is better, but compat layer must be ok vv = stead.call(o, 'nam'); vv = xref(vv, o); @@ -539,14 +539,14 @@ function obj(v) end -function ref(n, nofunc) -- ref object by name +function stead.ref(n, nofunc) -- ref object by name if type(n) == 'string' then if type(_G[n]) == 'table' then -- fastest path return _G[n]; end local f = loadstring('return '..n); if f then - return ref(f(), nofunc); + return stead.ref(f(), nofunc); end return nil; end @@ -558,12 +558,13 @@ function ref(n, nofunc) -- ref object by name if not r then return nil end - return ref(v); + return stead.ref(v); end return nil end +ref = stead.ref -function deref(n) +function stead.deref(n) if type(n) == 'string' then return n end @@ -573,17 +574,18 @@ function deref(n) end return n end +deref = stead.deref function list_check(self, name) local i, v, ii; for i,v,ii in opairs(self) do - local o = ref(v); + local o = stead.ref(v); if not o then -- isObject(o) then -- compat error ("No object: "..tostring(v)) return false end - if deref(v) then - self[ii] = deref(v); + if stead.deref(v) then + self[ii] = stead.deref(v); end end return true; @@ -592,7 +594,7 @@ end function list_str(self) local i, v, vv, o; for i,o in opairs(self) do - o = ref(o); + o = stead.ref(o); if o~= nil and not isDisabled(o) then vv = stead.call(o, 'nam'); vv = xref(vv, o); @@ -605,7 +607,7 @@ end function list_add(self, name, pos) local nam - nam = deref(name); + nam = stead.deref(name); if self:look(nam) then return nil end @@ -625,7 +627,7 @@ function list_set(self, name, pos) if not i then return nil end - nam = deref(name); + nam = stead.deref(name); self.__modified__ = true; self[i] = nam; -- for spare lists return true @@ -634,7 +636,7 @@ end function list_find(self, name) local n, v, ii for n,v,ii in opairs(self) do - if ref(v) == ref(name, true) then -- do not call func while search + if stead.ref(v) == stead.ref(name, true) then -- do not call func while search return ii; end end @@ -644,7 +646,7 @@ end function list_disable_all(s) local k,v for k,v in opairs(s) do - local o = ref(v); + local o = stead.ref(v); if isObject(o) then o:disable() end @@ -654,7 +656,7 @@ end function list_enable_all(s) local k,v for k,v in opairs(s) do - local o = ref(v); + local o = stead.ref(v); if isObject(o) then o:enable() end @@ -672,7 +674,7 @@ end function list_name(self, name, dis) local n, o, ii for n,o,ii in opairs(self) do - o = ref(o); + o = stead.ref(o); if isObject(o) then local nam = stead.call(o,'nam') ; if ( not isDisabled(o) or dis ) and name == tostring(nam) then @@ -685,7 +687,7 @@ end function list_id(self, id, dis) local n,o,ii for n,o,ii in opairs(self) do - o = ref(o); + o = stead.ref(o); if dis or not isDisabled(o) then if isObject(o) and id == o.id then return ii; @@ -706,7 +708,7 @@ function list_search(self, n, dis) return nil end end - if not dis and isDisabled(ref(self[i])) then + if not dis and isDisabled(stead.ref(self[i])) then return nil; end return self[i], i; @@ -724,11 +726,11 @@ end function list_concat(self, other, pos) local n,o,ii for n,o,ii in opairs(other) do - o = ref(o); + o = stead.ref(o); if pos == nil then - self:add(deref(o)); + self:add(stead.deref(o)); else - self:add(deref(o), pos); + self:add(stead.deref(o), pos); pos = pos + 1; end end @@ -893,7 +895,7 @@ end function room_look(self) local i, vv, o; for i,o in opairs(self.obj) do - o = ref(o); + o = stead.ref(o); if isObject(o) then vv = stead.par(' ',vv, o:look()); end @@ -912,7 +914,7 @@ function obj_search(v, n, dis) return o, v; end for i,o in opairs(v.obj) do - o = ref(o); + o = stead.ref(o); if isObject(o) then local r,rr = obj_search(o, n, dis); if r then @@ -972,7 +974,7 @@ function dialog_look(self) local i,n,v,ph n = 1 for i,ph in opairs(self.obj) do - ph = ref(ph); + ph = stead.ref(ph); if isPhrase(ph) and not isDisabled(ph) then v = stead.par('^', v, txtnm(n, ph:look())); n = n + 1 @@ -985,7 +987,7 @@ function dialog_rescan(self) local i,k,ph k = 1 for i,ph in opairs(self.obj) do - ph = ref(ph); + ph = stead.ref(ph); if isPhrase(ph) and not isDisabled(ph) then ph.nam = tostring(k); k = k + 1; @@ -1003,12 +1005,12 @@ end function dialog_phrase(self, num) if not tonumber(num) then - if isPhrase(ref(num)) then - return ref(num); + if isPhrase(stead.ref(num)) then + return stead.ref(num); end return nil end - return ref(self.obj[tonumber(num)]); + return stead.ref(self.obj[tonumber(num)]); end function phrase_seen(s, enb, ...) @@ -1207,15 +1209,15 @@ function player_inv(self) end function player_ways(self) - return iface:ways(stead.cat(ref(self.where).way:str())); + return iface:ways(stead.cat(stead.ref(self.where).way:str())); end function player_objs(self) - return iface:objs(stead.cat(ref(self.where):str())); + return iface:objs(stead.cat(stead.ref(self.where):str())); end function player_look(self) - return ref(self.where):scene(); + return stead.ref(self.where):scene(); end function obj_tag(self, id) @@ -1226,7 +1228,7 @@ function obj_tag(self, id) end for k,v in opairs(self.obj) do - v = ref(v); + v = stead.ref(v); if isObject(v) and not isDisabled(v) then id = id + 1; v.id = id; @@ -1244,7 +1246,7 @@ function player_tagall(self) id = obj_tag(me(), id); for k,v in opairs(ways()) do - v = ref(v); + v = stead.ref(v); if isRoom(v) and not isDisabled(v) then id = id + 1; v.id = id; @@ -1254,15 +1256,15 @@ end function player_action(self, what, ...) local v,r,obj - obj = ref(self.where):srch(what); + obj = stead.ref(self.where):srch(what); if not obj then - return stead.call(ref(game), 'action', what, ...); --player_do(self, what, ...); + return stead.call(stead.ref(game), 'action', what, ...); --player_do(self, what, ...); end v, r = player_take(self, what, ...); if not v then - v, r = stead.call(ref(obj), 'act', ...); + v, r = stead.call(stead.ref(obj), 'act', ...); if not v and r ~= true then - v, r = stead.call(ref(game), 'act', obj, ...); + v, r = stead.call(stead.ref(game), 'act', obj, ...); end end return v, r; @@ -1270,11 +1272,11 @@ end function player_take(self, what, ...) local v,r,obj,w - obj,w = ref(self.where):srch(what); + obj,w = stead.ref(self.where):srch(what); if not obj then return nil, false; end - v,r = stead.call(ref(obj), 'tak', ...); + v,r = stead.call(stead.ref(obj), 'tak', ...); if v and r ~= false then take(obj, w); end @@ -1287,7 +1289,7 @@ function player_use(self, what, onwhat, ...) obj = self:srch(what); -- in inv? if not obj then -- no - obj = ref(self.where):srch(what); -- in scene? + obj = stead.ref(self.where):srch(what); -- in scene? if not obj then -- no! return game.err, false; end @@ -1297,24 +1299,24 @@ function player_use(self, what, onwhat, ...) if scene_use_mode then return self:action(what, ...); -- call act else - v, r = stead.call(ref(obj),'inv', ...); -- call inv + v, r = stead.call(stead.ref(obj),'inv', ...); -- call inv end if not v and r ~= true then v, r = stead.call(game, 'inv', obj, ...); end return v, r; end - obj2 = ref(self.where):srch(onwhat); -- in scene? + obj2 = stead.ref(self.where):srch(onwhat); -- in scene? if not obj2 then obj2 = self:srch(onwhat); -- in inv? end if not obj2 or obj2 == obj then return game.err, false; end - if not scene_use_mode or isSceneUse(ref(obj)) then - v, r = stead.call(ref(obj), 'use', obj2, ...); + if not scene_use_mode or isSceneUse(stead.ref(obj)) then + v, r = stead.call(stead.ref(obj), 'use', obj2, ...); if r ~= false then - vv = stead.call(ref(obj2), 'used', obj, ...); + vv = stead.call(stead.ref(obj2), 'used', obj, ...); end end if not v and not vv then @@ -1324,7 +1326,7 @@ function player_use(self, what, onwhat, ...) end function player_back(self) - local where = ref(self.where); + local where = stead.ref(self.where); if where == nil then return nil,false end @@ -1347,10 +1349,10 @@ function go(self, where, back) if where == nil then return nil,ret(false) end - if not isRoom(ref(where)) then + if not isRoom(stead.ref(where)) then error ("Trying to go nowhere: "..where, 2); end - if not isRoom(ref(self.where)) then + if not isRoom(stead.ref(self.where)) then error ("Trying to go from nowhere: "..self.where, 2); end @@ -1359,9 +1361,9 @@ function go(self, where, back) end local v, r; - if not isVroom(ref(where)) and not stead.in_exit_call then + if not isVroom(stead.ref(where)) and not stead.in_exit_call then stead.in_exit_call = true -- to break recurse - v,r = stead.call(ref(self.where), 'exit', where); + v,r = stead.call(stead.ref(self.where), 'exit', where); stead.in_exit_call = nil if r == false then return v, ret(r) @@ -1371,30 +1373,30 @@ function go(self, where, back) local res = v; v = nil; - if not back or not isDialog(ref(self.where)) or isDialog(ref(where)) then - v, r = stead.call(ref(where), 'enter', self.where); + if not back or not isDialog(stead.ref(self.where)) or isDialog(stead.ref(where)) then + v, r = stead.call(stead.ref(where), 'enter', self.where); if r == false then return v, ret(r) end need_scene = true; - if ref(was) ~= ref(self.where) then -- jump !!! - where = deref(self.where); + if stead.ref(was) ~= stead.ref(self.where) then -- jump !!! + where = stead.deref(self.where); need_scene = false; end end res = stead.par('^^',res,v); if not back then - ref(where).__from__ = deref(self.where); + stead.ref(where).__from__ = stead.deref(self.where); end - self.where = deref(where); + self.where = stead.deref(where); ret(); PLAYER_MOVED = true - if need_scene then -- or isForcedsc(ref(where)) then -- i'am not sure... - return stead.par('^^',res,ref(where):scene()); + if need_scene then -- or isForcedsc(stead.ref(where)) then -- i'am not sure... + return stead.par('^^', res, stead.ref(where):scene()); end return res; end @@ -1405,7 +1407,7 @@ function player_goto(self, where, ...) end function player_go(self, where) - local w = ref(self.where).way:srch(where); + local w = stead.ref(self.where).way:srch(where); if not w then return nil,false end @@ -1414,7 +1416,7 @@ function player_go(self, where) end function player_save(self, name, h) - h:write(tostring(name)..".where = '"..deref(self.where).."';\n"); + h:write(tostring(name)..".where = '"..stead.deref(self.where).."';\n"); savemembers(h, self, name, false); end @@ -1471,7 +1473,7 @@ function game_life(self) for i,o in opairs(self.lifes) do local vv local pre - o = ref(o); + o = stead.ref(o); if not isDisabled(o) then PLAYER_MOVED = false vv,pre = stead.call(o, 'life'); @@ -1512,7 +1514,7 @@ function check_room(k, v) end function check_player(k, v) - v.where = deref(v.where); + v.where = stead.deref(v.where); end function check_object(k, v) @@ -1525,7 +1527,7 @@ function check_object(k, v) if isPlayer(v) then check_player(k, v); end - for_each(v, k, check_list, isList, deref(v)) + for_each(v, k, check_list, isList, stead.deref(v)) end function for_everything(f, ...) @@ -1549,15 +1551,15 @@ function do_ini(self, load) math.randomseed(os.time(os.date("*t"))) rnd(1); rnd(2); rnd(3); -- Lua bug? - game.pl = deref(game.pl); - game.where = deref(game.where); + game.pl = stead.deref(game.pl); + game.where = stead.deref(game.where); if not load then for_each_object(call_key); for_each_codeblock(call_codekey); for_each_object(check_object); call_key("game", game); - for_each(game, "game", check_list, isList, deref(game)) + for_each(game, "game", check_list, isList, stead.deref(game)) end for_each_object(call_ini, load); me():tag(); @@ -1625,7 +1627,7 @@ function game(v) end function live(v) - return ref(game.lifes:srch(v)); + return stead.ref(game.lifes:srch(v)); end function isEnableSave() @@ -1752,7 +1754,7 @@ function savevar (h, v, n, need) v:save(v.key_name, h, false, true); -- here todo end if need then - if ref(v.key_name) == nil then + if stead.ref(v.key_name) == nil then v.key_name = 'null' end h:write(stead.string.format("%s = %s\n", n, v.key_name)); @@ -1857,7 +1859,7 @@ function game_save(self, name, file) local h; if file ~= nil then - file:write(name..".pl = '"..deref(self.pl).."'\n"); + file:write(name..".pl = '"..stead.deref(self.pl).."'\n"); savemembers(file, self, name, false); return nil, true end @@ -1997,12 +1999,12 @@ iface = { return n..' - '..str; end, xref = function(self, str, obj) - local o = ref(here():srch(obj)); + local o = stead.ref(here():srch(obj)); if not o then - o = ref(ways():srch(obj)); + o = stead.ref(ways():srch(obj)); end if not o then - o = ref(me():srch(obj)); + o = stead.ref(me():srch(obj)); end if not o or not o.id then return str; @@ -2152,28 +2154,28 @@ iface = { function me() - return ref(game.pl); + return stead.ref(game.pl); end function where(s) - if not isObject(ref(s)) then error("Wrong parameter to where.", 2); end - if isPlayer(ref(s)) then - return ref(ref(s).where); + if not isObject(stead.ref(s)) then error("Wrong parameter to where.", 2); end + if isPlayer(stead.ref(s)) then + return stead.ref(stead.ref(s).where); end - return ref(ref(s).__where__); + return stead.ref(stead.ref(s).__where__); end function here() - return ref(me().where); + return stead.ref(me().where); end function from(w) if w == nil then w = here(); else - w = ref(w); + w = stead.ref(w); end - return ref(w.__from__); + return stead.ref(w.__from__); end function time() @@ -2189,7 +2191,7 @@ function objs(w) if not w then return here().obj; else - return ref(w).obj; + return stead.ref(w).obj; end end @@ -2197,7 +2199,7 @@ function ways(w) if not w then return here().way; else - return ref(w).way; + return stead.ref(w).way; end end @@ -2293,7 +2295,7 @@ end function vobj_save(self, name, h, need) local dsc = self.dsc; - local w = deref(self.where); + local w = stead.deref(self.where); if need then h:write(stead.string.format("%s = vobj(%s, %s, %s, %s);\n", @@ -2309,32 +2311,32 @@ end function vobj_act(self, ...) local o, r = here():srch(self); -- self.nam - if ref(o) and ref(o).where then - return goto(ref(o).where); + if stead.ref(o) and stead.ref(o).where then + return goto(stead.ref(o).where); end - return stead.call(ref(r),'act', self.key, ...); + return stead.call(stead.ref(r),'act', self.key, ...); end function vobj_used(self, ...) local o, r = here():srch(self.nam); - return stead.call(ref(r),'used', self.key, ...); + return stead.call(stead.ref(r),'used', self.key, ...); end function vobj(key, name, dsc, w) if not tonumber(key) then error ("vobj key must be number!", 2); end - return obj{ key = key, nam = name, dsc = dsc, where = deref(w), act = vobj_act, used = vobj_used, save = vobj_save, obj = list({}) }; + return obj{ key = key, nam = name, dsc = dsc, where = stead.deref(w), act = vobj_act, used = vobj_used, save = vobj_save, obj = list({}) }; end function vway(name, dsc, w) -- o.object_type = true; - return obj{ key = -1, nam = name, dsc = dsc, act = vobj_act, where = deref(w), used = vobj_used, save = vobj_save, obj = list({}), }; + return obj{ key = -1, nam = name, dsc = dsc, act = vobj_act, where = stead.deref(w), used = vobj_used, save = vobj_save, obj = list({}), }; end function vroom_save(self, name, h, need) if need then - h:write(name.." = vroom('"..self.nam.."','"..deref(self.where).."');\n"); + h:write(name.." = vroom('"..self.nam.."','"..stead.deref(self.where).."');\n"); end savemembers(h, self, name,false); end @@ -2351,7 +2353,7 @@ function vroom(name, w) if w == nil then error("Wrong parameter to vroom.", 2); end - return room { vroom_type = true, nam = name, where = deref(w), enter = vroom_enter, save = vroom_save, }; + return room { vroom_type = true, nam = name, where = stead.deref(w), enter = vroom_enter, save = vroom_save, }; end function goto(what) @@ -2374,7 +2376,7 @@ function rnd(m) end function taken(obj) - if isObject(ref(obj)) and ref(obj)._taken then + if isObject(stead.ref(obj)) and stead.ref(obj)._taken then return true end return false; @@ -2383,16 +2385,16 @@ end function remove(obj, from) local o,w if from then - o,w = ref(from):srch(obj); + o,w = stead.ref(from):srch(obj); else o,w = here():srch(obj); end if w then - ref(w).obj:del(obj); + stead.ref(w).obj:del(obj); end - o = ref(o); + o = stead.ref(o); if not isObject(o) then - o = ref(obj); + o = stead.ref(obj); end if isObject(o) then o.__where__ = nil; @@ -2403,16 +2405,16 @@ end function purge(obj, from) local o,w if from then - o,w = ref(from):srch(obj, true); + o,w = stead.ref(from):srch(obj, true); else o,w = here():srch(obj, true); end if w then - ref(w).obj:purge(obj); + stead.ref(w).obj:purge(obj); end - o = ref(o); + o = stead.ref(o); if not isObject(o) then - o = ref(obj); + o = stead.ref(obj); end if isObject(o) then o.__where__ = nil; @@ -2427,7 +2429,7 @@ function taketo(obj, wh, pos) end inv():add(obj, pos); o._taken = true - wh = deref(me()) + wh = stead.deref(me()) if type(wh) == 'string' then o.__where__ = wh; end @@ -2444,16 +2446,16 @@ end function putto(obj, w, pos) local wh - local o = ref(obj); + local o = stead.ref(obj); if not isObject(o) then error ("Trying to put wrong object.", 2); end if not w then - wh = deref(here()); + wh = stead.deref(here()); w = here(); else - wh = deref(w); - w = ref(w); + wh = stead.deref(w); + w = stead.ref(w); end w.obj:add(obj, pos); if type(wh) == 'string' then @@ -2477,23 +2479,23 @@ placeto = putto function replace(obj, obj2, from) local o,w,i - if not isObject(ref(obj2)) then + if not isObject(stead.ref(obj2)) then error ("Wrong parameter to replace.", 2); end if from then - o,w = ref(from):srch(obj); + o,w = stead.ref(from):srch(obj); else o,w = here():srch(obj); end if w then - ref(w).obj:replace(o, obj2); - ref(obj2).__where__ = deref(w); + stead.ref(w).obj:replace(o, obj2); + stead.ref(obj2).__where__ = stead.deref(w); else place(obj2, from); end - o = ref(o); + o = stead.ref(o); if not isObject(o) then - o = ref(obj); + o = stead.ref(obj); end if isObject(o) then o.__where__ = nil; @@ -2525,10 +2527,10 @@ function seen(obj, wh) if not wh then wh = here(); else - wh = ref(wh); + wh = stead.ref(wh); end local o,w = wh:srch(obj); - o = ref(o); + o = stead.ref(o); if isObject(o) then return o,w end @@ -2539,10 +2541,10 @@ function exist(obj, wh) if not wh then wh = here(); else - wh = ref(wh); + wh = stead.ref(wh); end local o,w = wh:srch(obj, true); - o = ref(o); + o = stead.ref(o); if isObject(o) then return o,w end @@ -2551,7 +2553,7 @@ end function have(obj) local o = inv():srch(obj); - o = ref(o); + o = stead.ref(o); if isObject(o) then return o end @@ -2561,7 +2563,7 @@ end function moveto(obj, there, from, pos) remove(obj, from); putto(obj, there, pos); - return ref(obj); + return stead.ref(obj); end @@ -2719,20 +2721,20 @@ end stead.set_sound = set_sound function change_pl(p) - local o = ref(p); - if type(deref(p)) ~= 'string' or not o then + local o = stead.ref(p); + if type(stead.deref(p)) ~= 'string' or not o then error ("Wrong player name in change_pl...", 2); end - game.pl = deref(p); + game.pl = stead.deref(p); return goto(o.where); end function disabled(o) - return isDisabled(ref(o)) + return isDisabled(stead.ref(o)) end function disable(o) - o = ref(o) + o = stead.ref(o) if isObject(o) then o:disable() end @@ -2740,7 +2742,7 @@ function disable(o) end function enable(o) - o = ref(o) + o = stead.ref(o) if isObject(o) then o:enable() end @@ -2748,7 +2750,7 @@ function enable(o) end function disable_all(o) - o = ref(o) + o = stead.ref(o) if isObject(o) or isList(o) then o:disable_all() end @@ -2756,7 +2758,7 @@ function disable_all(o) end function enable_all(o) - o = ref(o) + o = stead.ref(o) if isObject(o) or isList(o) then o:enable_all() end @@ -2880,10 +2882,10 @@ stead.objects = function(s) allocator = obj { nam = 'allocator', get = function(s, n, c) - if isObject(ref(n)) and stead.api_version >= "1.3.0" then -- static? - return ref(n); + if isObject(stead.ref(n)) and stead.api_version >= "1.3.0" then -- static? + return stead.ref(n); end - local v = ref(c); + local v = stead.ref(c); if not v then error ("Null object in allocator: "..tostring(c)); end @@ -2893,7 +2895,7 @@ stead.objects = function(s) return v end, delete = function(s, w) - w = ref(w); + w = stead.ref(w); if type(w.key_name) ~= 'string' then return end @@ -2903,7 +2905,7 @@ stead.objects = function(s) end end, new = function(s, n, key) - local v = ref(n); + local v = stead.ref(n); if type(v) ~= 'table' or type(n) ~= 'string' then error ("Error in new.", 2); end diff --git a/stead/xact.lua b/stead/xact.lua index ec03aae..0eac986 100644 --- a/stead/xact.lua +++ b/stead/xact.lua @@ -62,7 +62,7 @@ __do_xact = function(str, self) else oo = objs():srch(o) if not oo then - oo = ref(o, true) + oo = stead.ref(o, true) end end elseif isObject(self) then @@ -72,7 +72,7 @@ __do_xact = function(str, self) error("Wrong link: "..s, 3); end d = d:gsub("\001", delim); - return xref(d, ref(oo, true), unpack(aarg)); + return xref(d, stead.ref(oo, true), unpack(aarg)); end if type(str) ~= 'string' then return end local s = stead.string.gsub(str, '\\?[\\{}]',