Described object

    This object defines behavior having to do with having a description.

    Public methods:

	description()			Get description
	full_description()		Get description for 'look'

    Owner methods:

	set_description(s)		Set description

    Verbs:

	look_verb("look", this)		Verb to look at the object.
	describe_verb("@desc", this, "as", s)
					Set description.

parent verbs
object described

var described description 0

method init
    arg ancestors;

    (> pass(ancestors) <);
    if (definer() in ancestors)
	description = "You see nothing special.";
.

eval
    .initialize();
    .set_name("Generic described object");
    .add_verb("l?ook %this", 'look_verb, 'noremote);
    .add_verb("@desc?ribe %this as *", 'describe_verb, 'remote);
.

method description
    return description;
.

method full_description
    return description;
.

method set_description
    arg s;

    if (!.is_owned_by(sender()))
	throw(~perm, "Sender is not an owner.");
    description = s;
.

method look_verb
    arg dummy1, dummy2;
    var actor;

    actor = sender();
    actor.tell(.full_description());
.

method describe_verb
    arg dummy1, dummy2, dummy3, desc;
    var actor;

    actor = sender();
    if (!.is_owned_by(sender())) {
	actor.tell("Permission denied.");
    } else {
	.set_description(desc);
	actor.tell("Description set.");
    }
.