/
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/
#include "skills.h"
inherit "/std/guilds/standard";

void    setup()
{
    set_name( "wizards" );
    set_short( "Wizards' guild" );
    set_long( 
		 "The wizards' guild is for the more subtle people of the world, " +
		 "we achieve dominance (without fail) by the use of quickness of " +
		 "thought and the judicious use of the miriad of spells at our " +
		 "disposal.  And, unlike the uncouth fighters, if the situation " +
		 "demands violence, we don't endanger ourselves in barbaric melee " +
		 "combat, we blow the bastards up.\n"
		  );
    reset_get();
/*
   add_command("skills", "/std/commands/skills", "skill_list");
   add_command("sk", "/std/commands/skills.new", "skill_list");
 */
    add_command( "skills", 1 );
    add_spell( "missile", "/std/spells/missile", "cast_missile", 0 );
    set_start_pos( "/d/am/uu/uni/guild_room" );
}


int     query_level( object ob )
{
    return( int ) ob->query_skill( "magic" );
}

void    set_gp( object ob )
{
    int     gp;

    gp = (int)ob->query_skill_bonus( "magic.points" );
    ob->set_max_gp( gp + 50 );
}

/*
 * This figures out how much the given skill will cost to advance in
 * It returns a multipler.  10 is normal.
 */
int     query_skill_cost( string skill )
{
    string *bits;

    bits = explode( skill, "." );
    if( bits[ 0 ] == "fighting" )
	return 15;
    if( bits[ 0 ] == "magic" )
	return 3;
    if( bits[ 0 ] == "faith" )
	return 15;
    return 10;
}

/*
 * Returns the maximun level that you are allowed to advance in the
 * given skill.
 */
int     query_skill_max_level( string skill )
{
    string *bits;

    bits = explode( skill, "." );
    if( bits[ 0 ] == "magic" )
	return 300;		/* basically infinite */
    if( bits[ 0 ] == "faith" || bits[ 0 ] == "occult" )
	return 5;
    if( bits[ 0 ] == "fighting" )
	return 25;
    return 10;
}

#if 0
int     query_skill_bonus( int lvl, string skill )
{
    string *bits;

    bits = explode( skill, "." );
    if( (string)this_player()->query_guild_data() == skill )
	return 30 + ::query_skill_bonus( lvl, skill );
    return ::query_skill_bonus( lvl, skill );
}
#endif

#define UNI "the Unseen University "
string  query_title( object player )
{
    int     lvl;
    string  depart;

    lvl = query_level( player );
    depart = (string)player->query_property( "UU department" );
    if( !depart )
	depart = "Practical Necromancy";
    switch( lvl )
    {
	case 0:
	    return UNI + "Applicant";
	case 1..5:
	    return UNI + "Freshman";
	case 6..10:
	    return UNI + "Sophomore";
	case 11..15:
	    return UNI + "Junior";
	case 16..20:
	    return UNI + "Senior";
	case 21..25:
	    return UNI + "Graduate";
	case 26..30:
	    return "the Post-Graduate in" + depart;
	case 31..35:
	    return "the Lecturer in " + depart;
	case 36..40:
	    return "the Senior Lecturer in " + depart;
	case 41..45:
	    return "the Chair of " + depart;
	case 46..300:
	    return "the Dean of " + depart;
	case 301..10000:
	    return "the Archchancellor";
	default:
	    return "the Wizard";
    }
}

void    set_new_level( mixed *arr )
{
    object  ob;
    int     lvl;

    ob = arr[ 0 ];
    lvl = arr[ 1 ];
    ob->add_skill_level( "fighting", lvl );
    ob->add_skill_level( "magic", lvl * 2 );
    ob->adjust_int( 21 );
    ob->adjust_dex( 17 );
    ob->set_con( 15 );
    ob->set_wis( 13 );
    ob->set_str( 5 );
    ob->set_hp( 10000 );
    ob->set_gp( 10000 );
}

int     query_see_octarine()
{
    return 1;
}