Open up mud.h with pico, and search for 'update.c'....you will find a list
of function declarations. At the bottom of those, add this line:

void    restore_char    args( (CHAR_DATA *ch) );

Save mud.h and close the file.

Next, pico open update.c, then find the function gain_exp(). (A search for
the word 'obtained' should bring you right into it). Near the bottom of the
function, you will see this code:

    while ( ch->level < LEVEL_AVATAR && ch->exp >= exp_level(ch, ch->level+1))
    {
        set_char_color( AT_WHITE + AT_BLINK, ch );
        ch_printf( ch, "You have now obtained experience level %d!\n\r", ++ch->level );
        advance_level( ch );

IMMEDIATELY after the line 'advance_level( ch );', add this line of code:

        restore_char(ch);

Finally, go to the very bottom of the update.c file, and add this code:


void restore_char (CHAR_DATA *ch)
  {

        ch->hit = ch->max_hit;
	ch->mana = ch->max_mana;
	ch->move = ch->max_move;
      if ( ch->pcdata )
       {
	ch->pcdata->condition[COND_BLOODTHIRST] = (10 + ch->level);
	ch->pcdata->condition[COND_FULL] = 40; /* add this if you wish to restore hunger */
	ch->pcdata->condition[COND_THIRST] = 40; /* add this if you wish to restore thirst */
       }
	update_pos( ch );
	send_to_char_color("&YThe gods are pleased with your progress, and have restored you!\n\r", ch);

	return;
  }


Save the file, and close pico. Then, while still in the SRC directory, type 'make clean'.
After it cleans out the object files, type 'make', to recompile. Once compiled, the
mud will need to be rebooted.

One note: This adds a function [restore_char()] to your mud, if you have a reason for wanting
to restore a char for other things, you can simply call this function from whatever bit of
code you want. Just make sure you don't restore_char on a mob! :)

Enjoy :)

Sadiq
sadiq@a-znet.com