/
CDC-1.2b/
CDC-1.2b/src/
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));
.