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/
#define PLAYER 0
#define WIZ    1
#define ADMIN  2

mapping privs;

void restore_me( void ) {
  restore_object( "/kernel/daemons/data/secure_d.o" );
}

void save_me( void ) {
  save_object( "/kernel/daemons/data/secure_d.o" );
}

void create( void ) {
  /* privs =  ([ "fudge" : ADMIN ]); */
  privs =  ([]);
  restore_me();
}

void make_wizard( string name ) {
  object player;

  if( previous_object()->base_name() != "/kernel/cmds/admin/mkwiz" ) {
    write( "Hey! No cheating!\n" );
  }

  name = lowercase( name );
  if( file_exists( "/data/players/" + name + ".o" ) ) {
    privs[name] = WIZ;
    player = USER_D->find_player( name );
    if( player == 0 ) {
      /* Player not active now, load him in and add his paths. */
      player = clone_object( "/std/player" );
      player->set_name( name );
      player->restore_me();
      player->add_cmd_path( "/cmds/wiz" );
      player->save_me();
      destruct_object( player );
    } else {
      player->add_cmd_path( "/cmds/wiz" );
      player->save_me();
    }
    write( capitalize( name ) + " has been made a wizard." );
    save_me();
  } else {
    write( "No such player.\n" );
  }
}

void make_admin( string name ) {
  object player;

  name = lowercase( name );
  if( file_exists( "/data/players/" + name + ".o" ) ) {
    privs[name] = ADMIN;
    player = USER_D->find_player( name );
    if( player == 0 ) {
      /* Player not active now, load him in and add his paths. */
      player = clone_object( "/std/player" );
      player->set_name( name );
      player->restore_me();
      player->add_cmd_path( "/cmds/wiz" );
      player->add_cmd_path( "/kernel/cmds/admin" );
      player->save_me();
      destruct_object( player );
    } else {
      player->add_cmd_path( "/cmds/wiz" );
      player->add_cmd_path( "/kernel/cmds/admin" );
      player->save_me();
    }
    write( capitalize( name ) + " has been made an admin." );
    save_me();
  } else {
    write( "No such player.\n" );
  }
}

int query_admin( string name ) {
  if( privs[name] == ADMIN )
    return 1;
  return 0;
}

int query_wiz( string name ) {
  if( privs[name] == ADMIN || privs[name] == WIZ )
    return 1;
  return 0;
}

int query_priv( string name ) {
  if( map_sizeof(privs) == 0 )
  	make_admin( name );
  return( privs[name] );
}