new object $in_location: $located_location;
var $described prose = [];
var $foundation defined_msgs = #[["enter", #[['branches, ["actor", "source", "dest"]]]], ["open", #[['branches, ["general", "actor", "inside"]]]], ["close", #[['branches, ["general", "actor", "inside"]]]]];
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]>, "."], #[]]>]]], ["open", #[["general", <$ctext_frob, [[<$generator, ["actor", [], [], 'gen_actor]>, " opens ", <$generator, ["this", [], [], 'gen_this]>, "."], #[]]>], ["inside", <$ctext_frob, [[<$generator, ["actor", [], [], 'gen_actor]>, " opens ", <$generator, ["this", [], [], 'gen_this]>, "."], #[]]>], ["actor", <$ctext_frob, [["You open ", <$generator, ["this", [], [], 'gen_this]>, "."], #[]]>]]], ["close", #[["inside", <$ctext_frob, [[<$generator, ["actor", [], [], 'gen_actor]>, " closes ", <$generator, ["this", [], [], 'gen_this]>, "."], #[]]>], ["general", <$ctext_frob, [[<$generator, ["actor", [], [], 'gen_actor]>, " closes ", <$generator, ["this", [], [], 'gen_this]>, "."], #[]]>], ["actor", <$ctext_frob, [["You close ", <$generator, ["this", [], [], 'gen_this]>, "."], #[]]>]]]];
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, []]]]]]], ["open", [["open", "*", "open <this>", 'open_cmd, #[[1, ['this, []]]]]]], ["close", [["close", "*", "close <this>", 'close_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]]]], ["closed", #[['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], ["closed", 0]];
var $thing gender = $gender_neuter;
public method .close_cmd() {
arg cmdstr, cmd, this;
var vars, m;
if (.get_setting("closable", $in_location)) {
if (.get_setting("closed", $in_location)) {
return ((.name()).capitalize()) + " is already closed.";
} else {
.set_setting("closed", $in_location, "yes");
vars = #[["$actor", sender()], ["actor", sender().name()], ["$this", this()], ["this", .name()], ["$inside", this()]];
m = .eval_message("close", $in_location, vars);
(.location()).announce(m);
.announce(m);
}
} else {
return ((.name()).capitalize()) + " cannot be closed.";
}
};
public method .description() {
arg flags;
var line;
if (.get_setting("closed", $in_location))
line = (((.gender()).pronoun('ps)).capitalize()) + " is closed.";
else
line = (("Inside " + (.name())) + " you see: ") + ((.contents()).map_to_english('name));
return (> pass(flags) <) + [line];
};
public method .enter_cmd() {
arg cmdstr, cmd, me;
var m, source;
(> .perms(caller(), 'command) <);
if (.get_setting("closed", $in_location)) {
return ((("You can't enter " + (.name())) + " because ") + ((.gender()).pronoun('ps))) + " is closed.";
} else {
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";
};
public method .open_cmd() {
arg cmdstr, cmd, this;
var vars, m;
if (.get_setting("closable", $in_location)) {
if (.get_setting("closed", $in_location)) {
.set_setting("closed", $in_location, "no");
vars = #[["$actor", sender()], ["actor", sender().name()], ["$this", this()], ["this", .name()], ["$inside", this()]];
m = .eval_message("open", $in_location, vars);
(.location()).announce(m);
.announce(m);
} else {
return ((.name()).capitalize()) + " is already opened.";
}
} else {
return ((.name()).capitalize()) + " cannot be opened.";
}
};
public method .tell() {
arg @args;
if (.get_setting("closed", $in_location))
return;
.announce([("[outside " + (.name())) + "]: "] + args);
};