Speeding up SMAUG is very simple.
Its all a matter of how fast flush_buffer sends info the descriptor.
You can make individual characters able to control the speed at which 
they recieve text very simply as well.


Add to the bottom of descriptor_data:

    sh_int  		speed; /* descriptor speed settings */


Add to fwrite_char

    if (ch->desc && ch->desc->speed > 0)
      fprintf( fp, "Speed        %d\n",	ch->desc->speed		);


Add to case 'S' of fread_char

	    if (!strcmp ( word, "Speed" ) )
	    {
                sh_int speed;
		fMatch = TRUE;
                speed = fread_number( fp );
                if (!ch->desc)
                 break;
                ch->desc->speed = speed;
		break;
	    }



add to bottom of comm.c:

void do_speed( CHAR_DATA *ch, char *argument)
{
  sh_int speed=atoi(argument);

  if (!ch->desc)
   return;   // Don't send messages to people who don't exist. duh.

  if (argument[0] == '\0')
  {
     ch_printf( ch, "Your present speed is a %d, which equates to %d bytes per second.\n\r", ch->desc->speed, client_speed(ch->desc->speed) );
     return;
  }

  if (speed > 5 || speed < 0)
  {
     send_to_char("Speed is between 0 and 5.\n\r", ch);
     return;
  }
  ch->desc->speed = speed;
  ch_printf( ch, "The MUD will now send output to you at %d bytes per second.\n\r", client_speed( speed) );
  if ( client_speed(speed) > 2048)
   ch_printf( ch, "You should be aware %d is fast enough to lag you if you have a slow connection.\n\r", client_speed( speed) );
  return;
}

add to bottom of comm.c:

sh_int client_speed( sh_int speed)
{
 switch ( speed )
 {
   default:
    break;
   case 1:
    return 512;
   case 2:
    return 1024;
   case 3:
    return 2048;
   case 4:
    return 3584;
   case 5:
    return 5120;

 }
 return 512; // Better than a mere default case.
}

Add to the top of comm.c with the other prototypes 
sh_int client_speed( sh_int speed);

inside: 
bool flush_buffer( DESCRIPTOR_DATA *d, bool fPrompt )


Replace:
    char buf[MAX_INPUT_LENGTH];
With:
    char buf[MAX_INPUT_LENGTH * UMAX( 1, d->speed)];

And:
    /*
     * If buffer has more than 4K inside, spit out .5K at a time   -Thoric
     */
    if ( !mud_down && d->outtop > 4096 )

Becomes:
    /*
     * If buffer has more than their max, send max every second.
     */
    if ( !mud_down && d->outtop > client_speed( d->speed ) )

Replace:
	    char snoopbuf[MAX_INPUT_LENGTH];
With:
	    char snoopbuf[MAX_INPUT_LENGTH * UMAX( 1, d->speed)];

Replace instances of:
512
with:
client_speed( d->speed )



Basic helpfile:
Syntax: speed
Syntax: speed #

Speed by itself will show how fast the MUD is currently configured
to send data to you. # can be a number between 1 and 5 that will
determine how fast you recieve.

Speeds are:
1     512    *default  .5K
2     1024   1K
3     2048   2K
4     3584   3.5K
5     5120   5K

Please remember that if your connection does not support speeds
over 2K you will quite possibly lag yourself by setting yourself
too high.