/* /std/room.c
* from Nightmare IV
* the generic room object
* created by Descartes of Borg 940711
*/
#include <std.h>
#include <move.h>
#include <rooms.h>
#include "room.h"
inherit CONTAINER;
inherit EXITS;
inherit ITEMS;
inherit SENSES;
static private int __ResetNumber;
static private string __DayLong, __NightLong;
void create() {
container::create();
exits::create();
items::create();
senses::create();
__ResetNumber = 0;
reset();
call_out("reinitiate", 0);
}
static void reset() {
container::reset();
__ResetNumber++;
}
void init() {
container::init();
exits::init();
senses::init();
}
void set_short(string str) { container::set_short(str); }
void set_long(string str) { container::set_long(str); }
string query_short() {
return container::query_short();
}
varargs string query_long(string str) {
string ret;
object ob;
if(str) return describe(str);
else if(__DayLong && !query_night()) ret = __DayLong;
else if(__NightLong && query_night()) ret = __NightLong;
else ret = container::query_long();
if( !ret ) ret = "";
if(query_extra_long() != "") ret += query_extra_long();
return ret;
}
string query_extra_long() {
object *inv;
string ret, tmp;
int i;
ret = "";
i = sizeof(inv = all_inventory(this_object()));
while(i--)
if(tmp = (string)inv[i]->affect_environment()) ret += " "+tmp;
return ret;
}
int query_reset_number() { return __ResetNumber; }
int move(mixed dest) { return MOVE_NOT_ALLOWED; }
string *query_id() { return items::query_id(); }
int id(string str) { return items::id(str); }
varargs int receive_objects(object ob) {
if(!ob) ob = previous_object();
if(ob == this_object()) return 0;
return 1;
}
void set_day_long(string str) { __DayLong = str; }
string query_day_long() { return __DayLong; }
void set_night_long(string str) { __NightLong = str; }
string query_night_long() { return __NightLong; }