#include <quest_handler.h>
#include <library.h>
inherit "/cmds/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) %s\n", i + 1, quests[i], 
            QUEST_HANDLER->query_quest_title (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() */