/
area/city/
area/crypts/
area/guilds/
area/psuedowild/
area/religion/
data/documents/MPDocs/
data/html/
data/mobprogs/
data/quest/
data/world/
data/world/_utilities/
data/world/images/
design/html/
notes/
player/
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "merc.h"
#include "mob_cmds.h"
#include "olc.h"
#include "gquest.h"
#include "gdl.h"

const struct olc_cmd_type qedit_table[] = {
/*    {    command        function    }, */

    {"name",            qedit_name},
    {"rpname",          qedit_rpname},
    {"level",           qedit_level},

    {"new",             qedit_new},
    {"show",            qedit_show},
    {"?",               show_help},

    {NULL, 0}
};

QUEST * quest_list;

/*
 * do_qedit()
 *
 * Edits specific quest
 */
void do_qedit(CHAR_DATA * ch, char *argument)
{
    QUEST *pQuest;
    char arg1[MIL];
    char argall[MAX_INPUT_LENGTH],argone[MAX_INPUT_LENGTH];
    bool found = FALSE;

    strcpy(arg1,argument);
                            
    if(argument[0] != '\0')
    {
        /* Taken from do_help */
        argall[0] = '\0';
        while (argument[0] != '\0' )
        {
            argument = one_argument(argument,argone);
            if (argall[0] != '\0')
                strcat(argall," ");
            strcat(argall,argone);
        }
        for ( pQuest = quest_list; pQuest; pQuest = pQuest->next )
        {
            if ( is_name( argall, pQuest->name ) )
            {
                ch->desc->pEdit=(void *)pQuest;
                ch->desc->editor= ED_QUEST;
                found = TRUE;
                return;
            }
        }
    }
    if(!found)
    {
        argument = one_argument(arg1, arg1);

        if(!str_cmp(arg1,"new"))
        {
            if (argument[0] == '\0')
            { 
                stc("Qedit: qedit new <name\n", ch);
                return;
            }
            if (qedit_new(ch, argument) )
                ch->desc->editor = ED_QUEST;
            return;
        }
    }
    send_to_char( "Qedit: No Default Quest\n\r", ch );
    return;
}

/*
 * qedit_show()
 *
 * Displays the Quest's info
 */
QEDIT(qedit_show)
{
    QUEST * quest;
    char buf[MSL * 2];

    EDIT_QUEST (ch, quest);

    sprintf(buf, "Name:         %s\n", quest->name);
    stc(buf, ch);
    sprintf(buf, "RP Name:      %s\n", quest->long_name);
    stc(buf, ch);
    sprintf(buf, "Min_level     %d\n", quest->min_level);
    stc(buf, ch);
    sprintf(buf, "Total Steps   %d\n", quest->steps);
    stc(buf, ch);
    sprintf(buf, "Reward QPs:   %d\n", quest->reward_qps);
    stc(buf, ch);
    sprintf(buf, "Reward Gold:  %d\n", quest->reward_gold);
    stc(buf, ch);
    sprintf(buf, "Reward Obj:   %d\n", quest->reward_obj);
    stc(buf, ch);
    send_to_char (buf, ch);

    return FALSE;
}


/*
 * qedit_name
 *
 * Edits Quest's Internal Name
 */
QEDIT(qedit_name)
{
    QUEST *quest;

    EDIT_QUEST (ch, quest);

    if (IS_NULLSTR (argument))
    {
        send_to_char ("Syntax: name <name>\n", ch);
        return FALSE;
    }

    free_string (quest->name);
    quest->name = str_dup (argument);

    send_to_char ("Quest's Internal name has been set.\n", ch);
    return TRUE;
}

/*
 * qedit_rpname
 *
 * Edits Quest's Player name
 */
QEDIT(qedit_rpname)
{
    QUEST *quest;

    EDIT_QUEST (ch, quest);

    if (IS_NULLSTR (argument))
    {
        send_to_char ("Syntax: rpname <name>\n", ch);
        return FALSE;
    }

    free_string (quest->long_name);
    quest->long_name = str_dup (argument);

    send_to_char ("Quest's Player seen name has been set.\n", ch);
    return TRUE;
}


/*
 * qedit_level
 *
 * Edits Quest's Min level to even get activated
 */
QEDIT(qedit_level)
{ 
    QUEST *quest;
    int lev;
    EDIT_QUEST (ch, quest);

    if (IS_NULLSTR (argument) || !is_number (argument))
    {
        send_to_char ("Syntax: level [-1..MAX_LEVEL]\n\r", ch);
        return FALSE;
    }

    lev = atoi (argument);

    if (lev < -1 || lev > MAX_LEVEL)
    {
        printf_to_char (ch, "Qedit: Level range between -1 and %d\n\r", LEVEL_HERO + 1);
        return FALSE;
    }

    quest->min_level = lev;

    send_to_char ("Minimum level for quest has been set.\n", ch);
    return TRUE;
}