/* /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 #include #include inherit LIB_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(); SetProperties( ([ "indoors":1, "light":2, "no castle":1]) ); SetShort("the Nightmare Inn"); SetLong( "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 to rent a certain type of room." ); SetItems( ([ "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." ]) ); SetExits( ([ "north" : "/domains/Praxis/hall", "west" : "/domains/Praxis/n_centre1.c", ]) ); // 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); // } // SetNoClean(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]->eventMoveLiving("/domains/Praxis/hotel", "out"); } } } string random_key(int chambre) { return sprintf("praxishotel%d%d", chambre, random(100)); } void init(){ ::init(); }