Quake2 Battleground v1.20
-------------------------

See the file battleground.txt for a description of the mod and a complete
command reference, and/or use the "commands" and "acommands" commands on any
server running the mod for online command help.

Quake2 Battleground is currently available for Sparc/Solaris, Intel/Win32,
Intel/Linux, and Alpha/Linux.

If you run a public Battleground server, drop me a line and I'll add it to the
list on the web site.

Please send any comments or bug reports to me at punisher@ogl.org.  For bug 
reports, please send me a detailed description of what you did to uncover the 
bug, so that I can reproduce it and then fix it.

This release was beta-tested by clans Abuse (http://abuse.woo-hoo.com) and
Mainstream Resistance (http://www.clanmr.com).  Without their help, it would
have taken me even longer than it already has to prepare for this release.

Thanks, and enjoy!

Ernie Pistor
10/13/98

Changes since v1.06a
--------------------
 - Added ClanRing/CRMod-style ghosts, with all respective commands ("ghost",
   "ghostcode", "ghostlist").  A player is assigned a 3-digit ghost code
   upon readying up for a match.  If the player is disconnected after that
   point, he can be re-attached to his old body, stats and all, by using the
   "ghost" command with his ghost code.  A player that leaves a team to become
   an observer loses his ghost (i.e. if he later rejoins his old team using a
   joincode he starts with 0 frags), though previous stats are stored for
   reporting purposes
 - Incorporated Hentai's 3.15/7/9 vwep changes from the source on
   http://www.telefragged.com/vwep.  I had previously been working only from
   Zoid's v3.15 release notes, so my fix wasn't complete
 - Added "readyteam" command.  Currently any member of a team may use it to
   ready all team members for a match
 - Added "unreadyall" admin command to unready all players
 - Added auto-disabling of warmup mode (the server reverts to the old no-touch
   pregame mode) once more than half of the players have readied up.  This was
   done to encourage the rest to ready up as well.  Note that the server will
   revert to warm-up mode if all players leave their teams
 - Prevented blaster firing when not in match or warmup
 - Added fine item control using "itemflags" and "item".  "itemflags" is a bit
   unwieldy due to the large numbers, but is much faster than the individual
   "item" command
 - Fixed server hangs due to changing map when play is paused
 - Fixed annoying "exploding elevator" bug in warmup/pregame mode (I believe it
   is an id thing, so it may still happen during DM or matches)
 - Corrected an error that would not allow the "tp" mode to be switched
   directly from 4 to 1
 - Made sure a player is not ready upon switching teams or joining a team
   after becoming an observer
 - Added rudimentary message flood protection
 - Added sounds in addition to messages every time a time remaining message is
   printed.  Also when going into overtime
 - Removed items from level prior to the start of a countdown
 - Changed camera switching slightly so that annoying messages are not printed
   when there is nobody to chase
 - Fixed "tl" and "fl" voting to cause the timelimit and fraglimit to be
   properly updated in match mode
 - Changed "bfg" and "powerups" commands to take effect instantly, including
   removal from or addition to the level, and removal from player inventories
   if necessary
 - Updated "stats" command to include stats of disconnected players, and fixed
   a bug that sometimes caused a player's efficiency to be incorrectly
   displayed after a match
 - Reduced the frequency of overflows at match end
 - Allowed client-side "skin" command to be used to set the skin for a team
 - Audible ticks at each second of the countdown
 - Play a sound at each announcement of remaining time during a match (except
   for times < 1 minute)
 - Added team captain functionality, including "captain" and "captains"
   commands (see battleground.txt or the in-game help) and auto-selection of a
   new captain if the current captain leaves
 - Added "pickplayer" command for compatability with Rancor, and for yet
   another way for players to be added during a match (joincode, ghost code,
   and now pickplayer)
 - Added "kickplayer" command for forcibly removing a player from a team
 - Restricted use of teamname, teamskin, readyteam, lockteam, unlockteam,
   captain, pickplayer, kickplayer and joincode commands to team captains and
   admins
 - Fixed problem that was causing cameras to be tilted if you became an
   observer while still dead
 - Fixed annoying bug that would sometimes cause female players to be reported
   as male in match mode
 - Added id-style IP banning support (in addition to the native Q2BG ban
   commands), including the "filterban" console variable to control whether
   to prevent addresses in the banlist from connecting (the default) or to
   allow ONLY those IPs to connect.  The id banning commands are supported
   both as admin commands and as server commands.  The "writeip" command was
   NOT added, as it is inconsistent with the way Quake2 Battleground reads
   bans.  As part of this change, the ability to ban by player number was
   removed (it clashes with the ability to ban toplevel domains).  The
   "kickban" command still requires a player number as its argument, though
 - Added auto-switching to next level if intermission lasts longer than 25
   seconds
 - Switched to Rancor/GX-like scoreboard (with the colors reversed and a few
   other differences) in preparation for multi-team support
 - Changed the efficiency calculation for the stats command to be
   score / (deaths + suicides + teamkills)... used to be
   (score - teamkills) / (deaths + suicides)
 - Put in "player" command for compatability with GX.  People always seem to
   type "player" on my test server and wonder why it doesn't work...
 - Constrained maxplayers to be greater than or equal to minplayers.  This
   should have been true to begin with
 - Added optional spawn protection ("spawnprot" admin command), up to 10
   seconds
 - Made scoreboard show previous match results for one minute after a match

Changes since v1.06
-------------------
 - Fixed server hangs that were sometimes occurring when a match had more 
   players than the map had spawn points (the bug was introduced with v1.05's
   random respawns at match start)

Changes since v1.05
-------------------
 - Added "chasecam", "trackcam", and "eyecam" commands to switch a client to
   each camera.  All 3 commands take a optional player number argument -- if
   given, the player whose number was given is chased
 - Set observer's "weapon" to blaster and health to 100 if a client leaves a 
   team.  It was previously displayed as whatever weapon the client had been 
   using while on a team, though with no ammo, and health of 0
 - Finally completely fixed map verification via maps.txt.  A bug still existed
   where under certain circumstances an invalid map would appear to the server 
   to be valid, resulting in game shutdown
 - Added "minplayers" command and setting to specify the minimum number of
   players that must be on each team before a match may be started.  The default
   is 0.  This setting is useful for preventing matches from starting before
   all players have arrived.  NOTE that a match may be started using the "start"
   command regardless of whether or not each team has the minimum number of
   players
 - Added "joincodes" admin command to allow an admin to view the joincodes of
   both teams.  Useful for player substitutions, since (if an admin is present)
   a player from the team does not need to stop to give the sub the team's
   joincode information
 - Fixed server hangs caused by breaking a paused match

Changes since v1.03a
--------------------
 - Made DUCK button switch to previous target when in chase/eye/track-cameras
 - Made cameras auto-switch to next target if the current target leaves the
   game or becomes an observer
 - Fixed reading of MOTD and reading/writing of bans when the mod is run from
   "baseq2" (same problem as with maps.txt)
 - Replaced hands-off pregame with full-combat warmup prior to a match.  Players
   start with 100 health, 100 armor, all weapons except the BFG, and the
   maximum ammo for each weapon.  No scores are recorded, and no bodies or 
   weapons are left behind
 - Auto-set max. players per team ("maxplayers") once the countdown starts if
   not previously set by an admin.  Also, admins may now change "maxplayers"
   while a match is in progress
 - Fixed bug that sometimes caused a track-cam or eye-cam user to take damage
   or be killed (doh!)
 - Fixed view bug when switching from track-cam to eye-cam on a dead player
   (it was causing you to track at a 45-degree angle as if you were dead)
 - Finally broke down and wrote in much better random spawning at match start
   time
 - Changed "pretime" to take values in minutes rather than seconds, and made the
   maximum time between rounds 60 minutes (default is still 1 minute).  Also
   enabled the setting of "pretime" during a multi-round match
 - Added mode specifier and timer to the HUD in match mode.  Timer counts down
   during a timed match, countdown, or warmup (in multi-round mode), and counts
   up if a match has no timelimit
 - Disabled "ready" command when only one team is populated (doh!)
 - Forced reading of MOTD when a new level is loaded (so that it is updated)
 - Added automatic overtime ("overtime" command).  Can be switched between
   sudden death, timed match extension (i.e. add minutes to the round if tied),
   and none.  Default is sudden death.

Changes since v1.03
-------------------
 - Fixed problem with reading "maps.txt" when the server is run from the
   "baseq2" directory

Changes since v1.02 (OGL 60-player DM Special Edition)
------------------------------------------------------
 - Added audible countdown at end of match
 - Added "powerups" command and vote option to toggle use of powerups
 - Restricted "id" radius a little bit
 - Changed "tl", "fl", and "dmf" commands to allow for the setting of
   mode-specific default values.  The commands now work as follows:
    - Each command now has "dm" and "match" options for setting the values
      that should be used in match and dm modes (i.e. "tl dm 45" will 
      cause the timelimit to be set to 45 each time the battlemode is
      changed to "dm"
    - When used without the "dm" or "match" options (i.e. "tl 45"), these
      commands change the value of the timelimit, fraglimit, or dmflags
      for the current mode.  Upon a later switch back to this mode, the
      default value set using the "match" or "dm" option will be used.
      (See the provided battle.cfg for examples)
 - Added Rocket Arena 2-style EyeCam and TrackCam, courtesy of RA2 author
   David Wright (wrightd@stanford.edu).  As part of this addition, made the
   fire button cycle through the 4 observer modes and removed the chasecam
   option from the Join Menu.  Also made the jump button switch to the next
   player in eye/track/chasecam modes (invnext and invprev, or ] and [,
   will still switch to the next and previous player, respectively)
 - Added "bfg" command and vote option to toggle the presence of the BFG on
   maps that normally have one
 - Fixed MOTD read routines to re-read MOTD on player connect (so the MOTD
   may be changed dynamically)
 - Condensed command descriptions on "commands" and "acommands" menus to 2
   lines or less, and added a blank line between each command.  This should
   reduce the possibility of an overflow when these menus are up
 - Fixed minor bug that was causing some players to wear the white diaper
   in match mode if their client-side model was not vwep-supported
 - Re-worked "kickban" and "ban" player-number banning code.  I'm pretty
   sure this will squash the occasional crashes that occurred when
   kickbanning a user
 - Added check for skins of the form "model/skin" to the "teamskin" command
 - Allowed "inven" (usually bound to TAB) to bring up a menu for players on
   teams.  Consecutive presses to the TAB key or use of the "inven" command
   by non-observers will bring up the inventory, then the menu, then clear it.
   For observers, the inventory will not be shown
 - Fixed random joincodes sometimes being more than 4 characters
 - Added obsmode "shutup" to allow admins to prevent observers from speaking
   *at all*.  Also, observing admins are now allowed to speak no matter what 
   the obsmode is
 - Added map name to "stats" display
 - Players may now leave a team during a match without disconnecting
 - Added "Help" option to Join Menu

Changes since v1.01 (QuakeCon CPL Tournament Edition)
-----------------------------------------------------
 - Added "switch" command to allow server to switch to DM mode (a la QWComp)
   after a specified amount of time
 - Fixed bug that only allowed votes with the "tp" option to be for 0
   (nonexistent!) or 1.  Now you can vote for 1-4 as expected
 - Removed lowercase letters from random joincodes

Changes since v1.0
-----------------------------------------------------
 - Allowed the use of "maintenance" commands (teamname, teamskin, counttime,
   pretime, and obsmode) in battlemode "dm"
 - Fixed "stats" to not show observers (who have no stats, of course) during
   a match or a free-for-all
 - Fixed "dm" voting.  "vote dm 0" was not being properly handled.
 - Added team names and scores to the HUD in match mode for easy viewing

Changes since v0.99i
--------------------
 - Added an optional server-enforced ping minimum and maximum.  A client whose
   average ping drops below the min or rises above the max for a sustained 
   period of time is automatically removed from the game
 - Fixed match/deathmatch pausing ("hold" and "resume" commands)
 - Added GibStats frag logging capability
 - Re-added vwep support, and made it compatible with 3.15's auto-vwep.
 - Changed the default timelimit logic to *not* set the default time to 20
   minutes if timelimit is 0 but fraglimit is nonzero
 - Fixed fraglimit voting
 - The MOTD is now displayed automatically at connect time in match mode as
   well as in free-for-all mode
 - Observers are now permitted in deathmatch/free-for-all mode
 - Made menus dynamic, so they can be used even when you are on a team or in
   a free-for-all.  If you are not an observer, they can be accessed by using
   the "menu" command.
 - Fixed "time" command to report the correct elapsed and remaining times
 - Server no longer crashes when banning by player number or kickbanning
   (it was due to a dangling pointer introduced in 0.99i)
 - Allow voting when only one player is present on the server
 - Refined/redefined the 3 adminmodes as follows:
      CLIENT: clients may vote, make team name/skin changes, and start matches
      ADMIN : clients may make team name/skin changes and start matches
      STRICT: only admins may make team name/skin changes or start matches
 - Added "join" command for joining a deathmatch without the menu.  In 
   battlemode "match", functions much like the "team" command
 - Changed the "teamname" and "teamskin" commands as follows: if called with
   a single argument, they assume you wish to change your own team's name or
   skin to the supplied value.  If called with a third argument, assumes that
   the second is the name or skin the team  you wish to modify and the third
   is the new value.
 - Added the "teams" and "teamskins" commands to display the names and skins
   of the 2 teams, respectively.  This restores the functionality lost in 
   the "teamname"/"teamskin" changes.
 - Due to popular demand, renamed the old "dm" command that set the "dmflags"
   directly to "dmf".  The "dm" command itself is now used to set the
   2 familiar deathmatch modes used in many classic Quake teamplay mods.
 - Added the "tp" command to set the 4 familiar teamplay modes
 - Made teammate armor protect work in deathmatch mode (not that anyone cares)

Changes since v0.99
-------------------
 - Enabled the server ("sv") version of the "obsmode" command
 - Made "dmflags", "tl", and "fl" votable when adminmode is "client", and 
   and otherwise disabled non-admin changing of these settings
 - Stopped (or minimized) player overflows when beginning large matches
 - Fixed minor chasecam bugs (thanks to Chris Jones, u238|squish)
 - Added a MOTD mechanism
 - Added an additional config file ("battle.cfg" by default) to be read at
   server startup.  This will allow automatic server customization.
 - Revamped "maxplayers" command.  It now sets the maximum number of players 
   that may be on a single team.  A value of 0 means no max. per team.
 - Added an "optional" map list.  If the file ("maps.txt" by default) exists,
   then only the maps listed in it may be accessed using the "changemap" command
   or during a player vote.  The "maps.txt" file that ships with Quake2
   Battleground contains the names of all standard id single-player and
   deathmatch levels.  Add or delete as desired.  If the file does not exist,
   then the server will try to change to any supplied map.  Note that THE SERVER
   WILL CRASH if it tries to change to a bad map (there is no known way to test
   for the existence of a map), so be wary of not having this file or making
   typos in it.
 - Banned IPs are now stored in a file ("bans.txt" by default).  The file is 
   read at server startup and written each time IPs are banned or unbanned.
 - Added option to manually set your team's joincode before the start of a
   match.  If this is done, no random joincode will be generated at match
   start, though the chosen code will be displayed to team members.
 - Fixed bug in the observer code (only seen when using the "observer" command,
   i.e. not when you first connect) that caused mouse look to be disabled when
   the fire button was pressed.
 - Added the "stats" command to show player stats (deaths, kills, teammate
   kills, suicides, net score, kill-to-death ratio)
 - Removed broken vwep implementation.. will add support for Zoid's built-in
   vwep as soon as 3.16 source is out
