parent $located_location
object $body
var $root child_index 0
var $root owners [$body]
var $root fertile 0
var $has_verbs verbs #[]
var $location contents []
var $located location $nowhere
var $root inited 1
var $root owned [$body]
var $body body_parts #[]
var $gendered gender $gender_neuter
var $located obvious 1
var $described prose #[]
var $root manager $body
var $root writable [$body]
var $root readable ['parameters, 'methods, 'code]
var $root dbref 'body
var $named name ['uniq, "Generic Body"]
var $named name_aliases []
var $old_command_environment verb_cache #[]
var $old_command_environment command_cache []
var $old_command_environment shortcuts_cache []
var $body available_body_parts 0
var $body wearing 0
method tell
//
.
method set_body_part
arg part, frob, param;
if (sender().has_ancestor($wearable_class))
throw(~perm, "Sender must be $wearable_class.");
body_parts = dict_add(body_parts, frob.new(part, param));
.
method wearing
arg [args];
var x, w;
w = wearing || [];
if (args && ('objects in args)) {
for x in [1 .. listlen(w)]
w = replace(w, x, class(w[x]));
}
return w;
.
method body_parts
return body_parts;
.
method namef
arg [args];
if (!args)
args = [['name]];
if (((args[1]) == 'nactivity) || ((args[1]) == 'titled))
args = sublist(args, 2);
return pass(@args);
.
method available_body_parts
return available_body_parts || ['head, 'rleg, 'lleg, 'rarm, 'larm, 'torso];
.
method wear
arg frob;
if (caller() != $wearable_class)
throw(~wear, "You can only wear descendants of $wearable_class.");
wearing = wearing ? [@wearing, frob] | [frob];
.
method shed
arg name;
var f;
(> .perms(sender(), 'this) <);
for f in (.wearing()) {
if (match_begin(f.name(), name))
wearing = setremove(wearing, f);
}
.
method environment
return pass() + (.wearing('objects));
.