******************************************************************************
File Name   : faq.txt
Description : Frequently Asked Questions.
******************************************************************************

1. WHAT IS THE DIFFERENCE BETWEEN A BODY AND A CONNECTION?

   In Glad there are two main structures for storing information about the 
   players.  The first is a CONNECTION (conn_t) which contains all the socket 
   information and input/output buffers.  The second is a BODY (body_t) which 
   stores the character-specific information such as statistics, gender, room, 
   opponent, etc.  You shouldn't have to change any of the CONNECTION data.

2. HOW DO I ADD VARIABLES TO PLAYER CHARACTERS?

   Add the variable to the "body" structure declared in sockets.h, making sure 
   to do a clean compile afterwards (delete all the .o files then make).  If 
   you want the variable to save, then go into file_io.c and add the variable 
   to the player file table (a_kstPlayerFileTable).  If it's an enumerated type 
   that you're adding then you'll need to update the enumerated types table 
   (a_kstEnumTable) as well.

3. HOW DO I ADD NEW COMMANDS?

   Go into the commands.h file and add the "CMD(...);" prototype for your new 
   command, then go into commands.c and update the command table (kstCmdTable) 
   to reference your new command.  Finally, scroll to the bottom of commands.c 
   and add the code for your new command, following the same format as the 
   other commands.

4. HOW DO I ADD NEW FIGHTING TECHNIQUES TO AN EXISTING STYLE?

   Open the appropriate .c file (combat_hands.c, combat_legs.c, etc) and update 
   the combat table (kstCmbtTable<location>) for your new technique, following 
   the format for the existing techniques.  Scroll to the bottom of the file 
   and add the new function required by your technique.  Open the appropriate 
   .h file and add the prototype for your new function.

5. HOW DO I ADD ENTIRELY NEW FIGHTING STYLES?

   Create two new files, combat_<type>.c and combat_<type>.h, where <type> is 
   the new type of table desired.  Add the .c file to the Makefile, then open 
   combat.c and make sure that your new .c file is #included at the top.  Move 
   down to the combat table (kstCmbtTable) also in combat.c, and add your own 
   combat table to the array.

   Copy the format of the .c and .h files, adjusting them as appropriate for 
   your new fighting style.  In brief, the .h file should contain an extern 
   references to your new combat table and a list of prototypes for the various 
   techniques it uses.  Your .c file should contain the combat table (with the 
   combat commands at the bottom preceded with an '@' symbol), a list of combat 
   command functions and a list of combat technique functions.

6. HOW DO I ADD ROOMS/OBJECTS/MOBILES?

   This will require some work to do.  You could create separate structures 
   for the rooms and objects, or combine them with the body structure (so 
   that everything is of "thing" type).  You could have predefined exists in 
   each room that may or may not point to another room.  You could have a 
   dynamic exist system whereby each room could have zero or more pointers 
   to other rooms, using a keyword for each exit ("north", "east", "enter", 
   "tavern", etc).  You could have a coordinate/grid-based system whereby 
   your current coordinate position determines what rooms you're in.  You 
   could ignore the entire concept of rooms and go for a pure coordinate 
   based system.  There are many ways to do this, none of them "right" or 
   "wrong".  I'd suggest you take the time to really think about what you 
   want your system to do and then design your system accordingly - it's 
   not something I can just give instructions for.

7. HOW DO I ADD NEW HELP FILES?

   Create a new text file in the "help" directory which contains the text you 
   want in the new help file.  Add a reference to the new file in the help file 
   table (s_stHelpTable) in help.c, making sure to indicate whether or not you 
   want the content of the file to be automatically justified by the mud (which 
   you'd normally only do if the file contains dynamic text).

8. HOW DO I ADD A VARIABLE TO THE DYNAMIC TEXT DESCRIPTION CODE?

   Go into text_io.c and update the variable table (a_kstVarTable) to include 
   your new variable.  If the variable is a constant then you don't need to do 
   anything else, but if it's a function variable then you'll need to add the 
   function above the table in either the "Number access functions" or "Text 
   access functions" section.

9. HOW DO I ADD MORE COLOURS?

   Go into text_io.c and add the new colours in the "Colours" section.