gurba-0.40/
gurba-0.40/bin/
gurba-0.40/lib/
gurba-0.40/lib/cmds/guild/fighter/
gurba-0.40/lib/cmds/monster/
gurba-0.40/lib/cmds/race/catfolk/
gurba-0.40/lib/cmds/race/dwarf/
gurba-0.40/lib/cmds/verb/
gurba-0.40/lib/daemons/data/
gurba-0.40/lib/data/boards/
gurba-0.40/lib/data/messages/
gurba-0.40/lib/data/players/
gurba-0.40/lib/design/
gurba-0.40/lib/domains/gurba/
gurba-0.40/lib/domains/gurba/guilds/fighter/
gurba-0.40/lib/domains/gurba/monsters/
gurba-0.40/lib/domains/gurba/objects/armor/
gurba-0.40/lib/domains/gurba/objects/clothing/
gurba-0.40/lib/domains/gurba/objects/weapons/
gurba-0.40/lib/domains/gurba/vendors/
gurba-0.40/lib/kernel/cmds/admin/
gurba-0.40/lib/kernel/daemons/
gurba-0.40/lib/kernel/include/
gurba-0.40/lib/kernel/lib/
gurba-0.40/lib/kernel/net/
gurba-0.40/lib/kernel/sys/
gurba-0.40/lib/logs/
gurba-0.40/lib/pub/
gurba-0.40/lib/std/modules/languages/
gurba-0.40/lib/std/races/
gurba-0.40/lib/std/races/monsters/
gurba-0.40/lib/wiz/fudge/
gurba-0.40/lib/wiz/spud/
gurba-0.40/src/host/beos/
gurba-0.40/src/host/pc/res/
gurba-0.40/src/kfun/
gurba-0.40/src/lpc/
gurba-0.40/src/parser/
gurba-0.40/tmp/
/*
 *  ??.??.??  Fudge created
 *  03.08.98  Satch added 'reason' for shutdown.
 *
 */

#define MSG1   "Game driver tells you: Shutting down immediatly!\n"
#define MSG2   "Game driver tells you: Shutting down in "+mins+" minutes!\n"
#define SYNTAX "Useage: shutdown <\"now\"/minutes> <reason>\n"
#define S_LOG  "/logs/shutdowns"

void    do_shutdown();
void    countdown( int mins );


void main( string arg )
{
   object *usrs;
   string time, reason;

   if( arg == "" )
   {
      write(SYNTAX);
      return;
   }

   if( sscanf( arg, "%s %s", time, reason ) !=2 )
   {
      write( SYNTAX );
      return;
   }

   if( lowercase( time ) == "now" )
   {
   write_file( S_LOG, 
      ctime( time() )+": "+this_player()->query_Name()+" forced a shutdown.\n"+
      "REASON: "+reason+"\n" );

      do_shutdown();

   } else {

   write_file( S_LOG,
      ctime( time() )+": "+this_player()->query_Name()+" forced a shutdown.\n"+
      "REASON: "+reason+"\n" );

       countdown( str2val( time ));
   }
}

void do_shutdown()
{
   object *usrs;
   int i;

   usrs = USER_D->query_users();

   for( i=0; i < sizeof( usrs ); i++ )
   {
      usrs[i]->query_player()->message( MSG1 );
      usrs[i]->query_player()->save_me();
   }
   shutdown();
}

void countdown( int mins )
{
   object *usrs;
   int i;

   usrs = USER_D->query_users();

   if( mins == 0 )
   {
      do_shutdown();
   
   } else {
   
   for( i=0; i < sizeof( usrs ); i++ )
   {
      usrs[i]->query_player()->message( MSG2 );
   }
   call_out( "countdown", 60, mins -1 );
   }
}