game.hinting = true; game.showlast = true; iface.xref = function(self, str, obj) local o = ref(here():srch(obj)); local cmd='' if not o then o = ref(ways():srch(obj)); if o then cmd = 'go '; end end if not o then o = ref(me():srch(obj)); end if not isObject(o) or isStatus(o) or not o.id then return str; end if isMenu(o) then cmd = 'act '; end return cat('',str,''); end; iface.title = function(self, str) return nil end; iface.under = function(self, str) if str == nil then return nil; end; return cat('',str,''); end; iface.em = function(self, str) if str == nil then return nil; end; return cat('',str,''); end; iface.right = function(self, str) if str == nil then return nil; end; return cat('',str,''); end; iface.left = function(self, str) if str == nil then return nil; end; return cat('',str,''); end; iface.center = function(self, str) if str == nil then return nil; end; return cat('',str,''); end; iface.bold = function(self, str) if str == nil then return nil; end; return cat('',str,''); end; iface.inv = function(self, str) if str then return string.gsub(str,',','^'); end return str end; iface.ways = function(self, str) if str then return ''..string.gsub(str,',',' | ')..''; end return str end; -- here is gui staff only function stat(v) v.status_type = true return obj(v); end function isStatus(v) if type(v) ~= 'table' then return false end if v.status_type then return true end return false end function menu_save(self, name, h, need) local dsc; if need then h:write(name.." = menu {nam = '"..tostring(self.nam).."'}\n"); end savemembers(h, self, name, need); end function menu(v) v.menu_type = true if v.inv == nil then v.inv = function(s) return call(s,'act'); end end if v.save == nil then v.save = menu_save; end return obj(v); end function isMenu(v) if type(v) ~= 'table' then return false end if v.menu_type then return true end return false end