private string creator;

/*
 * NAME:	_Q_creator()
 * DESCRIPTION:	return the creator of the current object
 */
nomask string _Q_creator()
{
    return creator;
}

/*
 * NAME:	creator()
 * DESCRIPTION:	return the creator of this object
 */
static string creator(object obj)
{
    ARGCHECK(obj, creator, 1);

    return obj->_Q_creator();
}

/*
 * NAME:	init_creator()
 * DESCRIPTION:	set the creator of this object
 */
private void init_creator()
{
    string *path;

    path = explode(object_name(this_object()), "/");
    if (path[0] == "players") {
	creator = path[1];
    } else if (sscanf(object_name(this_object()), "%*s#") == 1 &&
	       previous_object() != 0) {
	creator = previous_object()->_Q_creator();
    }
}