/
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"
/* lists all of the players skills.
 * giving levels (default) or bonuses
 */
string  rec_list( mapping sks, string path, int all, int lvl, int n_rec )
{
    int     i, sk;
    string  str, tp;
    string *sks_i;

    str = "";
    sks_i = m_indices( sks );
    for( i = 0; i < sizeof( sks_i ); i++ )
    {
	tp = path + "." + sks_i[ i ];
	sk = (int)this_player()->query_skill( tp );
	str += sprintf( "%*'| 's%*'.'-s %4d %4d\n", ( lvl - 1 ) * 2, "", 20 - ((lvl - 1) * 2),
			sks_i[ i ], sk, ( int ) this_player()->query_skill_bonus( tp ) );

	if( sizeof( sks[ sks_i[ i ] ][ SKILL_BIT ] ) && (all || sk > 5 * lvl) && !n_rec )
	    str += rec_list( sks[ sks_i[ i ] ][ SKILL_BIT ], tp, all, lvl + 1, 1 );
    }
    return str;
}				/* rec_list() */

int     skill_list( string str )
{
    string *bits;
    mapping sks;

    bits = ({ });
    if( str )
    {
	sks = (mapping)SKILL_OB->query_skills();
	if( !sks[ str ] )
	{
	    notify_fail( "Usage: " + query_verb() + " <skill>\n" );
	    return 0;
	}
	sks = sks[ str ][ SKILL_BIT ];
	printf( "%'='*-s\n", this_player()->query_cols(),
		"=======SKILLS=======Level/Bonus" );
	printf( "%#*-s\n", this_player()->query_cols(), rec_list( sks, str, 1, 1, 0 ) );
	return 1;
    }
    else
	sks = (mapping)SKILL_OB->query_skills();
    printf( "%'='*-s\n", this_player()->query_cols(),
	    "=======SKILLS=======Level/Bonus" );
    printf( "%#*-s\n", this_player()->query_cols(),
	    rec_list( sks, "", ( member_array( "all", bits ) != -1 ), 1, 1 ) );
    return 1;
}				/* skill_list() */