[Turn on line numbering]
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 = obj.replace(" ", "_").lowercase();
catch ~symbol
dbref = tosym(dbref);
with
throw(~symbol, "Object reference '" + dbref + "' is invalid.");
dbref = (> lookup(dbref) <);
}
return dbref;
case 'objnum:
return obj;
default:
return (> lookup(obj) <);
}
["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]