#include "ctype.h"
#include "sys/types.h"
#include "stdio.h"
#include "stdlib.h"
#include "define.h"
#include "struct.h"
void* code_doing_quest( void** argument )
{
  char_data*     ch  = (char_data*) argument[0];
  int         quest  = (int)        argument[1];
  if( quest < 0 || quest >= MAX_QUEST ) {
    code_bug( "Doing_Quest: impossible quest number." );
    return NULL;
    }
  if( ch == NULL ) {
    code_bug( "Doing_Quest: Null character." );
    return NULL;
    } 
  return (void*) ( ch->pcdata != NULL
    && ch->pcdata->quest_flags[quest] == 1 );
}
void* code_done_quest( void** argument )
{
  char_data*     ch  = (char_data*) argument[0];
  int         quest  = (int)        argument[1];
  if( ch == NULL ) {
    code_bug( "Code_Done_Quest: NULL character." );
    return NULL;
    }
  return (void*) ( ch->pcdata != NULL
    && ch->pcdata->quest_flags[quest] == -1 );
}
void* code_has_quest( void** argument )
{
  char_data*     ch  = (char_data*) argument[0];
  int         quest  = (int)        argument[1];
  if( quest < 0 || quest >= MAX_QUEST ) {
    code_bug( "Has_Quest: impossible quest number." );
    return NULL;
    }
  if( ch == NULL ) {
    code_bug( "Code_Has_Quest: Null character." );
    return NULL;
    }
  return (void*) ( ch->pcdata != NULL
    && ch->pcdata->quest_flags[quest] != 0 );
}
void* code_assign_quest( void** argument )
{
  char_data*    ch  = (char_data*) argument[0];
  int        quest  = (int)        argument[1];
  if( quest < 0 || quest >= MAX_QUEST ) {
    code_bug( "Assign_Quest: impossible quest number." );
    return NULL;
    }
  if( ch != NULL && ch->species == NULL
    && ch->pcdata->quest_flags[quest] == 0 ) {
    ch->pcdata->quest_flags[quest] = 1;
    send( ch, "\n\r-*- You have been assigned a quest. -*-\n\r" ); 
    }
  return NULL;
}
void* code_update_quest( void** argument )
{
  char_data*      ch  = (char_data*) argument[0];
  int              i  = (int)        argument[1];
  quest_data*  quest;  
  if( i < 0 || i >= MAX_QUEST ) {
    code_bug( "Update_Quest: impossible quest number." );
    return NULL;
    }
  if( ch == NULL || ch->pcdata == NULL )
    return NULL;
  quest = get_quest_index( i );
  if( ch->pcdata->quest_flags[i] == 1 ) {
    ch->pcdata->quest_flags[i] = -1;
    ch->pcdata->quest_pts += quest->points;
    if( quest->points != 0 ) 
      send( ch, "-*- You gain %d quest points! -*-\n\r", quest->points );
    }
  return NULL;
}