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/
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 );
  }
}