mapping skills; string hit_skill; void create( void ) { if( skills == 0 ) skills = ([ ]); } void set_hit_skill( string skill ) { if( SKILL_D->is_skill( skill ) == 0 ) { write( "Unknown skill : " + skill ); return; } hit_skill = skill; } string query_hit_skill( void ) { if( hit_skill == 0 ) return( "combat/unarmed" ); return( hit_skill ); } void set_skill( string skill, int val ) { if( SKILL_D->is_skill( skill ) == 0 ) { write( "Unknown skill : " + skill ); return; } if( skills == 0 ) skills = ([ ]); skills[skill] = val; } int query_skill( string skill ) { if( SKILL_D->is_skill( skill ) == 0 ) { write( "Unknown skill : " + skill ); return( 0 ); } if( skills == 0 ) skills = ([ ]); return( skills[skill] ); } string *query_skills( void ) { if( skills == 0 ) skills = ([ ]); return( map_indices( skills ) ); } void increase_skill( string skill, int val ) { if( SKILL_D->is_skill( skill ) == 0 ) { write( "Unknown skill : " + skill ); return; } if( skills == 0 ) skills = ([ ]); if( skills[skill] == 0 ) return; skills[skill] = skills[skill] + val; } void learn_skill( string skill ) { if( SKILL_D->is_skill( skill ) == 0 ) { write( "Unknown skill : " + skill ); return; } if( skills == 0 ) skills = ([ ]); /* Should players automatically learn new skills? */ /* if( skills[skill] == 0 ) return; */ if( random( 5000 ) >= query_skill( skill ) ) { increase_skill( skill, 1 ); } }