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/
/* Cygnus@Nightmare */
/* FIXED by nialson */

#define SKYDUMMY "(: OBJ(/adm/daemon/astronomy_d), \"la_sky\" :)"
#define NITPICKY 0

#include <std.h>
inherit DAEMON;

string path;
string short;
string night_long;
string day_long;
string long;
string *destinations;
mapping item;

status
check_room(object ob) {
   int i;
   status error;
   string message;
   string *items;
   string desc;
   string func;
   
   error = 0;
   
   if (member_array("std/room.c", deep_inherit_list(ob)) == -1)
      if (path != "/std/room") {
	 write("Warning: " + path + " is not a subclass of /std/room.\n");
	 error = 1; }
   
   if (!stringp(geteuid(ob)))
      write("Warning: geteuid() did not return a string.\n");
   
   short = (string)ob->query_short();
   if (!stringp(short)) {
      write("Warning: query_short() did not return a string.\n");
      error = 1; }

   night_long = (string)ob->query("night long");
   day_long = (string)ob->query("day long");
   long = (string)ob->query_long();
   if((string)ob->query_extra_long() != "") long += ob->query_extra_long();
   if (stringp(night_long) == stringp(day_long)) {
      if (!stringp(night_long) && !stringp(long)) {
	 write("Warning: query_long() did not return a string.\n");
	 error = 1;
      }
   } else
      if (stringp(night_long)) {
	 if (!stringp(long)) {
	    write("Warning: query(\"day light\") did not return a" +
		  " string.\n");
	    error = 1;
	 } else
	    day_long = long;
      } else {
	 if (!stringp(long)) {
	    write("Warning: query(\"night light\") did not return a" +
		  " string.\n");
	    error = 1;
	 } else
	    night_long = long;
      }
   
   item = ([ ]);
   
   items = (string *)ob->query_id();
   if (pointerp(items))
      for( i=0 ; i<sizeof(items) ; i++) {
	 if (!stringp(items[i])) {
	    write("Warning: query_id() array member " + i +
		  " is not a string.");
	 } else {
	    if (!mapp(item[items[i]]))
	       item[items[i]] = ([ ]);
	    desc = (string)ob->query_item_description(items[i]);
	    if (functionp(desc)) {
	       if(NITPICKY||(SKYDUMMY!=identify(desc)))
		  item[items[i]]["description"] = identify(desc);}
	    else if (!stringp(desc)) {
	       write("Warning: query_item_description() for \"" +
		     items[i] + "\" did not return a string.");
	    } else
	       item[items[i]]["description"] = desc;
	 }
      }
   
   destinations = (string *)ob->query_destinations();
   if (pointerp(destinations))
      for (i = 0; i < sizeof(destinations); i++) {
	 if (!stringp(destinations[i])) {
	    write("Warning: query_destinations() array member " + i +
		  " is not a string.");
	    error = 1;
	 } else {
	    message = catch(load_object(destinations[i]));
	    if (stringp(message)) {
	       write("Warning: could not load " + destinations[i] +
		     ": " + message);
	       error = 1;
	    }
	 }
      }
   
   return !error;
}

void
   print_room(object ob)
{
   int i;
   string *items;
   
   write("User IDs: " + getuid(ob) + "/" + geteuid(ob));
   write("Short: " + short);
   if (stringp(night_long)) {
      write("Night Long: " + night_long);
      write("Day Long: " + day_long + "\n");
   } else
      write("Long: " + long + "\n");
   
   items = keys(item);
   write(sizeof(items) + " Item(s):");
   for (i = 0; i < sizeof(items); i++)
      if (stringp(item[items[i]]["description"]))
	 write(items[i] + ": " + item[items[i]]["description"] + "\n");
}

int
   cmd_roomcheck(string room)
{
   object ob;
   
   if (stringp(room)) {
      catch(ob = load_object(room));
      if (!objectp(ob)) {
	 notify_fail(query_verb() + ": cannot find or load \"" +
		     room + "\".");
	 return 0;
      }
   } else
      ob = environment(this_player());
   
   path = base_name(ob);
   
   write("Room Check for: " + path);
   
   if (check_room(ob))
      print_room(ob);
   
   return 1;
}

int help()
{
  write( @EndText
Syntax: roomcheck [<filename>]
Effect: Balance command to check rooms.
        Checks the basic room properties have been set in room <filename>
        If <filename> is not specified, your current environment is used.
See doc: /doc/QC/check.doc
See also: acheck, wcheck
EndText
  );
return 1;
}