Name of Mod        : The Famkebot
File Name          : famke65.zip
Version            : 6.5
Date               : Februrary 18, 1999
E-mail             : thefatal@telefragged.com
Web Site           : http://www.telefragged.com/thefatal/

Additional Credits : All the people that've helped me and offered their
		     continued support ever since I started the Famkebot.
                     Particularly Hondo, Cube (and the rest of the staff
                     at the Bot Epidemic), Shane Killen, and the other
		     bot authors that helped me so long ago when I had
		     questions.

AUTHOR INFO
-----------
I did Head Soccer and quite a few other things. At the moment, I also
have a Half-Life bot planned.

TYPE OF MOD 
-----------
This is a DeathMatch and Cooperative bot for Quake II.

Programming  : All of it.
Sound        : Nope.
MDL          : Nope.
Maps         : Nope.
Graphics     : Nope.

VERSION HISTORY
---------------
6.5:

-Several small bug fixes.

-Gamex86 code wrapper for famkebot.dll is now available.

6.4:

-Noticed that moving platform support broke q2dm2, removed NFR for. Bots
 are still fully capable of playing that level, but the NFR will need to
 be remade for it.

-Seperated all the bot AI, client emulation, and waypoint stuff by putting
 it in a seperate DLL (famkebot.dll). This file should go in your main Q2
 folder. I'll probably release the gamex86 code to incorporate the DLL in
 a bit. My DLL linkage method is, however, a bit of a hack, but it still
 works quite well.

6.3:

-Put practice mode back in from the old Famkebot.

-Practice mode has a practice_weap cvar to set weapon and item
 options.

-Added tracewp cvar. See "SETTINGS AND COMMANDS" for details.

-Added configurable bot chatting via botchat.cfg file.

-Cvars are available to disable bot chatting, and set how often
 bots will engage in chat.

-Added very basic moving platform support (bots can now get the quad
 in q2dm3 if the level is waypointed correctly).

6.2:

-Restructured main AI loop to make movement as smooth as the player's
 at all times.

-Added item finding checks to make sure bot wouldn't do something stupid
 to get to an item, such as jump off of a tall ledge or into lava/slime.

-Bot is now capable of playing through most levels due to more advanced
 waypoint following and item finding code. Moving platform support is being
 implimented for a future release.

6.1:

-Improved ladder support.

-New waypoint placement system, plus it now stores jumps and manages
 crouching better. This means that bots can now reach new areas by
 knowing quickly when to make jumps. Note that NFR files from 6.0 still
 work just fine.

-NFRs for city1 and q2dm2 are now included.

-Bots now activate items such as the quad in cooperative mode and when
 instant items isn't turned on in a DM (and they use the items
 intelligently).

6.0:

First release of the Famkebot rewrite.

INSTALLATION
------------
Extract the zip file WITH DIRECTORY STRUCTURE (-d with pkunzip) into
your Quake II directory. Then follow the standard procedure for starting
Quake II with an add-on (set game famkebot, etc... if you don't know how
to do that, find out from someone other than me). Also, before loading a
level, set deathmatch or coop to 1 (depending on which mode you want to
play in).

SETTINGS AND COMMANDS
---------------------
*addbot command*
Adds a bot to the server. You don't have to worry about specifying the
type or anything, it's chosen in the AI depending on the mode (coop or
deathmatch). If you wish to change the names or what the bots look like,
edit the bots.cfg file in your main Famkebot directory.

*removebot command*
Disconnects a bot from the server.

*botnum cvar*
Used to maintain a constant number of bots throughout the game (recommended
for use with dedicated servers). Note that bots also carry their
persistant client data (inventory, etc.) through level changes.

*botskill cvar*
There are 2 skill levels. Moron, and standard. The default is standard (1).
Setting this to 0 and adding a bot will give the bot the "moron" skill.
Note that bots maintain their skill levels after being added, so you can
have bots with moron skills and standard skills in the same game.

*bottalk cvar*
Default is 1. Setting to 0 turns the bot's chatting off.

*chatfreq_died cvar*
Should be set to a value between 0 and 1. This determines how often a bot
will speak after being killed by another bot. 0 is never, 0.5 is half the
time, 1 is always, etc. The default value is 0.2.

*chatfreq_killed cvar*
This is the same as chatfreq_died, except it determines how often bots
speak after killing another bot instead of after being killed. The default
value is 0.2.

*practice cvar*
Set to 1 to enable practice mode (default is 0). In practice mode, scores
are calculated by damage and no one dies. DeathMatch must be enabled for
this to work.

*practice_weap cvar*
Setting this removes all items from the level and gives all players (and bots)
the specified weapon with unlimited ammo. Set the value to one of the following
numbers for the appropriate weapon:
1-Blaster
2-Shotgun
3-Super Shotgun
4-Machinegun
5-Chaingun
6-Grenade Launcher
7-Rocket Launcher
8-Hyperblaster
9-Railgun
10-BFG10K
11-Hand Grenades
Note that practice mode must be enabled for this to work.

*COOPERATIVE MODE MANAGEMENT COMMANDS AND CVARS*
cooproam (cvar): In coop mode, setting this to 1 will tell the bot to go off
and roam the level on its own instead of following you. The default is 0.

coopnoitems (cvar): Setting this to 1 in coop mode will tell the bots not to
collect items. The default is 0.

stopattacking (command): Tells all the bots in coop to stop attacking their
current enemy.

dontgetthat (command): Tells all the bots in coop to stop trying to get the
item they're currently after.

*WAYPOINT MANAGEMENT COMMANDS AND CVARS*
nowaypoints (cvar): Setting this to 1 will disable the use of waypoints
entirely. This is not at all recommended.

tracewp (cvar): Default is 1. Setting to 0 will disable the tracing of
waypoint to waypoint while placing waypoints for a level with no NFR
file.

makepoint (command): This will add a waypoint at your current location, it
is used while constructing a waypoint file for a level (see below).

doneplacing (command): Use this after you've finished placing waypoints
for a level.

CONSTRUCTING WAYPOINT (NFR) FILES
---------------------------------
When you load up a level that doesn't have an NFR file for it in your
Famkebot\wpfiles directory (also note that coop NFR files are saved
seperately, in Famkebot\wpfiles\coop), you will automatically begin
placing waypoints (which will be visible to you in the form of data
discs) whenever it is determined by the checks in the program that
one should be placed. The program is often incorrect in its
assumptions as to where they need to go and will sometimes neglect
to place one in an area where it is needed. If you see this happening,
use the makepoint console command to place a waypoint manually. Here
are some good tips for creating waypoint files:

1. Always make sure each waypoint is visible from the previous waypoint
   and the next waypoint.

2. When going through doors, place a waypoint somewhat close to the door
   on each side of it.

3. Make sure you stay crouched while placing waypoints in areas that
   require the player to crouch to avoid certain obstacles.

4. Try not to go off any ledges that can't be climbed (note that the bots
   DO have support for ladders, so using ladders is fine).

5. Don't get killed.

After you've finished constructing your waypoint file, use the doneplacing
command to save the waypoints to an NFR file and restart the level. The
NFR will be automatically loaded each time the level is loaded from now on.
If you don't like the job you did on the NFR and want to redo it, simply
delete it from your Famkebot\wpfiles (or Famkebot\wpfiles\coop) directory
and reload the level. Each NFR file will have the same name as the level it
is for (base1.bsp is base1.nfr, etc).

BUGS, ETC.
----------
There are, of course, a variety of bugs. Though if the level is waypointed
well enough, they won't be noticed and might not even be present. As far
as I know, dedicated server support works fine and there are absolutely
no crashing bugs. If you find a bug that causes the server to crash,
please notify me and tell me exactly what was going on as it happened.

COPYRIGHT/PERMISSIONS
---------------------
The bot may only be distributed if this file and all the others files that
came with it are included in the redistribution, and no money is charged
for the product being distributed. This excludes such things as video
game magazines which include a CD and things such as that, which are
permitted to include this bot (provided they meet the requirements above)
as long as they notify me before doing so.

