#include <quest_handler.h>
#include <library.h>
inherit COMMAND_BASE;
string quest_text(string quest);
int cmd( string player, int sorted ) {
    string *quests, text;
    int i, size;
    if ( !player ) {
        quests = QUEST_HANDLER->query_quest_names();
        text = "$P$Quest list$P$\nTotal quests on "+mud_name()+" :-\n\n";
    }
    else {
        quests = LIBRARY->query_quests(player);    
        if (!quests) {
            add_failed_mess( "That player has not done any "
              "quests.\n" );
            return 0;
        }
        if ( sorted ) 
            quests = sort_array( quests, 1 );
        text = "$P$Quest list$P$\nQuests done for player " + player + " :-\n\n";
    }
    size = sizeof(quests);
    for ( i = 0; i < size; i++ ) {
        text += sprintf("%d. %s %s\n", i + 1, quests[i], 
          quest_text( quests[i] ) );
    }
    tell_object( this_player(), text );
    return 1;
} /* cmd() */
string quest_text(string quest) {
    switch ( QUEST_HANDLER->query_quest_status(quest) ) {
    case 0:
        return "(inactive)";
    case 1:
        return "";
    default:
        return "(broken)";
    }
} /* quest_text() */
mixed *query_patterns() {
    return ({ "", (: cmd(0, 0) :),
      "<string'player'>", (: cmd($4[0], 0) :),
      "<string'player'> sorted", (: cmd($4[0], 1) :) 
    });
} /* query_patterns() */