diff --git a/stead/goto.lua b/stead/goto.lua index 6cef49a..2bdd47f 100644 --- a/stead/goto.lua +++ b/stead/goto.lua @@ -49,7 +49,8 @@ go = function (self, where, back, forceenter) self.where = deref(where); end - if not jump and (not back or forceenter) then + if not jump and (not back or forceenter or + not isDialog(ref(was)) or isDialog(ref(where))) then v, r = call(ref(where), 'enter', ref(was)); if r == false then self.where = was; @@ -149,7 +150,9 @@ iface.fmt = function(self, cmd, st, moved, r, av, objs, pv) -- st -- changed sta if st then av = txtem(av); pv = txtem(pv); - r = txtem(r) + if not PLAYER_MOVED then + r = txtem(r) + end if isForcedsc(here()) or NEED_SCENE then l = here():scene(); end diff --git a/stead/object.lua b/stead/object.lua index 8398d5f..981e959 100644 --- a/stead/object.lua +++ b/stead/object.lua @@ -164,6 +164,44 @@ function list_concat(self, other, pos) end end +function list_str(self) + local i, v, vv, o; + for i,o in opairs(self) do + o = ref(o); + if isObject(o) and not isDisabled(o) then + vv = call(o, 'disp'); + if type(vv) ~= 'string' then + vv = call(o, 'nam'); + end + vv = xref(vv, o); + v = stead.par(',', v, vv); + end + end + return v; +end + +function obj_str(self) + local i, v, vv, o; + if not isObject(self) then + return + end + if isDisabled(self) then + return + end + for i,o in opairs(self.obj) do + o = ref(o); + if isObject(o) and not isDisabled(o) then + vv = call(o, 'disp'); + if type(vv) ~= 'string' then + vv = call(o, 'nam'); + end + vv = xref(vv, o); + v = stead.par(',', v, vv, obj_str(o)); + end + end + return v; +end + function path(w, wh) -- search in way, disabled too if not wh then wh = here();