                        ELFBOt v2.1 - STORM Version
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I would like to make one thing stright immediately. This is
NOT the best bot out there. It isn't even close. If you want
a bot with ridiculous amounts of AI, check out the reaper bot.
If you want a bot to have fun with, check out this one.

Originally, I started from scratch with a brand new bot.
After I got a little way into it, I saw how fatally bugged
it was, and chucked ELFBOt v1.0 in the recycle bin. There
we were, back at stage one. Then, whilst browsing on PlanetQuake,
I came across the Web Page of Coffee, a Quake AI bloke. I noticed
he had the source code to his bot, the tutor bot, on his page.
I took a look, and was quite impressed. I then saw he had a
collection of tutorials on improving the bot. After I implemented
a few of the ideas expressed in them, I realised I had some viable
bot code. After quite a lot of my editing, the ELFBOt v2.0 was born,
and stuck in STORM.
The bot includes the following:

Excelent combat AI
------------------

Selects strafing, circle strafing, standing still, backing up, chasing, 
ambushing or several other techniques based on skill level, distance to 
target, its frags, its enemy's frags, its health, its enemies health and its 
weapon. Also, it leads the target perfectly with all projectile weapons, and 
is slightly innacurate with the shotguns, lightning bolt and railgun, based 
on the speed of the target. It now has code for adjusting it's aim to avoid 
obstacles in the firing line.

Good roaming AI
---------------

Coffee came up with a cracker with one of his pieces of code,
called 'Coffee_Move'. This hard core piece of code tells the
bot to get around the level by tracing the walls. In essence,
this code can get the bot from one side of the level to the
other in a short period of time. Thanks Coffee - great work!
Also, I have taught it the layout of all the original DM levels,
so it follows the most intelligent path through the levels,
picking up items as it goes, using a waypoint system.

Uses most STORM weapons to full effect
---------------------------------------

The bot will pick up and use all weapons but the axe, and will
pick up every item but quad, pentagram, biosuit and ring of
shadows (These will be added for next release). Chooses its
weapon based on several stimuli. In addition, it will also use
the following STORM weapons:
        Vampire Shotgun
        Super Laser Gun
        Chain Gun
        Rail Gun
        Gas Grenades
        Nail Shooter Grenades
        Homing Missiles
I will be adding support for more STORM weapons and abilites,
e.g. crouching, in later versions.

Other features
--------------

The bots each have their own colors and appear on the
scoreboard (very few other bots do this, including the
aforementioned Reaper!). They yell taunts at their
opponents during combat. They die in lava and slime, and
can drown. They have some primitive swimming AI too.

The bots use a brand new velocity movement algorithm, which allows them to
move as fast and smoothly as a player, with no jerkiness. They move at the
same speed as a player runs.

They are compatible with teamplay, and will work together
to kick the other team's ass! Each bot also get's its own
individual groovy name. They work in coop mode too, kicking
ass against those Godamned awful AI SP enemies.

When a DM level ends, they will respawn after a few seconds
on the next level, like 'real' DM opponents.

The bots also rocket jump! This looks so cool, as no other bot does this that
I know of!

                        BEWARE! THIS BOT WILL KILL YOU!!!!
                                  (Maybe)
                                     :)

Bugs
----

There is only one major bug in this bot, and that will be
fixed soon. Basically, it doesn't check whether it will land
in lava when it jumps. While this is rather humorous, it does
spoil the effect a little on levels with lava or slime on them.
Never mind, eh? I'll sort this out soon! Also, if you set more
than 16 bots on a level, it crashes to the console.

Coming Soon
-----------

Other than the lava checking code, I will also be adding the
following to the bot in the future:

Better swimming AI.
Adjusting the aim of projectile weapons to avoid hitting obstacles
in the way.
Strafing to items during combat.
More STORM weapons!

How to use the bot
------------------

Firstly, install STORM into a subdirectory of your Quake
directory, called STORM. Then run quake with the command:

QUAKE -GAME STORM -LISTEN 16

This will load quake using STORM and the ELFBOts, allowing for
up to 16 bots on a level. Feel free to replace the 16 with a
higher number if you have a powerful PC. Then, start a new
deathmatch or coop game, setting the skill as you do, and begin
on a new level. Then use some of the following impulses:

IMPULSE 50: Spawns a bot, which fights on your team
             during teamplay
IMPULSE 51: Spawns a bot, which fights on the bot team
             during teamplay
IMPULSE 52: Toggles your viewpoint to that of the bots

In a deathmatch game, either 50 or 51 will spawn a bot who
will fight against everyone.

In a co-op game, the bots will fight enemies only, from either
50 or 51.

Legal Crap
----------

You MAY use these modifications as a basis for other publically
availible work, providing you give credit to both me (SkinSki)
and Coffee.

Other than that, you may do whatever you like with the contents
of this archive.

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

This modification is available from the following URLs:

http://www.storm-1.freeserve.co.uk
