this is an example of a practice - monster. use it in your guild to practice.
also you can make monsters, that are somewhere in the mud and where you can
practice. this is recommended for higher skills/spells/abilities. the player
has to search the monster and practise there. it should be combined with some
kind of quest.

------------------------------------------------------------------------------

inherit "/guild/prac_monster";

void reset( int tick )
{
   ::reset( tick );

   if ( tick ) return;

   // do the typical monster-code here (name, long, short ...)

   set_spells( a string arry of the spells );
   set_abilities( a string array of the abilities );
   set_skills(  a string array of the skills  );
}

// ------------ SPELLS ------------------------------------------------------
int advance_spell( object who, string sn, string fn, int max_sk )
{
   int res;

   // maybe check here for the guild (e.g. only ninjas can learn here)
   // this should be done at the guild-practicer, not at monsters where you
   // can learn high-level stuff

   res = ::advance_spell( who, sn, fn, 95 );

   if ( res == -3 ) 
      the monster does not know such a spell
   else if ( res == -2 )
      too few practise sessions
   else if ( res < 0 )
      already maxed out
   else
      advanced it

   return( res );
}

int learn_spell( object who, string sn, string fn, int max_sk )
{
   int    res;

   // maybe check here for the guild (e.g. only ninjas can learn here)
   // this should be done at the guild-practicer, not at monsters where you
   // can learn high-level stuff

   res = ::learn_spell( who, sn, fn, 95 );
   if ( res == -4 )
      too low level or spell not learnable by this guild
   else if ( res == -3 ) 
      monster does not know such a spell
   else if ( res == -2 )
      no practice sessions
   else if ( res < 0 )
      misc error (cannot add the spell for the player)
   else
      oki, learned

   return( res );
}

// ------------ ABILITIES ---------------------------------------------------
int advance_ability( object who, string sn, string fn, int max_sk )
{
   see advance_spell()
}

int learn_ability( object who, string sn, string fn, int max_sk )
{
   see learn_spell()
}

// ------------ SKILLS -------------------------------------------------------
int advance_skill( object who, string sn, int max_sk )
{
   see advance_spell()
}

int learn_skill( object who, string sn, int max_sk )
{
   see learn_spell()
}

// ---------- THE LIST -------------------------------------------------------
void list_prac( object who )
{
   // maybe check here for the guild (e.g. only ninjas can learn here)
   // this should be done at the guild-practicer, not at monsters where you
   // can learn high-level stuff

   ::list_prac( who );
}
