#include "std.h"
int lamp_is_lit;
reset(arg)
{
if (arg)
return;
set_light(1);
}
init()
{
if (call_other(this_player(), "query_level", 0) >= 20) {
add_action("xyzzy"); add_verb("xyzzy");
}
add_action("east"); add_verb("east");
add_action("west"); add_verb("west");
add_action("open"); add_verb("open");
add_action("push"); add_verb("push");
add_action("push"); add_verb("press");
add_action("close"); add_verb("close");
add_action("regenerate"); add_verb("regenerate");
add_action("south"); add_verb("south");
}
short() {
return "Endoplasmatorium";
}
long(str)
{
if (str == "elevator" || str == "door") {
if (!call_other("room/elevator", "query_door", 0) &&
call_other("room/elevator", "query_level", 0))
write("The door is open.\n");
else
write("The door is closed.\n");
return;
}
write("This is the Endoplasmatorium. As the name implies, it is a place where\n");
write("people without bodies come to get them. Ghosts come here to regenerate.\n");
write(" To the east is a clinic for adventurers.\n");
write(" There is an elevator on the west wall.\n");
write(" There is a door marked 'exit' to south.\n");
if (lamp_is_lit)
write("The lamp beside the elevator is lit.\n");
}
id(str) {
return (str == "door" || str == "elevator");
}
xyzzy() {
write("Everything shimmers.\n");
write("You wake up elsewhere...\n");
call_other(this_player(), "move_player", "elsewhere#room/test");
}
west() {
if (call_other("room/elevator", "query_door", 0) ||
call_other("room/elevator", "query_level", 0) != 2) {
write("The door is closed.\n");
return 1;
}
call_other(this_player(), "move_player", "west#room/elevator");
return 1;
}
east() {
call_other(this_player(), "move_player", "east#room/clinic");
return 1;
}
open(str)
{
if (str != "door")
return 0;
if (call_other("room/elevator", "query_level", 0) != 2) {
write("You can't when the elevator isn't here.\n");
return 1;
}
call_other("room/elevator", "open_door", "door");
return 1;
}
close(str)
{
if (str != "door")
return 0;
call_other("room/elevator", "close_door", "door");
return 1;
}
push(str)
{
if (str && str != "button")
return 0;
if (call_other("room/elevator", "call_elevator", 2))
lamp_is_lit = 1;
return 1;
}
elevator_arrives()
{
say("The lamp on the button beside the elevator goes out.\n");
lamp_is_lit = 0;
}
regenerate() {
return call_other(this_player(), "remove_ghost", 0);
}
prevent_look_at_inv(str)
{
return str != 0;
}
south() {
call_other(this_player(), "move_player", "south#room/vill_green");
return 1;
}