INTRODUCTION
------------

     Blitzed IRC trivia was meant as a project for me to develop
skills with algothrims and integration of several files into
a large project. Because of this the consistancy and the structure
of the project is very inconsistant. I've changed ways of doing things
more than once throughout this project. As it progreses further I am
trying to clean up the structure as much as possible. 

     While I've labled this project as C++, very little of C++'s 
advanced features were used. The only usage of new C++ features
in this code is simple class structure, the new operator and 
C++'s iostream library for file io. I am hoping to incorporate
more of C++'s features (better encapsulation, templates, etc) 
as the project advances.

     Any questions are welcome, email strtok@softhome.net


PRESENTATION
------------

     Over the months now I have had many people ask me why
trivia isnt colourized like it's counterpart mIRC versions.
The answer is that I have very little time to work on trivia
(as you can tell from the code!) and most of the effort put
into the bot is bugfixes and new features.

    If someone wants to create a trivia.conf file with colourful
text entries, they can send it to me and will find it in the next
version as an alternate configuration file.


WHO'S INVOLVED
--------------

     Mostly everyone at irc.blitzed.org has been involved with
either development or playtesting. Thanks go out to all from
#netmag who has been running a stable 15 min bot for a few
months now, IZS for his testing and grifferz for his patches,
enhancements and ideas.

     Maintainer and Lead Development: strtok (strtok@blitzed.org)

     Development:                     grifferz (grifferz@blitzed.org)
                                      Crappy   (crappy@blitzed.org)

     Testing:                         IZS
                                      Swat

     Mental Support:                  fruitie
				     


INSTALLATION
------------

          - Run Configure (./configure)
          - make
          - ./src/trivia trivia.conf.sample        

   Note: It will compile the binary program to ./src/trivia. You can
         move this file, your trivia.conf file and your question.db
         file to any directory of your choice to run the bot in.


COMMANDS
--------
         privmsg:
	 
              start <admin password>
	          Start the game
		  
              stop  <admin password>
	          Stop the game
		  
              set   <admin password> <nick> <points>    
	          Manually set someone's points (0 for remove)
	     
	      force <admin password>
	          Force a question to be asked immediately.
	     
	      identify <ghost password>
	          Identify to unlock nick (GAME_AutoRem 0 only)
		  
	      regain <ghost password> <nick>
	          Regain points from ghost to current nick (GAME_AutoRem 0 only)
                
              list <admin password>
                  List nicknames structures and information (password/team/score) 
               
              load <admin password> <file>
	          Load config file
        
              config <admin password> <parameter> <new value>
                  Alter config parameters in real time
                  Ex: config mypass GAME_SaveState 1

              die <admin password>
                  Gracefully shutdown
 
              ignore <admin password> <command>
                   Command can be:
                          +host <add regexp host to ignore list>
                          -host <remove regexp host from ignore list>
                   If no command is given, the list of ignores
                   currently in place will be given.

        

         channel:

              list    - list players
              rem     - leave game
              uptime  - give uptime
              status  - give status (variables)

QUESTION.DB
-----------

  Format:
       whoadded;type;question;answer1;answer2;answer3;

  whoadded: 
          Nick of person who added question
  

  type:
          1: Use phonetic matching algorithm
          0: Literal matching only

  question:
          Full question including question mark

  Answers:
          answer1 is required and is the 'display answer'
    This is the answer that will be displayed as the final answer.
    For instance if the answer to a question is May 5th 1945, this 
    will be the "May 5th 1945" 

          answer2 is optional and is the 'hint answer'
    This is the answer that the random hint will be generated from.
    If this answer is missing, the first answer will be used.

    All other answers are other combinations you can think of...

    It will allow as many combinations of answers as possible.

    The last answer must be followed by a closing ;

          
HOW ANSWER MATCHING WORKS
-------------------------

   type 0:

       Answers (and answer provided by player) are stripped
   down of all non alphanumeric characters including spaces.
   Example:
        Joe Bob's House
   becomes
        JoeBobsHouse

   The player's answer is then matched against every answer
   in the database, literal matching only. Capitalisation does
   not matter


   type 1:

    Same as above except that after literal matching is done, 
    further phonetical matching is done. 

    Bleep is the same as Bleepe.. etc
    Chalk is the same as Chawlk.. etc

    Take note that if your answers contain excessive amounts
    of vowels it might be best to keep that individual question
    type 0. The phonetic algothrim is very very tolerant to
    vowels.


