/
LIB3/
LIB3/D/ADMIN/
LIB3/D/ADMIN/OBJ/
LIB3/D/ADMIN/ROOM/W/
LIB3/D/HOME/
LIB3/D/HOME/CITY/ARENA/
LIB3/D/HOME/CITY/ITEMS/
LIB3/D/HOME/CITY/POSTOFFI/
LIB3/DOC/
LIB3/GLOBAL/SPECIAL/
LIB3/GLOBAL/VIRTUAL/
LIB3/NET/
LIB3/NET/CONFIG/
LIB3/NET/DAEMON/CHARS/
LIB3/NET/GOPHER/
LIB3/NET/INHERIT/
LIB3/NET/OBJ/
LIB3/NET/SAVE/
LIB3/NET/VIRTUAL/
LIB3/OBJ/B_DAY/
LIB3/OBJ/HANDLERS/TERM_TYP/
LIB3/PLAYERS/B/
LIB3/PLAYERS/N/
LIB3/ROOM/
LIB3/SAVE/
LIB3/SAVE/BOARDS/
LIB3/SAVE/ENVIRON/
LIB3/SAVE/POST/
LIB3/STD/COMMANDS/SHADOWS/
LIB3/STD/CREATOR/
LIB3/STD/DOM/
LIB3/STD/EFFECTS/
LIB3/STD/EFFECTS/HEALING/
LIB3/STD/EFFECTS/OTHER/
LIB3/STD/EFFECTS/POISONS/
LIB3/STD/ENVIRON/
LIB3/STD/GUILDS/
LIB3/STD/LIQUIDS/
LIB3/STD/ROOM/
LIB3/STD/TRIGGER/SHADOW/
LIB3/W/
LIB3/W/BANNOR/
LIB3/W/NEWSTYLE/
inherit "/std/basic/print_object";
#include "race.h"

mapping races, guilds;

void    create()
{
    races = ([ 
  0:		  "/std/races/unknown",		/* first the null race */
  "troll":	  "/std/races/troll",
  "human":	  "/std/races/human",
  "elf":	  "/std/races/elf",
  "dwarf":	  "/std/races/dwarf",
  "half elf":	  "/std/races/half_elf",
  "hobbit":	  "/std/races/hobbit",
  "orc":	  "/std/races/orc",
  "mul":	  "/std/races/mul",
  "gnome":	  "/std/races/gnome"
		   ]);
    guilds = ([ 
  0:		   "/std/guilds/standard",
  "fighter":	   "/d/guilds/fighters/guild_object",
  "warrior":	   "/d/guilds/fighters/guild_object",
  "soldier":	   "/d/guilds/fighters/guild_object",
  "guard":	   "/d/guilds/fighters/guild_object",
  "thief":	   "/d/guilds/thieves/guild_object",
  "scout":	   "/d/guilds/thieves/guild_object",
  "spy":	   "/d/guilds/thieves/guild_object",
  "burgular":	   "/d/guilds/thieves/guild_object",
  "priest":	   "/d/guilds/priests/guild_object",
  "monk":	   "/d/guilds/priests/guild_object",
  "wizard":	   "/d/guilds/wizards/guild_object",
  "mage":	   "/d/guilds/wizards/guild_object",
  "magician":	   "/d/guilds/wizards/guild_object"
		    ]);
}

int     query_valid_race( string race )
{
    return !undefinedp( races[ race ] );
}

void    set_level( int lvl, string race, string class )
{
    object  ob;
    string  race_ob, guild_ob;

    if( races[ race ] )
	race_ob = races[ race ];
    else
	race_ob = races[ 0 ];
    if( guilds[ class ] )
	guild_ob = guilds[ class ];
    else
	guild_ob = guilds[ 0 ];

    ob = previous_object();
    ob->set_no_check( 1 );
    ob->set_race_ob( race_ob );
    race_ob->start_player( ob );
    race_ob->set_level( ob, lvl );

    ob->set_guild_ob( guild_ob );
    guild_ob->start_player( ob );
    guild_ob->set_level( ob, lvl, class );
}

int     add_race( string name, mixed ob )
{
    if( races[ name ] )
	return 0;
  races += ([ name:ob ]);
    return 1;
}

int     remove_race( string name )
{
    if( !races[ name ] )
	return 0;
    races = m_delete( races, name );
    return 1;
}

mapping query_races()
{
    return races;
}

int     add_guild( string name, mixed ob )
{
    if( guilds[ name ] )
	return 0;
  guilds += ([ name:ob ]);
    return 1;
}

int     remove_guild( string name )
{
    if( !guilds[ name ] )
	return 0;
    guilds = m_delete( guilds, name );
    return 1;
}

mapping query_guilds()
{
    return guilds;
}