Licensed To Kill for Action Quake II
====================================

** Current version: 1.22 ** ( February 29th 2000)

Introduction
============

This is the Licensed To Kill (L.T.K.) bot for Action Quake II. It supports deathmatch and 
Teamplay with two teams. I will do more to it, see below for contact method.

This bot is built on the v1.52 Action Quake II source code.

** READ THE Action Quake II DOCS!!! ** Don't ask me about AQ2, only the bot please.
** Read the FOG docs at the CGF site - http://www.botepidemic.com/aid/cgf/ 


Getting Started
===============

You NEED -= Action Quake II =- to use this, it will NOT work without it! I am using the simple 
method of replacing the AQ2 gamex86.dll with the LTK one to run the game ( ++ make a 
copy of your real action/gamex86.dll before you install this one! ++ ) so I start it with:

c:\quake2\quake2.exe +set game action +deathmatch 1 +maxclients 8 +map asylum
or for a team game
c:\quake2\quake2.exe +set game action +deathmatch 1 +maxclients 8 +set teamplay 1 +set 
roundlimit 5 +map city 

If you don't want to replace your AQ2 dll then you must copy your WHOLE AQ2 directory to a new
location (eg: drive:/quake2/ltk/ )and then unzip the LTK files to that directory MANUALLY!

Useful Commands
===============

set fog 1		[ Turn on OpenGL fog support ] 
team 1			[ puts you on team 1 - duh! ]
sv addbot		[ adds a bot for normal deathmatch ] 
sv addbot 1		[ adds a bot to team 1 ]
sv addbot 2		[ adds a bot to team 2 ]
sv addbot 2 JackyWoo terror/swat [ adds bot named "JackyWoo" with "swat" skin to team 2 ]
sv removebot <NAME> [ Removes that bot ]
sv removebot all	[Removes all bots]
ltk_skill <VALUE>	[ value 0(easy) to 10(lethal)]
ltk_chat [0,1]	[ switches bot chatting off or on ]
ltkversion			[ prints the version number of the bots you are running (v0.12beta+)]

sv botdebug on [lets you see lots of useless information and initiates debug mode]
sv shownodes on [Displays all visible nodes]

ltk_showpath [0,1]	[Displays bot path information in debug mode]
ltk_routing [0,1]	[Allows you to create a new route file for the bots when set to 1]

Skill Setting
-------------
I have added a new cvar "ltk_skill" which allows you to adjust the accuracy of the bots. On skill
level 0 I can waste them and always stay top of the frag list. On skill level 10, I get 
wasted and stay at the bottom of the frag list. Experiment with settings until you find a 
level you are comfortable with.

Read the ACEBot and AQ2 docs for anything else you need!

Sample Config File
==================

The new config file system first looks for <gamedirectory>/bots/LEVELNAME.cfg and then for 
<gamedirectory>/bots/botdata.cfg. This allows you to set up bots with particular weapons for
certain levels. For example, shotguns and HC work well in Asylum, but not in TeamJungle. This
way you can ensure intelligent weapon choices based on your own knowledge of a level.

The first thing in the file must be the file version number after a "!". Currently this is
just 1 - this allows the game to spot bad config files later if we add more options to them
so it can deal with them gracefully if you forget to add the new information that is required.
It will print a warning message and invent some new data to fill in with. You will still need
to manually alter the file at some point.

It would be easy for someone to write a config maker that would do all this for you with
menu or option box selections - I just don't have time, sorry! If anyone does write one, 
let me know and I'll put it up on the LTK site with full links to your other stuff.

Any line starting with a HASH (#) is a comment and will be ignored. Bot data lines
currently consist of:

"NAME", "MODEL/SKIN", TEAM, WEAPON, EQUIPMENT;

Note the punctuation, no commas or quotes and it won't work! Also - NO BLANK LINES!

Weapon choice is a number from 1 to 5 and represents:
1 - MP5 Machine Gun, 2 - M4 Assault, 3 - M3 Shotgun, 4 - HC handCannon, 5 - SNIPER Rifle
Equipment Choices:
1 - SILencer, 2 - SLIPpers, 3 - BANDolier, 4 - KEVlar vest, 5 - LASER sight

I have used the abbreviations above as reminders of number order in the sample files. This
file is suitable for a small game on Asylum.

--------------- start sample file -------------------
!1
# Special config for the Asylum level
# "name", "model/skin", team, weaponchoice, equipchoice;
# Weaponchoice [1..5] MP5, M4, M3, HC, SNIPER
# Equipchoice [1..5] SIL, SLIP, BAND, KEV, LASER
# If teams then this is Team 1
"FatGirl Slim", "female/venus", 1, 1, 4;
"Killer Kombo", "male/cajin", 1, 1, 4;
"Jackie Chan", "male/mclaine", 1, 1, 4;
# Team 2 - Mix n Match
"Kim DeVille", "sydney/sydney", 2, 4, 2;
"Arnie Black", "male/commando", 2, 3, 1;
"The Sarge", "male/grunt", 2, 5, 4;

--------------- end sample file ---------------------

Radio Use by Bots
=================

The bots now have rudimentary use of the radio in team games. They will report in if asked to do 
so, tell you when they kill an enemy and will notify you if they take more than 20 points of 
damage in one hit. 
The gender they use depends upon the model set in the botdata.cfg file in the ./bots/ subdirectory. 
The simplest check I could think of was to see if the model name began with 'f' (female) or 'sy' 
(Sydney).
Note - it does not use the TEAM model setting. A female bot using a male model for teamplay will
still use her female radio voice.

Useful Information
==================

There is a website for L.T.K. - see the contact section

1) You can create new node files for new levels as you play them.
2) L.T.K. saves and loads route files automatically at level changes.
3) There are currently people setting up node file repositories for LTK.
4) If you do not run all round the level first, LTK bots will take a lot longer to find a 
good route and probably get stuck a lot.
5) The node files are called "<mapname>.LTK" and are saved in "action/terrain/"

Creating Good Route Files:
==========================

1) Start the level in Deathmatch mode - not teamplay - without bots.
2) Turn on debug mode (sv botdebug on) and routing (ltk_routing 1)
3) Walk round the level visiting every area. Don't walk too close to thw walls. You will
see coloured nodes being dropped behind you as you walk. If it overflows while routing just 
call up the console and "sv savenodes" then reload the level ("map MAPNAME") and carry on.
4) Make sure you go around each area "both ways". That is, if you jump over a desk to get 
somewhere, make sure you jump back over it the other way at some point.
5) Reload the level before testing it with bots and set ltk_routing 0.
6) Use "showpath NODENUMBER" (needs ltk_showpath 1)to see a path to the node you want to visit. 
This is useful for tracking down broken paths. Often walking to and from the node is enough 
to fix the path. If you just get a line through the ceiling/wall then the path is broken!
7) Test the level thoroughly with bots in deathmatch before you try teamplay. Make sure debug
mode is on and watch the messages about Long Range goals. If they constantly don't find a
long range goal then your route file is broken somewhere.
8) Once you're happy - SAVE THE FILE SOMEWHERE! If the game screws up it may write a new,
almost empty file instead of your complete one! (It happened to me...)


Known Workarounds
=================

SZ_GetSpace Overflow errors!
These are caused NOT by the bots but by the AQ2 bullet holes, bloodsplats and Shell Casings!
Turn these things off and the overflows seem to disappear.
For information on how those settings work, read the AQ2 docs.

Future Plans
============

New Multiplayer AI for a new AQ2 bot( in progress )

Contact
=======

Use the mailing list please! 

The LTK website is at http://www.planetquake.com/maxtron/ltk

ltkdiscuss	(go to http://www.coollist.com and join "ltkdiscuss") mailing list
	(This is where you get to chat to me ands the other list members about
	LTK. It is also the best place to post Bug Reports.)


Any Bug Reports should be useful ones, eg:
------------------------------------
System: K6/2-350, 128MB, TNT, SB16
LTK Version: 1.11
AQ2 settings: <contents of AQ2.ini>
Problem:
	Persistent crash on City Level when 8th bot spawns in Teamplay mode, etc..
------------------------------------------------------------------------------
Or something like that!


Credits
=======

Author (LTK specific code):	
		Connor "RiEvEr" Caple
Author ACEBot: 
		Steve Yeager (see included ACEBot file)
Author CGF SFX/Fog code and for many useful discussions: 
		William van der Sterren (http://www.botepidemic.com/aid/cgf/)

Fog code improvements	  :
---------------------------
Rohan, coder of 'Revenge of the Stroggos' (ROS) and Navy SEALs 2, who was the first to add fog to Q2 (in June 1998) 
Roscoe 'legion' Sincero and his Inside3D tutorial 
DevilMan of 'AQ2: Infiltration' who assisted William in getting linear fog to work (not covered in the tutorial above) 

The original AQ2 authors are listed in the AQ2 docs and menu and at 
http://aq2.action-web.net/ where there are stacks of new maps and models etc...


$Header: /LTK2/LTK2Bots.txt 5     29/02/00 14:45 Riever $
