quest/
/*

To install this code, add the following lines to the stated files:

>> mud.h

> PLR_QUESTOR to all the other PLR stuff	
 

>#define IS_QUESTOR(ch)     (xIS_SET((ch)->act, PLR_QUESTOR))

>DECLARE_DO_FUN( do_aquest	);

> add to struct  char_data:

    CHAR_DATA *         questgiver; /* Vassago */
    sh_int              nextquest; /* Vassago */
    sh_int              countdown; /* Vassago */
    sh_int              questobj; /* Vassago */
    sh_int              questmob; /* Vassago */

>> act_info.c

> add to show_char_to_char_0:

    if (IS_NPC(victim) &&ch->questmob > 0 && victim->pIndexData->vnum == ch->questmob)
        strcat( buf, "[TARGET] ");

>> fight.c

> add to function group_gain()

        if (xIS_SET(ch->act, PLR_QUESTOR)&&IS_NPC(victim))
        {
            if (ch->questmob == victim->pIndexData->vnum)
            {
		send_to_char("You have almost completed your QUEST!\n\r",ch);
                send_to_char("Return to the questmaster before your time runs out!\n\r",ch);
                ch->questmob = -1;
            }
        }

>> tables.c

        if ( !str_cmp( name, "do_aquest" ))             return do_aquest;
    if ( skill == do_aquest )           return "do_aquest";

/* If you know how to code, you know where those go... */

>> save.c

> add to fwrite_char() function:

    if (ch->nextquest != 0)
        fprintf( fp, "QuestNext %d\n",  ch->nextquest   );
    else if (ch->countdown != 0)
        fprintf( fp, "QuestNext %d\n",  30              );

> add to fread_char() function:

        case 'Q':
            KEY( "QuestNext",   ch->nextquest,          fread_number( fp ) );
            break;

>> special.c

>DECLARE_SPEC_FUN(       spec_questmaster        );

>    if ( !str_cmp( name, "spec_questmaster"       ) ) return spec_questmaster;

>    if ( special == spec_questmaster    )       return "spec_questmaster";

( I suggest the following for "bool spec_questmaster( CHAR_DATA *ch )" )
bool spec_questmaster( CHAR_DATA *ch )
{
 if ( !IS_NPC(ch) )
  return FALSE;
 else
  return TRUE;
}

/* This is just a simple thing so you can add your own progs and make your
 * Questmaster unique to your MUD.
 */

>> update.c

> add to the 'local functions' section:

void    quest_update    args( ( void ) ); /* Vassago - quest.c */

> add to the update_handler() function under pulse_area section:

        quest_update     ( );

*/
Now in the mud shell, you need to set up the quest items defined in quest.c,
and set up your questmaster by using ...
mset <victim> spec spec_questmaster
Lastly create the quest command using something like ...
cedit aquest create do_aquest

And that should be it ... hope you enjoy.

LrdElder