/**************************************************************************/
// qedit.cpp - olc quest editing functions, Jarren
/***************************************************************************
* The Dawn of Time v1.69r (c)1997-2004 Michael Garratt *
* >> A number of people have contributed to the Dawn codebase, with the *
* majority of code written by Michael Garratt - www.dawnoftime.org *
* >> To use this source code, you must fully comply with the dawn license *
* in licenses.txt... In particular, you may not remove this copyright *
* notice. *
**************************************************************************/
#include "include.h" // dawn standard includes
#include "olc.h"
#include "security.h"
#include "immquest.h"
DECLARE_OLC_FUN( qedit_create );
/**************************************************************************/
void qedit_showquestinfo( char_data *ch, QUEST_DATA *pQ)
{
ch->printlnf("`=RQuestName: `=r%s`x",
IS_NULLSTR(pQ->questname)?"`x(none)":pQ->questname);
ch->printf("`=RDate Created: `=r%s", ctime( &pQ->created_date));
ch->printf("`=RDate Last Modified: `=r%s", ctime( &pQ->modified_date));
ch->printlnf("`=RImms Responsible: `=r%s",
IS_NULLSTR(pQ->immnames)?"`x(none)":pQ->immnames);
ch->printlnf("`=RCurrent Status: `=r%s",
IS_NULLSTR(pQ->status)?"`x(none)":pQ->status);
ch->printlnf("`=RResources: `=r%s",
IS_NULLSTR(pQ->resource)?"`x(none)":pQ->resource);
ch->printlnf("`=RImm Help?:`=r%s`x",
pQ->immhelp==IMMHELP_UNDEFINED?"`x(undefined)":flag_string( immhelp_types, pQ->immhelp));
ch->printlnf("`=RSynopsis: `x\r\n%s",
IS_NULLSTR(pQ->synopsis)?"`x(none)":pQ->synopsis);
}
/**************************************************************************/
bool qedit_show( char_data *ch, char *)
{
QUEST_DATA *pQ;
EDIT_QUEST(ch, pQ);
// display the quest to the imm
qedit_showquestinfo( ch, pQ);
return false;
}
/**************************************************************************/
bool qedit_create( char_data *ch, char *argument )
{
QUEST_DATA *pQuest;
static QUEST_DATA zero_node;
if ( argument[0] == '\0')
{
ch->println("Syntax: qedit create [quest_name]");
return false;
}
pQuest = quest_lookup( argument );
if(pQuest && !str_cmp(pQuest->questname, argument))
{
ch->printlnf("A quest with the name '%s' already exsists.", argument);
return false;
}
pQuest=new QUEST_DATA;
*pQuest=zero_node;
pQuest->next = quest_list;
quest_list = pQuest;
pQuest->questname = str_dup(argument);
pQuest->immnames = str_dup(TRUE_CH(ch)->name);
pQuest->created_date=current_time;
pQuest->modified_date=current_time;
pQuest->status = str_dup("");
pQuest->resource = str_dup("");
pQuest->immhelp = IMMHELP_UNDEFINED;
pQuest->synopsis = str_dup("");
ch->desc->pEdit = pQuest;
SET_BIT(QUEST_TABLE_FLAGS,QEDIT_CHANGED);
ch->printlnf("Quest '%s' Created.", pQuest->questname);
return true;
}
/**************************************************************************/
bool qedit_questname( char_data *ch, char *argument )
{
QUEST_DATA *pQ;
if ( IS_NULLSTR(argument))
{
ch->println("Syntax: questname [string]");
return false;
}
EDIT_QUEST(ch, pQ);
free_string( pQ->questname);
pQ->questname = str_dup( argument );
ch->printlnf("Quest now called '%s'", pQ->questname);
return true;
}
/**************************************************************************/
bool qedit_responsible(char_data *ch, char *argument)
{
QUEST_DATA *pQ;
char name[MSL];
char buf[MSL];
EDIT_QUEST(ch, pQ);
one_argument( argument, name );
if ( name[0] == '\0' )
{
ch->println("Syntax: responsible [%name] -toggles responsible imms");
ch->println("Syntax: responsible Any -allows everyone");
return false;
}
name[0] = UPPER( name[0] );
if(IS_NULLSTR(pQ->immnames)){
bug("qedit_responsible(): for some reason pQ->immnames was zero length or NULL!");
pQ->immnames=str_dup("None");
}
if ( strstr( pQ->immnames, name ) != '\0' )
{
pQ->immnames = string_replace( pQ->immnames, name, "" );
pQ->immnames = str_dup(ltrim_string(rtrim_string(pQ->immnames )));
if ( pQ->immnames[0] == '\0' )
{
free_string( pQ->immnames );
pQ->immnames = str_dup( "None" );
}
ch->printlnf("Responsible Imm '%s' removed.", name );
return true;
}
else
{
buf[0] = '\0';
if ( strstr( pQ->immnames, "None" ) != '\0' )
{
pQ->immnames = string_replace( pQ->immnames, "None", "" );
pQ->immnames = str_dup(ltrim_string(rtrim_string(pQ->immnames )));
}
if (pQ->immnames[0] != '\0' )
{
strcat( buf, pQ->immnames );
strcat( buf, " " );
}
strcat( buf, name );
free_string( pQ->immnames );
pQ->immnames = string_proper( str_dup( buf ) );
ch->printlnf("Imm added to list - current Imms now:\r\n%s",
pQ->immnames);
return true;
}
return false;
}
/**************************************************************************/
bool qedit_status( char_data *ch, char *argument )
{
QUEST_DATA *pQ;
if ( IS_NULLSTR(argument))
{
ch->println("Syntax: status [string]");
return false;
}
EDIT_QUEST(ch, pQ);
free_string( pQ->status);
pQ->status = str_dup( argument );
ch->printlnf("Quest status now: '%s'", pQ->status);
return true;
}
/**************************************************************************/
bool qedit_resource(char_data *ch, char *argument)
{
QUEST_DATA *pQ;
char name[MSL];
char buf[MSL];
EDIT_QUEST(ch, pQ);
one_argument( argument, name );
if ( name[0] == '\0' )
{
ch->println("Syntax: resource [%helpfile] -toggles resource file");
return false;
}
name[0] = UPPER( name[0] );
if(IS_NULLSTR(pQ->resource)){
bug("qedit_resource(): for some reason pQ->resource was zero length or NULL!");
pQ->resource=str_dup("None");
}
if ( strstr( pQ->resource, name ) != '\0' )
{
pQ->resource = string_replace( pQ->resource, name, "" );
pQ->resource = ltrim_string(rtrim_string(( pQ->resource )));
if ( pQ->resource[0] == '\0' )
{
free_string( pQ->resource );
pQ->resource = str_dup( "None" );
}
ch->printlnf("Resource file '%s' removed.", name );
return true;
}
else
{
if ( strstr( pQ->resource, "None" ) != '\0' )
{
pQ->resource = string_replace( pQ->resource, "None", "" );
pQ->resource = ltrim_string(rtrim_string( pQ->resource ));
}
buf[0] = '\0';
if (pQ->resource[0] != '\0' )
{
strcat( buf, pQ->resource );
strcat( buf, " " );
}
strcat( buf, name );
free_string( pQ->resource );
pQ->resource = string_proper( str_dup( buf ) );
ch->printlnf("Resource entry added to list - current resources now:\r\n%s",
pQ->resource);
return true;
}
return false;
}
/**************************************************************************/
bool qedit_help(char_data *ch, char *argument)
{
QUEST_DATA * pQ;
int value;
EDIT_QUEST(ch, pQ);
if ( !IS_NULLSTR(argument))
{
if ( ( value = flag_value( immhelp_types, argument ) ) != NO_FLAG )
{
ch->printlnf("Immhelp type changed from %s to %s.",
pQ->immhelp==IMMHELP_UNDEFINED?"`x(undefined)":flag_string( immhelp_types, pQ->immhelp),
value==IMMHELP_UNDEFINED?"`x(undefined)":flag_string( immhelp_types, value));
pQ->immhelp = value;
return true;
}
ch->printlnf("Unrecognized type '%s'", argument);
}
ch->println("Syntax: help [type]");
ch->print("Help types available: [ ");
for(int i=0; immhelp_types[i].name != NULL; i++)
ch->printf("`=R%s ", immhelp_types[i].name);
ch->println("`x]");
return false;
}
/**************************************************************************/
bool qedit_synopsis( char_data *ch, char * argument)
{
QUEST_DATA *pQ;
EDIT_QUEST(ch, pQ);
if ( argument[0] == '\0' )
{
string_append( ch, &pQ->synopsis );
return true;
}
ch->println("Syntax: synopsis");
return false;
}
/**************************************************************************/