nightmare3_fluffos_v2/
nightmare3_fluffos_v2/bin/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/ChangeLog.old/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/Win32/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/compat/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/compat/simuls/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/include/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/clone/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/command/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/data/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/etc/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/include/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/inherit/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/inherit/master/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/log/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/tests/compiler/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/tests/efuns/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/tests/operators/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/u/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/tmp/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/windows/
nightmare3_fluffos_v2/lib/cmds/ambassador/
nightmare3_fluffos_v2/lib/cmds/database/
nightmare3_fluffos_v2/lib/cmds/hm/
nightmare3_fluffos_v2/lib/cmds/soul/
nightmare3_fluffos_v2/lib/daemon/cfg/
nightmare3_fluffos_v2/lib/daemon/cfg/mon_races/
nightmare3_fluffos_v2/lib/daemon/cfg/races/
nightmare3_fluffos_v2/lib/daemon/include/
nightmare3_fluffos_v2/lib/daemon/save/
nightmare3_fluffos_v2/lib/daemon/services/
nightmare3_fluffos_v2/lib/daemon/soul/
nightmare3_fluffos_v2/lib/doc/
nightmare3_fluffos_v2/lib/doc/TestPlans/
nightmare3_fluffos_v2/lib/doc/approval/
nightmare3_fluffos_v2/lib/doc/approval/QC/
nightmare3_fluffos_v2/lib/doc/approval/balance/
nightmare3_fluffos_v2/lib/doc/build/
nightmare3_fluffos_v2/lib/doc/build/armours/
nightmare3_fluffos_v2/lib/doc/build/economy/
nightmare3_fluffos_v2/lib/doc/build/etc/
nightmare3_fluffos_v2/lib/doc/build/monster/
nightmare3_fluffos_v2/lib/doc/build/room/
nightmare3_fluffos_v2/lib/doc/build/virtual/
nightmare3_fluffos_v2/lib/doc/build/weapon/
nightmare3_fluffos_v2/lib/doc/classes/
nightmare3_fluffos_v2/lib/doc/efun/
nightmare3_fluffos_v2/lib/doc/etc/
nightmare3_fluffos_v2/lib/doc/help/creator/
nightmare3_fluffos_v2/lib/doc/help/hm/
nightmare3_fluffos_v2/lib/doc/law/
nightmare3_fluffos_v2/lib/doc/lpc/basic/
nightmare3_fluffos_v2/lib/doc/lpc/data_types/
nightmare3_fluffos_v2/lib/doc/lpc/etc/
nightmare3_fluffos_v2/lib/doc/lpc/intermediate/
nightmare3_fluffos_v2/lib/doc/lpc/types/
nightmare3_fluffos_v2/lib/doc/mudlib/
nightmare3_fluffos_v2/lib/doc/mudlib/features/
nightmare3_fluffos_v2/lib/domains/Examples/etc/
nightmare3_fluffos_v2/lib/domains/Examples/room/
nightmare3_fluffos_v2/lib/domains/Examples/virtual/
nightmare3_fluffos_v2/lib/domains/Examples/virtual/exaA/
nightmare3_fluffos_v2/lib/domains/Examples/virtual/exaB/
nightmare3_fluffos_v2/lib/domains/Examples/weapon/
nightmare3_fluffos_v2/lib/domains/Praxis/
nightmare3_fluffos_v2/lib/domains/Praxis/adm/
nightmare3_fluffos_v2/lib/domains/Praxis/attic/
nightmare3_fluffos_v2/lib/domains/Praxis/cemetary/
nightmare3_fluffos_v2/lib/domains/Praxis/cemetary/mon/
nightmare3_fluffos_v2/lib/domains/Praxis/data/
nightmare3_fluffos_v2/lib/domains/Praxis/death/
nightmare3_fluffos_v2/lib/domains/Praxis/mountains/
nightmare3_fluffos_v2/lib/domains/Praxis/obj/armour/
nightmare3_fluffos_v2/lib/domains/Praxis/obj/magic/
nightmare3_fluffos_v2/lib/domains/Praxis/obj/weapon/
nightmare3_fluffos_v2/lib/domains/Praxis/orc_valley/
nightmare3_fluffos_v2/lib/domains/Praxis/quests/
nightmare3_fluffos_v2/lib/domains/Praxis/standardOld/
nightmare3_fluffos_v2/lib/include/
nightmare3_fluffos_v2/lib/log/
nightmare3_fluffos_v2/lib/log/errors/
nightmare3_fluffos_v2/lib/log/reports/
nightmare3_fluffos_v2/lib/log/watch/
nightmare3_fluffos_v2/lib/news/
nightmare3_fluffos_v2/lib/secure/cfg/
nightmare3_fluffos_v2/lib/secure/cmds/ambassador/
nightmare3_fluffos_v2/lib/secure/cmds/mortal/
nightmare3_fluffos_v2/lib/secure/save/users/d/
nightmare3_fluffos_v2/lib/secure/std/
nightmare3_fluffos_v2/lib/std/hm/
nightmare3_fluffos_v2/lib/std/living/
nightmare3_fluffos_v2/lib/std/room/
nightmare3_fluffos_v2/lib/std/user/
nightmare3_fluffos_v2/lib/std/virtual/
nightmare3_fluffos_v2/lib/www/
nightmare3_fluffos_v2/lib/www/errors/
nightmare3_fluffos_v2/lib/www/gateways/
nightmare3_fluffos_v2/win32/
/*    /d/standard/hotel.c
 *    from Nightmare IV
 *    a place to stay for rest and other things
 *    created by Descartes of Borg (what a cutie!) 
 *    and Lassondra@Nightmare 940424
 */

#include <std.h>
#include <clock.h>
#include <daemons.h>

inherit ROOM;

int query_occupied(int chambre);
string query_key_id(int chambre);
object query_room(int chambre);
void check_out();
static private void random_key(int chambre);

static private mapping __Rooms;

void create() {
    int x;

    room::create();
    set_properties( ([ "indoors":1, "light":2, "no castle":1]) );
    set_short("the Nightmare Inn");
    set_long(
      "You find yourself at the entrance of the most prestigious "
      "inn in Nightmare. The floor is carpeted with plush red carpet, "
      "and the walls are trimmed with golden paint. Large oaken "
      "doors from where you entered stand behind you, and directly "
      "in front of you the front desk of the hotel stands."
" Type list to see the available rooms, and <rent 'type'> to rent a certain type of room."
	      );
    set_items( ([ "entrance" : "The lobby of the hotel is very "
		 "large and spacious. It looks like it is a rather "
		 "expensive hotel.",
		 "floor" : "The floor is covered with a very thick "
		 "red carpet, with golden fringes at the edges.",
		 "carpet" : "The carpet is in good shape, although "
		 "it is a bit worn in spots. There is a golden "
		 "symbol of the hotel standing in the center of it.",
		 ({ "wall", "walls" }) : 
		 "The walls have been painted white with some gold "
		 "trim on all the edges.",
	      ({ "doors", "door" }) :
		 "The heavy oaken doors are ornately carved with "
		 "the hotel ensignia. The doors gleam in the light "
		 "from the large amount of polishing they receive.",
		 "desk" : "The front desk is also made from oak, and "
		 "stands at the back of the lobby.",
		 "hotel" : "You are in the Nightmare Inn."
		 ])
	      );
set_exits( ([ "north" : "/domains/Praxis/hall" ]) );
    if(!event_pending(this_object())) {
        if((x=hour(time())) > 9) x= (9+(20-x))*HOUR;
        else x = HOUR*(9-x);
        event("check_out", x, 0, 1);
    }
    set_no_clean(1);
    __Rooms = allocate_mapping(10);
    this_object()->check_out();
}

void reset() {
    int x;

    room::reset();
    if(present("receptionist")) return;
    new("/domains/Praxis/obj/mon/receptionist")->move(this_object());
}

void set_occupied(int x) { __Rooms[x]["occupied"] = 1; }

int query_occupied(int chambre) {
    return __Rooms[chambre]["occupied"];
}

string query_key_id(int chambre) {
    return __Rooms[chambre]["key id"];
}

object query_room(int x) {
    return load_object(sprintf("/domains/Praxis/inn%d", x));
  }

void check_out() {
    object *tmp;
    int i, j;

    if(previous_object() != this_object() &&
      base_name(previous_object()) != EVENTS_D) return;
    for(i=1; i<11; i++) {
        __Rooms[100+i] = ([ "occupied":0, "key id": random_key(100+i) ]);
        j = sizeof(tmp = livings() & all_inventory(query_room(100+i)));
        while(j--) {
            message("my_action", "Check out time!\nThe receptionist "
              "hurries you out into the lobby.", tmp[j]);
            tmp[j]->move_player("/domains/Praxis/hotel", "out");
	  }
      }
}

string random_key(int chambre) {
    return sprintf("praxishotel%d%d", chambre, random(100));
}