WAB is the Wolfenstein Administration Bot.  Documentation is light
right now, but I wanted to get this out into the community ASAP in an
attempt to clean things up a little.

Check for updates at:

  http://www.baz.com/quark/software/wab/

See INSTALL for installation instructions.  Read wolf.cfg for basic
configuration file instructions.  See UPGRADING for upgrading
instructions.

OVERVIEW

The philosophy behind WAB is to, as much as possible, automate the
administration of a Return to Castle Wolfenstein server.  The three
main areas WAB is designed to perform actions are:

1) Overall Server Administration.  As much as possible, WAB should
   keep the server running smoothly on its own.  That's what the "Bot"
   in its name means, and this is the idea that is new with WAB - it
   tries to be a completely automated attendant.  In cases where this
   is not possible, it should make tools available to help human
   administrators do their job as easily as possible.

2) Minimize Annoying Players.  This is useful for all severs,
   Friendly-Fire or not.

3) Eliminate Intentional Team-Killing.  Obviously, if you have
   "friendly fire" off, this doesn't do very much.

The documention below is broken into these sections, so that you may
better undestand what the point of a specific feature is.  This
document is intended (for now) to be an overview of the capabilities;
to learn exactly how a feature is used, please see the wab.cfg file
distributed with WAB.  Below, when a mention is made of, for example,
"[server]:kill_server", that means the variable "kill_server" in the
section "server" in your wab.cfg file.

OVERALL SERVER ADMINISTRATION
WAB has several features to help make your server run more smoothly.

  Message of the Day
  The [server]:motd variable allows you to specify a message of the
  day that will be spammed - er - BROADCAST to your users
  periodically.  You can let them know of rules, where your server
  home page is, etc.

  Logging
  WAB logs things more clearly than the server logs, and includes IP
  information, so you can much more easily see where people come from
  and what they do.

  Nick Protection/Logins
  Using the [user] section, you may specify users by a combination of
  IP and nickname.  Nicks can be protected (so that those not
  connecting from the correct IP are kicked automatically), and other
  offenses from them can be ignored.  Finally, there is an "admin"
  flag which, if set, allows that user to access the admin "say"
  commands (see "SAY COMMANDS," below).  You should have one
  [user] block for each user, not multiple names under one block.

MINIMIZE ANNOYING PLAYERS
Annoying players are those who have ridiculously bad scores (taking up
slots better used by good players), and annoying names.  WAB can kick
these players, and, in extreme cases, ban them:

  Bad Scores
  The [server]:min_score variable sets a minimum bar.  Players with a
  score lower than this value will be kicked, assuming
  [server]:enforce_score is one.

  Annoying Names
  Simply add any keywords you wish to filter on to the [server]:illegal_names
  variable.  Finally!  A server free of third-grade-level potty humor
  names!  As with all name functionality, colors are ignored by WAB;
  ^1N^2A^3M^4E is the same as NAME.  There is an option to not allow
  names with leading spaces; would-be troublemakers seem to think this
  makes them harder to kick.

  Scrolling Names
  Animated names often flood 56k users, take up space on the console,
  and (I think) are annoying.  If [server]:kick_name_spammers is set
  to 1, then anyone who changes his name more than
  [server]:max_name_changes_per_second will be kicked.

  Grenade Cheaters
  Older versions of Wolf (prior to 1.1) had a bug where Lieutenants
  could throw infinite number of grenades with basically no
  delay.  WAB can detect the most egregious violaters of this; a much
  better solution is to upgrade your server to 1.1.  There are a
  number of variables in the [server] section to control this;
  [server]:kick_grenade_cheaters indicates whether checking should be
  done, at all; grenade_cheat_ban_time regulates how many seconds they
  should be banned for, and there are variables for each class in case
  you've come up with a way to change the default number of grenades
  for each class.

  Banning by Name
  You can effectively ban by name if you create a [user] section with
  that person's name in the [user]:name field, and set
  [user]:protect_nick to 1, and do not set any IPs that the user is
  allowed to login from.  As with all name functionality, colors are
  ignored by WAB; ^1N^2A^3M^4E is the same as NAME.
  
  Banning by IP
  Finally, if you just never want to see someone again, add his IP to
  an [ip] section, one section per IP you wish to ban.

ELIMINATE INTENTIONAL TEAM-KILLING
In addition to the score items under the "Annoying Players" section,
WAB can further help combat TKs.  WAB watches what happens in a match
and tries to make decisions based upon what is happening.  Players who
TK are given "points"; when a player has more than
[anti_tk]:max_tk_score points (by default, 99), he gets kicked and
banned for [anti_tk]:tk_ban seconds (by default, 300 - five
minutes).  The scoring varies depending on consecutive kills, the
weapon used, and so on.  The goal with this system is to use both how
TKs act and how their legimiate teammates react to try to make
decisions about TKs.  There are three basic types of TK recognized by
WAB:  

  Simple Team Killing
  This is, quite simply, one person killing another on a given team.
  Points are assessed depending on the weapon used; the default point
  values given in the configuration file are designed such that
  weapons that it is easy to accidentally kill with (the Panzerfaust,
  for example) get fewer points than those it is difficult to
  accidentally kill with (the sniper rifle, for example).  The same
  basic point values are used to assess the other types, as well.

  Revenge Killing
  If someone kills you, and then you kill them, this isn't considered
  a TK.  It's considered a "revenge killing" and actually gives the
  VICTIM points.  The logic behind this is, if I kill you, and you
  come back and kill me, it's probably because you feel I was doing it
  on purpose.

  Vigilante Killing
  If you're standing around and see someone TK a teammate, and your
  reaction is to kill the TKer yourself, that is considered a major
  indictment of the TKer - you get no points, and the TK gets a lot.

  Consecutive TKs
  Killing a bunch of teammates in a row (without killing any enemies)
  give you bonus points.

  Early TKs
  Killing teammates right after you connect or a round begins gives you
  bonus points.

Finally, in one of WAB's coolest features, if users who have the admin
flag set revenge kill or vigilante kill, the victim gets enough points
to kick him.  In plain English - if you're an admin, and you see
someone kill a teammate, intentionally - just go TK him, and he'll
be kicked!  Similarly, if you get intentionally TKed, when you
respawn, just go kill the guy, and he'll be kicked.

CONTROLLING WAB
If you make a change to your configuration file and want WAB to see
it, simply send WAB the "HUP" signal ("killall -HUP wab" under
Linux).  If you think there is a problem and you'd like to send me
WAB's internal state, do a "killall -USR1 wab", and it will create a
file called "wab_debug.log" in the directory it was run from, and
include in that file a dump of all its internal variables.  If you
report a bug to me, I may ask you to do this to help me find it.

ADMIN SAY COMMANDS
  Anyone who is a logged in admin has access to the "say" commands.
  These uses can say (or sayteam) commands, and the bot will react to
  them.

  kick <name>
  Will kick the named user, by name.  If only one user matches, he is
  kicked, immediately.  If multiple users match, the server will
  respond with a list of names and clientids for all users that
  matched.  Beginning with 0.91f, kick <user> no longer takes a
  regular expression.  As with all name functionality, colors are
  ignored by WAB; ^1N^2A^3M^4E is the same as NAME.  

  clientkick <clientID>  
  If there is a collision in the case of the "kick" command, a summary
  of client IDs that match the kick will be provided, allowing you to
  use the clientkick command to kick the offender.

  testadmin
  Will write a message to the log if the user who says this is an
  admin; not if he isn't.

BUGS:
WAB may not work with Wolf Stats, since Wolf Stats rotates the log out
from under WAB (which is pretty durn rude if you ask me; how would it
like it if WAB rotated them out from under it?).  If WAB periodically
just stops working, this is probably why.  For now, you can give WAB a
HUP signal to restart it.  I hope to have a workaround in for this
Real Soon Now; see Bug 2:

  http://littleboy.tqchallenge.org/pgzilla/show_bug.cgi?id=2

If you'd like more status or to help with this bug.

See:

   http://littleboy.tqchallenge.org/pgzilla/buglist.cgi?&cmdtype=runnamed&namedcmd=0.92%20Bugs

for up-to-date bug information, and to add bugs.

