new object $object_lib: $libraries; var $root created_on = 796268969; var $root flags = ['methods, 'code, 'variables, 'core]; var $root inited = 1; var $root managed = [$object_lib]; var $root manager = $object_lib; var $root trusted = []; public method .format_method_header() { arg obj, method, opt, flags, access; var f; if (access) { // shorten it a little access = tostr(access); access = strsub(access, "protected", "prot"); access = strsub(access, "public", "pub"); opt += ((opt ? " " : "") + "+access=") + access; } f = flags.join(","); // shorten it a little f = strsub(f, "nooverride", "noover"); if (f) opt += ((opt ? " " : "") + "+flags=") + f; return (((("@program " + obj) + ".") + method) + "() ") + opt; }; public method .format_object() { arg obj, chop; var len, line, out, c; if (type(obj) == 'frob) return ["Frob " + (obj.namef('ref))]; c = obj.created_on(); out = ["Object: " + (obj.namef('xref)), "Created: " + (c ? ctime(c) : "(Before Time)"), (("Quota: " + (obj.quota())) + " bytes") + ((obj.quota_exempt()) ? " ** exempt **" : ""), "Perms: " + (((obj.flags()).prefix("+")).join()), ("Size: " + ((obj.size()).to_english())) + " bytes (on disk)", "Manager: " + (.get_name(obj.manager(), 'namef, ['xref]))]; line = obj.writers('literal); if ((line.length()) != 1) line = "Writers: " + (line.to_english("(none)")); else line = "Writer: " + ((line[1]).namef('xref)); if (chop) line = line.chop(chop); out += [line]; line = (obj.trusted('literal)) || []; if (listlen(line)) { line = "Trusts: " + (line.to_english("(none)")); if (chop) line = line.chop(chop); out += [line]; } line = obj.parents(); if ((line.length()) > 1) line = "Parents: " + ((line.mmap('namef, 'xref)).to_english()); else if (!line) line = "Parents: (none)"; else line = "Parent: " + ((line[1]).namef('xref)); if (chop) line = line.chop(chop); out += [line]; if (obj.has_ancestor($located)) out += ["Location: " + (.get_name(obj.location(), 'namef, ['xref]))]; if ((obj.is($exit)) && ((obj.source()) && (obj.dest()))) out += [(("Exit: from " + ((obj.source()).namef('ref))) + " to ") + ((obj.dest()).namef('ref))]; return out; }; public method .get_name() { arg obj, @args; var meth; // get_name(obj, 'method, [args]) (3rd arg must be a list) if (!valid(obj)) return tostr(obj); [(meth ?= 'name), (args ?= [])] = args; return obj.(meth)(@args); }; public method .list_to_objlist() { arg args; var out, x, obj; out = #[['valid, []], ['invalid, []]]; for x in (args) { obj = (| .to_dbref(x) |); if (obj) out = out.add_elem('valid, obj); else out = out.add_elem('invalid, x); } return out; }; public method .parse_method_flags() { arg flags; return (((" " + (('nooverride in flags) ? "!" : "-")) + (('forked in flags) ? "f" : "-")) + (('locked in flags) ? "l" : "-")) + (('native in flags) ? "n" : "-"); }; public method .see_perms() { arg obj, @args; var str, flag, who, encapsulate, flags; [(encapsulate ?= ["[", "]"])] = args; str = encapsulate[1]; flags = obj.flags(); if ('core in flags) { flags = flags.setremove('core); str += "*"; } else { str += "-"; } if ('fertile in flags) { flags = flags.setremove('fertile); str += "f"; } else { str += "-"; } if ('methods in flags) { flags = flags.setremove('methods); str += "m"; } else { str += "-"; } if ('variables in flags) { flags = flags.setremove('variables); str += "v"; } else { str += "-"; } if ('code in flags) { flags = flags.setremove('code); str += "c"; } else { str += "-"; } for flag in (flags) str += (tostr(flag)[1]).uppercase(); return str + (encapsulate[2]); }; public method .str_to_objlist() { arg args; var out, x, obj; if ("," in args) args = args.explode_english_list(); else args = args.explode(); return .list_to_objlist(args); }; public method .to_dbref() { arg obj; var dbref; switch (type(obj)) { case 'string: if (!obj) throw(~invdbref, "Invalid object reference \"\"."); if ((obj[1]) == "$") { obj = obj.subrange(2); dbref = (| lookup(tosym(obj)) |); } else if ((obj[1]) == "#") { obj = substr(obj, 2); if (obj.is_numeric()) dbref = (| toobjnum(toint(obj)) |); else throw(~objnf, ("Cannot find object \"#" + obj) + "\"."); } else { dbref = toint(obj[1]); if (dbref || (obj == "0")) dbref = toobjnum(dbref); else dbref = (| lookup(obj) |); } if (!dbref) dbref = (> lookup(tosym((obj.replace(" ", "_")).lowercase())) <); return dbref; case 'objnum: return obj; default: return (> lookup(obj) <); } };