/
ColdCore-3.0a8/
ColdCore-3.0a8/src/
new object $in_location: $located_location;

var $described prose = [];
var $foundation defined_msgs = #[["enter", #[['branches, ["actor", "source", "dest"]]]]];
var $foundation msgs = #[["enter", #[["actor", <$ctext_frob, [["You enter ", <$generator, ["dest", [], [], 'gen_dest]>, "."], #[]]>], ["source", <$ctext_frob, [[<$generator, ["actor", [], [], 'gen_actor]>, " enters ", <$generator, ["dest", [], [], 'gen_dest]>, "."], #[]]>], ["dest", <$ctext_frob, [[<$generator, ["actor", [], [], 'gen_actor]>, " enters from ", <$generator, ["source", [], [], 'gen_source]>, "."], #[]]>]]]];
var $has_commands local = \
	#[["exit|leave", [["exit|leave", "", "exit|leave", 'exit_cmd, #[]]]], ["exit", [["exit", "", "exit", 'exit_cmd, #[]]]]];
var $has_commands remote = #[["enter", [["enter", "*", "enter <this>", 'enter_cmd, #[[1, ['this, []]]]]]]];
var $has_commands shortcuts = #[];
var $has_name name = ['prop, "in_location", "in_location"];
var $located location = $nowhere;
var $located obvious = 1;
var $location contents = [];
var $root created_on = 809991552;
var $root defined_settings = #[["locked", #[['parse, ['is_boolean]], ['format, ['format_boolean]]]], ["lockable", #[['parse, ['is_boolean]], ['format, ['format_boolean]]]], ["closable", #[['parse, ['is_boolean]], ['format, ['format_boolean]]]], ["open", #[['parse, ['is_boolean]], ['format, ['format_boolean]]]]];
var $root flags = ['methods, 'code, 'variables, 'core, 'fertile];
var $root inited = 1;
var $root managed = [$in_location];
var $root manager = $in_location;
var $root settings = #[["locked", 0], ["lockable", 0], ["closable", 0], ["open", 1]];
var $thing gender = $gender_neuter;

public method .description() {
    arg flags;
    var line;
    
    if (.get_setting("open", $in_location))
        line = (("Inside " + (.name())) + " you see: ") + ((.contents()).map_to_english('name));
    else
        line = (((.gender()).pronoun('ps)).capitalize()) + " is closed.";
    return (> pass(flags) <) + [line];
};

public method .enter_cmd() {
    arg cmdstr, cmd, me;
    var m, source;
    
    (> .perms(caller(), 'command) <);
    source = sender().location();
    m = .eval_message("enter", $in_location, #[["actor", sender().name()], ["$actor", sender()], ["source", source.name()], ["$source", source], ["dest", .name()], ["$dest", this()], ["this", this()]]);
    sender().move_to(this());
    (.location()).announce(m);
    return .announce(m);
};

public method .exit_cmd() {
    arg cmdstr, cmd;
    
    (> .perms(caller(), 'command) <);
    if ((sender().location()) != this())
        return ("You are not in " + (.name())) + "!";
    sender().move_to(.location());
    (.location()).announce(((((sender().name()).capitalize()) + " exits ") + (.name())) + ".", this(), sender());
    .announce(((sender().name()).capitalize()) + " leaves.");
    return "You arrive";
};