     Mounts from TOC:

     in act_move.c add these functions...

     void do_ride( CHAR_DATA *ch, char *argument )
     {
         int chance;
         CHAR_DATA *victim;
         OBJ_DATA *obj;
         bool found;
         char arg[MAX_INPUT_LENGTH];
         char buf[MAX_STRING_LENGTH];

         if( IS_NPC(ch) )
             return;

         one_argument( argument, arg );

         if( arg[0] == '\0' )
         {
             send_to_char("???\n\r",ch);
             return;
         }

         if( ( victim = get_char_world( ch, arg ) ) == NULL )
         {
             send_to_char("blah\n\r",ch);
             return;
         }

         if( !IS_NPC(victim)
         || victim->fighting != NULL
         || !IS_SET(victim->act, ACT_MOUNTABLE) )
         {
             act("You can't ride $N",ch,NULL,victim,TO_CHAR);
             return;
         }

         if( !IS_NPC(ch) && ch->pcdata->mounted )
         {
             send_to_char("You must dismount first\n\r",ch);
             return;
         }

         if(IS_NPC(victim) && victim->ridden)
         {
             act("$N already has a rider",ch,NULL,victim,TO_CHAR);
             return;
         }

         found = FALSE;
         
         /* check to see if the rider has a saddle */

         for( obj = ch->carrying; obj; obj = obj->next_content )
         {
             if( obj->item_type == ITEM_SADDLE )
             {
                 found = TRUE;
                 break;
             }
         }

         if(!found)
         {
             found = FALSE;
             for( obj = victim->carrying; obj; obj = obj->next_content )
             {
                 if( obj->item_type == ITEM_SADDLE && obj->wear_loc == WEAR_BODY)
                 {
                     found = TRUE;
                     break;
                 }
             }
             if(!found)
             {
                 send_to_char("You need a saddle...\n\r",ch);
                 return;
             }
         }

         chance = get_skill(ch,gsn_ride);

         if( chance < 2 )
         {
             send_to_char( "Best go learn riding a little better before you try it\n\r",ch);
             return;
         }

         if( chance > 90 )
             chance = 90;

         if( IS_IMMORTAL(ch) )
             chance = 100;

         /* lets see if the mount bucks the rider */

         if( number_percent () > chance)
         {
             act()   
             act()
             if(ch->hit < 25)
                ch->hit = 1;
             else
                ch->hit -= 25;


             check_improve(ch,gsn_ride, FALSE,6);
             return;
         }

         if(get_eq_char( victim, WEAR_BODY) == NULL)
         {
             obj_from_char(obj);
             obj_to_char(obj,victim);
             sprintf(buf,"%s saddles %s and mounts $m.", ch->name,
                     victim->short_descr ? victim->short_descr: victim->name );
             obj->wear_loc = WEAR_BODY;
         }
         else
             sprintf(buf,"%s mounts %s",ch->name,
                     victim->short_descr ? victim->short_descr : victim->name );
             if(!IS_SET(ch->pcdata->plr_flag, PLR_WIZINVIS) )
                     act( buf,ch,NULL,NULL,TO_ROOM );
             send_to_char("You mount your steed.\n\r",ch);

             check_improve(ch,gsn_ride,FALSE,6);

             SET_BIT(victim->act, ACT_PET);
             victim->master = ch;
             ch->pet = victim;

             ch->pet->ridden = TRUE;
             ch->pcdata->mounted = TRUE;

             WAIT_STATE( ch, skill_table[gsn_ride].beats );
             return;
     }

     Do a little reverse engineering to dismount your char and add the fields to
     pcdata in merc.h

     *** merc.h ***

     struct pc_data
     {
         .
         .
         .
         sh_int              mounted;  /* pc's mounted state */
         bool                confirm_delete;
         .
         .
     }

     struct char_data
     {
         .
         .
         .
         sh_int              ridden; /* NPC's or PC's mounted state */
         sh_int              position;
         .
     }

     Add the fields in save.c for your pfile, and make sure you check the 
     riders mounted state in any of the functions that involve a ch->position,
     ex make sure rider is dismounted if they want to sleep, wake, rest, etc.

     That should do it,
     Gravestone
     Times of Chaos
     toc.pcix.com 9000
