Indecisive Bot 1.0 - June 16, 1997

Indecisive Bot Features:

Teamplay is supported, and bots respawn across level changes
Can be configured to use axes, weapons, or to switch between them
Uses combination of wall-following and object seeking to explore levels
Deals with lifts, doors, buttons, shootable triggers, etc.
Evaluates items - doesn't go for health when uninjured for example
Can finally swim, but probably won't make the Olympic team
Dies in lava, slime, & water, and no longer splashes maniacally
If on a ledge, can jump over your head and gib yo' ass from above
Two teams of 8 each on House of Chthon is complete madness
Imbued with an inate sense of carnage, and is not afraid of death
Moonlights as a professional art critic, and is a sensitive violin virtuoso
Had his truck (1965 GMC, turquoise, license #TY3104) stolen in Seattle on
June 13th and is upset about it, so keep him away from rocket launchers.

---------------------------------------------------------------------------

Quick start: With the registered Quake, copy PROGS.DAT to quake\gyrobot
(create the "gyrobot" subdirectory under your "quake" directory) and type

quake -game gyrobot +deathmatch 1 +impulse 220

Generate more bots by typing "impulse 220" at the console prompt.
Impulse commands can be assigned to keys with the bind command.
With the following, I can just hit E each time I want to add a bot:
	BIND E "IMPULSE 220"

Impulse 220 always spawns a bot (up to 16) that wants to kill you.
If teamplay is on, then impulse 229 will spawn a bot for your team.
With impulse 230 and 231, you can make bots stick with axes or
use axes and weapons, and when you change levels, the same set of
bots and their behaviours should respawn.  However, they lose whatever
weapons and armor they had accumulated in the previous level.


Short list of impulse commands:

200 - Display version and short list of commands
220 - Spawn one bot (up to 16 allowed)
229 - Spawn a bot for your team (teamplay must be enabled)
221 - Remove one bot (removes the highest numbered bots first)
222 - Remove all bots
223 - Status of a particular bot
224 - Sorted list of scores of players and bots
225 - List top 3 scores
228 - Toggle observer mode - Bots don't notice you unless you shoot them
230 - Use axes only
231 - Use axes and weapons
232 - If winning, use axes.  If losing, use weapons.
201-216 - Select an individual bot for a future operation
242 - Select particular bot you're looking at for a future operation


Long list of impulse commands:

Impulse 200 - List impulse commands

	Displays a quick reference list of supported impulse commands.

Impulses 201 to 216 - Selects an individual bot

	These impulses do not have an immediate effect, but rather, select
	a bot for a future impulse to have an effect on.  Note that
	selecting a bot with an impulse from 201 to 216 will change the
	behaviour of most of the impulse commands that operate on bots.

Impulse 220 - Spawn a bot

	Spawns a bot for the bot team.  If teamplay is disabled, then bot
	wants to kill everyone.  Having an individual bot selected has no
	effect on impulse 220.  Up to 16 bots are allowed.  To affect
	their behaviour, see impulses 230, 231, and 232.

Impulse 229 - Spawn a bot for the player's team

	If teamplay is disabled, then the bot wants to kill everyone,
	including the player.  Having an individual bot selected has
	no effect on impulse 229.

Impulse 221 - Remove a bot

	If no bots are selected, removes the highest numbered bot, which is
	usually the last one created.

	If a bot is selected, then that particular bot is removed.

Impulse 222 - Remove all bots

	Zap!  They're all gone.

Impulse 230 - Use axes

	If no bot is selected, causes future bots spawned with 220 or 229
	to be axe-only.

	If a bot is selected, causes that particular bot to use axes only.

Impulse 231 - Use axes and weapons

	If no bot is selected, causes future bots spawned with 220 or 229
	to use weapons.  Axes are used sporadically, even when they are not
	the best choice.

	If a bot is selected, causes that particular bot to become a
	weapons user.

Impulse 232 - Bot's choice - If winning, uses axes.  If losing, uses weapons.

	If no bot is selected, causes future bots spawned with 220 or 229
	to use "merciful" behaviour (what I do I when I'm an LPB playing
        with a bunch of modemers), which is to periodically compare their
	frag count to the player's, and to switch to either axes or axes and
	weapons depending on who's winning.  If the frag counts are close,
	they will sometimes just stick with whatever behaviour they're
	currently using.  When they respawn in the next level, they will
	continue with the behaviour they were using in the previous level,
	and will continue to adjust depending on frag count comparisons.

	If a bot is selected, has the same effect on that particular bot only.

Impulse 224 - List scores

	Prints a sorted list of the frag counts of all player and bot
	entities it can find.

Impulse 225 - Top 3 scores

	Same as 224, but only lists the top 3 scores.

impulse 223 - Bot status

	Prints a short blurb on the currently selected bot.  Impulse is
	ignored if no bots are selected.

Impulse 228 - Observer mode

	Make bots not notice you, unless you shoot them or they were
	already mad at you.  This is handy to let you walk around and
	see how the bots behave and navigate.  You can still take damage,
	so don't step in front of any rockets.

Impulse 242 - Select targeted bot

	Selects the bot you are looking at for a future operation.
	This has the same effect as using impulses 201 to 216 to
	select a bot, but it solves that problem that most of the
	time, all bots look the same.  This permits selection of
	a bot by pointing at it and issuing an impulse.


Bots and teams that have been configured for certain behaviours should
retain those behaviours across level changes.  So, for example, if you have
set up a bunch of bots with four axe users, three weapons user, two that
change their behaviour depending on whether they're fragging you too much
or too little, and one for your own team, all those bots should remember
their settings when you change levels.

Support for a number of monsters have been removed from this progs.dat
to keep the size down, so you may get some error messages or bizarre behaviour
if you try to use this progs.dat to kill some knights or wizards or something.
Stick with deathmatch mode for best results.

---------------------------------------------------------------------------

Known problems:

-They can get stuck in walls when underwater.  I gib them when I detect it.
-They don't move over grates very well, especially ones over lava or slime.
-Once in awhile they get hung up in fairly simple situations.
-They cannot set their own colors - if anyone can fill me in on the story
 behind the entity fields .owner, .team, .color, and .skin, I would be
 grateful.
-Bots sometimes (very rarely) fall out of a level while still alive.
-In multiplayer deathmatch, the messages aren't right and teamplay is
 all wonky.  I haven't really tried to make this work for multiplayer DM yet.
-They're vicious opponents, but in levels with lots of lava and slime to
 fall in, they kill themselves out of clumsiness too often.  If you're finding
 them too easy to waste, add a few more or try playing in a different level.
-If enough people like this thing, maybe I'll do some more work on it.  There
 are enough really cool bots out there already that I thought one more was
 kind of redundant, but it was interesting working on it anyway.

---------------------------------------------------------------------------
Greetz n' howdies:

Thanks to Den for encouraging me to release this thing!  Thanx and tips
o' the hat to Matt, Crash, Scope, Bubbah, DavO, Langsuyar, Taskmaster, Bill
for destroying the Corporals in Nightmare and making me eat my words :),
Scott, Marcus, and everyone else that I'll feel guilty about for not
remembering off the top of my head because I'm going senile.

Things you should download before you even bother with my measly bot
include Matthias Worch's Beyond Belief level pak, and Neil Manke's awesome
level Slaughterhouse - SLAUGHTR.ZIP.  You must play them.  Go to your
favorite level review page right now and download them.  For an eyefull,
check out DavO' mondo cool artwork at http://www.algonet.se/~davo

Thanks for gibbing Indecisive Bot!

- Gyro   gyro@blarg.net   http://www.blarg.net/~gyro

---------------------------------------------------------------------------

Indecisive Bot is Copyright (C) 1997 by Aaron Logue.  Unauthorized
commercial use of this material is subject to prosecution, including
but not limited to injunctive relief.  Portions of the compiled
progs.dat are copyrighted by Id Software, Inc.
