#include "std.h" int lamp_is_lit, reboot_time, time_from_reset, last_reset_cycle; int list_length; void reset(string arg) { if (time_from_reset) last_reset_cycle = time() - time_from_reset; time_from_reset = time(); if (arg) return; set_light(1); reboot_time = time(); } void init() { add_action("west", "west"); add_action("open", "open"); add_action("push", "push"); add_action("push", "press"); add_action("close", "close"); add_action("pray", "pray"); add_action("pray", "regenerate"); add_action("south", "south"); } string short() { return "Village church"; } void long(string str) { if (str == "clock") { int i, j; write("The clock shows "); i = time() - reboot_time; j = i / 60 / 60 / 24; if (j == 1) write("1 day "); else if (j > 0) write(j + " days "); i -= j * 60 * 60 * 24; j = i / 60 / 60; if (j == 1) write("1 hour "); else if (j > 0) write(j + " hours "); i -= j * 60 * 60; j = i / 60; if (j == 1) write("1 minute "); else if (j > 0) write(j + " minutes "); i -= j * 60; if (i == 1) write("1 second"); else if (i > 0) write(i + " seconds"); write("\n"); if (this_player()->query_level() < 20) return; write("Time since reset is " + (time() - time_from_reset) + " seconds.\n"); if (last_reset_cycle) write("Reset cycle: " + last_reset_cycle + "\n"); write("Free block list length: " + list_length + "\n"); return; } if (str == "door") { if (!"room/elevator"->query_door(0) && "room/elevator"->query_level(0)) write("The door is open.\n"); else write("The door is closed.\n"); return; } if (str == "pit") { write("In the middle of the church is a deep pit.\n"+ "It was used for sacrifice in the old times, but nowadays\n" + "it is only left for tourists to look at.\n"); return; } write("You are in the local village church.\nThere is a huge pit in the center,\n" + "and a door in the west wall. There is a button beside the door.\n"); write("This church has the service of reviving ghosts. Dead people come\n"); write("to the church and pray.\n"); write("There is a clock on the wall.\n"); write("There is an exit to south.\n"); if (lamp_is_lit) write("The lamp beside the elevator is lit.\n"); } int id(string str) { return str == "door" || str == "pit" || str == "clock"; } int xyzzy() { write("Everything shimmers.\n"); write("You wake up elsewhere...\n"); this_player()->move_player("elsewhere#room/test"); return 1; } int west() { if ("room/elevator"->query_door(0) || "room/elevator"->query_level(0) != 2) { write("The door is closed.\n"); return 1; } this_player()->move_player("west#room/elevator"); return 1; } int open(string str) { if (str != "door") return 0; if ("room/elevator"->query_level(0) != 2) { write("You can't when the elevator isn't here.\n"); return 1; } "room/elevator"->open_door("door"); return 1; } int close(string str) { if (str != "door") return 0; "room/elevator"->close_door("door"); return 1; } int push(string str) { if (str && str != "button") return 0; if ("room/elevator"->call_elevator(2)) lamp_is_lit = 1; return 1; } void elevator_arrives() { say("The lamp on the button beside the elevator goes out.\n"); lamp_is_lit = 0; } int pray() { return this_player()->remove_ghost(); } int prevent_look_at_inv(string str) { return str != 0; } int south() { this_player()->move_player("south#room/vill_green"); return 1; } int query_drop_castle() { return 1; }