Title    : The ELFBOt
Filename : elfbot.zip
Version  : 4.0
Date     : 18/9/99
Author   : SkinSki
Email    : skinski@email.com
Credits  : Coffee, for the tutor bot, on which this bot was originally based,
                even though there is little original code remaining.
           FrikaC for several bits of code and ideas.
           Harb!ngeR for testing and ideas.
           RiEvEr for jumping AI.
           Pox for drowning code and stair decending idea.
           Alan Kivling for bot rankings code and thud removal code.

Type of Mod
-----------
Quake C  : yes
Sound    : no
MDL      : no  

Format of QuakeC (if a Quake C Mod)
-----------------------------------
unified diff  : no
context diff  : no
.qc files     : yes
progs.dat     : yes


Description of the Modification
-------------------------------

At last, the ELFBOt is dragging it's way out of the pit of minor bots, and is
playing with the big boys.

This bot isn't the most intelligent one around, but it can compentantly take
on and defeat most human opponents. It learns levels as it plays them, picks
up and uses all items, roams by several different means, including a flexable
waypoint navigation system, which allows it to get around any levels fairly
well. It also can navigate by walking along the walls (not coffee move) a
navigation method which would be able to get it through a maze such as that
at hampton court. It will jump off ledges, and avoids landing in lava
(understanding the gravity level).  When fighting you, it picks the best
weapon it has, based on many criteria. However, the bot's greatest asset is
it's skill at asessing a situation. It will select one of seven attack styles,
yes, SEVEN, depending on the situation at hand, it's own personal experiences,
and the techniques which had worked in the past against that opponent. This
makes it one of the few bots to have a learning curve, so he learns from
experience and develops a personality as the game goes on. Also, the bot has
several game modes built in, which make the bot more enjoyable, as it is not
merely a plain deathmatch bot, it is a bot game.

If the bot is too tough, try a lower skill level (default skill is 1). To
select a skill, type skill n at the console, where n is 1 - 3. Each bot will
have a different skill level, so type the skill you want before you spawn each
bot.

To play with this bot, you should start quake with the parameter:

quake -game elfbot -listen 16

Features Include:

* Skill levels ranging from 0 to 3
which affect
	- bot accuracy when shooting 
	- whether bot leads you with grenades and rockets
        - attack style
* Uses all player frames
* Dynamic level learning
	- Bots build internal map of level as they play, and use
	it to roam around, go find weapons, hunt opponents, etc.
* Understands jumping
	- predicts jumps based on current gravity level 
	- won't jump into lava or slime
        - will jump down, to go after goal
* Combat AI
        - charges, strafes, circles, runs away, hides, gibbers or stands his
        ground based on his own developing personality and experiences, and
        the developing weaknesses of his enemies, using heuristic fuzzy logic.
        He learns how to react to different enemies and circumstances.
        - picks best weapon depending on many factors.
	- will even if needed go after health, ammo, or a weapon 
	in the middle of combat!
	- avoids combat with invulnerable enemies
* Improved aiming
	- leads player at higher skill levels
        - adjusts aim to avoid lips and edges
* Secret Doors
	- Will fire at secret doors before going through
* Chooses goals according to priorities depending on its current 
	inventory, health, armor, etc.
	- Understands and uses all weapons, ammo, powerups, etc.
	- Won't keep going after an item if it can't reach it
	- Will use internal map to go after items it wants but
	can't see 
* Up to 16 bots on a level
* Bot swims in water
	- can jump out of water
        - can swim inteligently on the surface to find a way out of the water
	- won't use lightning gun underwater unless
	invincible
* Bots die in lava and slime, and drown if under water
too long
* Bots can telefrag or be telefragged
* Bot model pitches up and down like a real player
* Bots have their own individual colors and appear on the scoreboard
* No more splashing and thumping!!!
And more to come...


Game Modes
----------

The ELFBOt comes complete with several new game modes, to make it an even more
variable and enjoyable bot. To select a game mode, type:

DEATHMATCH x

at the console, where x is a number from below. Then restart the server, and play!

Number	Description

1	Normal Deathmatch Rules
2	Weaponstay, no item respawn
3 	Weaponstay, other items respawn
4	Edible gibs - When a person gibs, the gibs can be eaten
		      To supliment health.
5	Last Man Standing - The bots and players begin with 5 frags,
			    Every time they die, they lose a frag, 
			    The winner is the last one to zero.
6	Night Mode - All the lights are turned off, and the players
		     and bots glow.
7	Radioactive Mode - One guy is radioactive, and has glowing 
			   Dots around him. He can jump twice as 
			   High as normal, and if he is killed,
			   The killer becomes the radioactive guy.
8 	Lavaball Run - A ball of lava flies round the level. If a bot 
		       or player catches it, he recieves a few shiny 		       frags.....

Bot Personalities
-----------------

If the variable 'temp1' at the console is set, the bots will each 
develop separate speeds, personalities and tactics. Type:

temp1 1

and restart to turn it on.


How to Install the Modification
-------------------------------

Create a directory called ELFBOT as a subdirectory in your Quake directory
(parallel to the ID1 directory) move the PROGS.DAT file included in this archive
to the ELFBOT directory.  

Technical Details
-----------------

The combat goal setting AI uses heuristics with fuzzy logic and learned
behavior based on combat success for decision making.

The roaming AI uses dynamically placed botpaths to move from place to place.

Author Information
------------------

I'm SkinSki, aka MauveBib, chief programmer for the Electronic Liberation
Front. I'm the coder for several patches, e.g.

STORM
Defeat in Detail
ELFBOt
Catch the Shrimp
Demon Tag Bots
The New War

Copyright and Distribution Permissions
--------------------------------------

The modifications included in this archive are Copyright 1999, Steven Polge.
  The original QuakeC source is Copyright 1996, id software.

Authors MAY use these modifications as a basis for other publicly or
 commercially available work.

You may distribute this Quake modification in any electronic format as long as
 this file remains intact and unmodified.


Availability
------------

This modification is available from the following places:

www.planetquake.com/elf
