-------------------------------------------------
L-Fire CTF Version 1.0 - Release November 2, 1998
-------------------------------------------------


Info
----
L-Fire CTF is a modification to ID's official Threewave CTF.  

You can visit the L-Fire Development website at
http://www.planetquake.com/LFire or email to LFire@yyz.com.


Getting Started
---------------
Please read the documentation in the file LFireCTFManual100.pdf, which is
available from the L-Fire Development website.


Documentation Changes from Version 0.88
---------------------------------------
If you are upgrading from version 0.88, please read the
LFireCTFManualDiff_088_100.pdf, available at the L-Fire Development website.
This manual highlights the differences in the documentation between
version 0.88 and version 1.0.


L-Fire CTF Changes and New Features
-----------------------------------

- rocket arena overtime, 1 or 3 rounds
- sudden death overtime
- level start countdown (short countdown at level start so everyone starts
  at the same time)
- ZBot detection with logging, booting, and banning
- full Q2 VWep support - no more diapers and no more model restriction
- port banning (ban default ZBot port 27902)
- elections for match admins
- options to reduce hyperblaster lag
- server-side rate limiting to cap the max rate for players (prevent
  LPBs from sucking all of the server's bandwidth)
- Linux gamei386.so now works with glibc version of quake2
- team change flood protection to prevent players from rapidly
  changing teams through an alias and causing other clients to overflow
- name change flood protection to prevent players from rapidly
  changing their name through an alias and causing other clients to overflow
- added blowout limit so the level ends if the difference in flag captures
  between the teams is too great "Capturelimit hit (mercy rule)"
- restored yellow respawn protection glow when colorquad is on (the glow
  color turned red when 3.19 came out)
- implemented new tech spawning algorithm so techs are more evenly distributed
  when the level starts - multiple techs will no longer cluster at the same
  spawn point
- powerup banning to ban quad, invulnerability, etc.
- "chase" command to directly chase a player without cycling through
  other players
- in spectator, using next item and prev item (usually bracket keys)
  automatically moves the spectator to chase camera, without having to
  select chase camera on the menu
- allow hudtime to be changed through admin permissions - changes to hud
  also take effect when the level changes, instead of requiring a server
  restart
- countdown timer now supports 3 digits instead of giving "Can't find pic"
  errors
- countdown digits are now consistently displayed after players display and
  remove the score list or menu
- always get full obituary messages during matches - no matter what
  the server's filterobits cvar is or the client's "fullobits" and
  "limitobits" settings
- improved match starts so telefrags are no longer possible
- changed "matchprepare" command to "matchsetup" - a little easier to type
- renamed "clan match mode" to more generic "match mode"
- in match mode, server no longer automatically changes to the next level,
  so scores stay on the HUD
- admin_password cvar for easier assignment of admin privileges
- client choice on profanity filtering (client can choose to see uncensored
  messages or censored messages, regardless of server defaults)
- maploop_file cvar to select which maploop you want to use
- repositioned info messages such as "teams are uneven" so they are
  displayed more consistently on different client resolutions
- game and version info output to console when the server is started
- removed alarm sound that is played when teams are uneven by four or more
  players - the alarm was irritating and way too loud when teams were uneven
  after a level start countdown

- fixed bug where using the setdmflags command would not set a value
  above 65535
- fixed a bug that allowed clients to be invisible if the CTF Force Join
  dmflag was set
- fixed a bug in a warning message with frag logging if the log file could
  not be opened
- fixed duplicate messages that appear on the single player console when
  not running as a dedicated server
- fixed bug where server didn't send permission summary when assigning
  admin permissions
- fixed a bug in Hentai's VWep code that caused the grenade to not make a
  ticking sound
- fixed R_CullAliasModel errors in Hentai's VWep code


Bug Fixes to Id Code
--------------------

- fixed grappling hook to eliminate random throw and bounceback
- fixed two major scoreboard bugs in Id's CTF code that made overflows
  more likely and spectators not show up
- fixed a bug in Id's code where players can't suicide (type "kill")
  immediately after dying, but they could "kill" immediately after
  changing teams or spawning into the game
- fixed power armor bug in Id's code where power armor would not
  automatically activate in certain cases where it should auto-activate
- fixed a bug in Id's CTF code where spectators on spawn points would 
  prevent players from spawning at those points
- fixed a bug in Id's CTF code that favored some spawn points over others
  for tech spawning, and didn't even consider some spawn points in the level


New cvars
---------
logbots
   Log bot use to the connection logs.  Bot use will not be logged unless
   you also simultaneously set "lognames" to 1.  The default for this
   cvar is 1.

detectbots
   This cvar controls bot detection.  A value of 1 (default) will detect
   bots and display a message to everyone's console.  A value of 2 will
   detect bots and also boot them from the server.  A value of 3 will detect
   bots, boot them, and also ban them until the server is restarted.
   The admin will have to add the IP address to the banned.cfg file for
   a permanent ban.

antinameflood
   Prevents name change flooding.  If a client attempts to change their name
   twice within half a second, they will be booted from the server.
   Changing names twice in half a second is only possible if an alias
   is being used or multiple "set name" commands are issued on a single
   line. Name change flooding is an insidious way to cause clients with
   slower connections to overflow.  Set this to 1 (default) to activate
   name change flood prevention.

antiteamflood
   Prevents team change flooding by preventing team changes from occurring
   more than once every three seconds.  Set this to 1 (default) to activate
   team change flood prevention.

maxteamchange
   If antiteamflood is active, this cvar limits the number of times a
   client may change teams during a single level.  Default is 10.  This cvar
   has no effect if antiteamflood is not active.

grapplefix
   Activates an improved grappling hook that eliminates the notorious
   bounceback and random throw behavior of the previous Id grapple.  Although
   LPBs are usually not affected by this problem, HPBs and players with
   slower video cards (slower framerate) could get thrown in a random
   direction after grappling to the ceiling and then releasing the grapple.
   The buggy grapple is also what caused some players to shake violently back
   and forth while grappled to a surface.  Other than eliminating the random
   throw, the new grapple does not change the grapple in any way.  Grapple
   speed and feel is exactly the same as before.  Defaults to 1.

matchvote_allow
   Allow elections for match administrators.  Defaults to 0.

matchvote_minclients
   Specifies the minimum number of clients that have to be connected before
   a match admin election can take place.  Defaults to 2.

matchvote_pass
   Specifies the percentage of YES votes required to elect the match admin.
   Note that this is a percentage of YES votes out of ALL clients, not
   just clients who voted.  So all players who did not vote are essentially
   counted as NO votes.

matchvote_time
   Specifies the voting period in seconds.  After the voting period is over,
   the votes are tallied and the results are posted.  Defaults to 30 seconds.

   Note: if the vote outcome can be determined before the voting period
   ends, then the voting period will terminate early.  For example, if
   every client votes YES, then the voting period will end because there is
   no point in waiting through the entire voting period.

matchvote_selfelectlimit
   Specifies the number of times per level a client can attempt to elect
   himself to a match admin.  Clients are allowed to attempt to elect other
   players an unlimited number of times.  Defaults to 3.

powerupflags
   Use to ban powerups.  Quad banning, for example, was used in a recent
   DM tournament in L-Fire DM so it didn't turn into a "first person who
   gets quad wins" sort of thing.  Default is "0" (nothing banned).

   PF_QUAD       1
   PF_INVUL      2
   PF_SILENCER   4
   PF_REBREATHER 8   
   PF_ENVIROSUIT 16

matchoptions
   Same as clanoptions cvar.  If you have either "matchoptions" or 
   "clanoptions" set, then match mode commands will be available.
   Default is "0".  This cvar is replacing the "clanoptions" cvar.

maploop_file
   Specifies the name of the maploop file.  Default is "maploop.cfg".

allowsay
allowsayteam
   Allow players to do say or say_team.  Default is "1" for both.
   These cvars are useful in DM tournaments where chatting should be disabled.

filterchatoverride
   Allow individual players to override chat filtering so they can see
   uncensored chat messages for themselves.  Default is "1".  There is no
   reason to turn this off, unless you absolutely insist that your users
   should not be allowed to see profanity - in which case you must be
   from some ultra-conservative strict country or something.

bannedport
   Specifies a port that is banned from connecting.  This is useful for
   preventing newbie zbots from connecting.
   Defaults to "27902".

maxspawns
   Maximum number of spawns per second during match or even starts.
   Limiting the number of spawns per second prevents overflows.
   Default is "4", which allows 4 players per second per team.
   It is recommended that you do not change this cvar.

levelstart
   Number of seconds (countdown) for the server to wait at the start
   of each level before the level actually begins.  Having a countdown
   at the start of the level gives everyone a fair chance to get into the
   game after the server changes levels.
   During the countdown, the player HUDs will have a message that says
   "Get ready to rumble..."  Default is 30 seconds.
   Note that almost no one gets into the game until 5-10 seconds have
   passed, so if you want your server to have a fair start, this value
   should always be at least 15 seconds.
   
levelstart_uneven
   Number of seconds (countdown) for the server to wait at the start
   of a level if the previous level had uneven teams.  This countdown
   should be longer than the normal "levelstart" countdown so people will
   have a chance to reorganize the teams and have a better game.
   The server message in this case says "Get ready to rumble (even the teams)".
   Default is 45 seconds (long so people will even the teams).
   
   The server considers teams to be uneven if the capture difference
   was greater than or equal to half the capturelimit, and is at least 3.
   For example, if the capturelimit is 8 and the difference in captures
   was 4 or more, then the server will use "levelstart_uneven" instead of
   "levelstart" to determine the number of seconds to wait.

maxrate
  Specifies the maximum number of bytes that will be sent to each client.
  This is useful for preventing LPBs from sucking all of your server's
  bandwidth.  Clients can limit their own rate by using the "rate" cvar
  on the client side, but a lot of users don't know how to do it.  Unlike
  some other mods out there that do rate limiting, L-Fire CTF
  will NOT change the rate on the client side.  Instead, the rate is
  limited at the server side, which is much better because it doesn't
  change the client's rate behind their back and without their permission.
  Default is "0" (no rate limiting).

hb_effects
   Turns on hyperblaster lighting effects, so the hyperblaster bolts
   will light up their surroundings.  These lighting effects are the default
   in the standard Id CTF and they are one cause of hyperblaster lag.
   By turning the lighting effects off, rendering lag can be reduced.
   In practice, players will never notice that the lighting has been turned
   off for the hyperblaster, so it's highly recommended that you keep the
   lighting off.  Default is "0" (no lighting effects).  Set this to "1" to
   turn the hyperblaster lighting effects back on.

hb_skipbolts
   Does not render every other hyperblaster bolt.  Network and rendering
   lag are reduced because only half the number of entities are sent to
   the clients.  In practice, players don't notice this because there's
   a stream of bolts and it's difficult to tell that every other bolt is
   not being rendered, unless you're specifically testing this out and look
   for the skipped bolts.  Note that the bolts still cause damage and will
   show up when they impact a surface - the bolts just aren't sent to
   the client so this reduces lag.

   As with the "hb_effects" cvar, players are very unlikely to notice
   the non-rendered bolts, so it's highly recommended you use this setting.
   Default is "0".  Set this to "1" to not render every other bolt.  Set this
   to "2" to not render 2 out of 3 bolts (even less lag, but the more sparse
   bolt train becomes more noticeable).

   Turning off hp_effects and using hb_skipbolts won't eliminate hyperblaster
   lag, but every little bit counts and these are decent ways to reduce
   lag without affecting gameplay.

ot_style
   Specifies the overtime style - rocket arena overtime or sudden death
   overtime.  Default is "0".  Set this to "1" for RA overtime and set this
   to "2" for SD overtime.

ot_sdtimelimit
   Timelimit during sudden death overtime.  This timelimit is independent
   of the regulation timelimit (the "timelimit" cvar).  Default is 10
   minutes.

ot_rarounds
   Number of rocket arena overtime rounds that will be played.  Single
   round or 2 out of 3.  Default is 3 rounds.  Setting this to "0" or "1"
   will give you 1 round.  Setting this to 2 or more will give you 3 rounds.

mercylimit
   Capture limit difference that causes the level to end.  This is useful
   for avoiding 8-0 games where the teams are obviously uneven.  If the
   difference in captures equals mercylimit, then the level will
   end.  Default is "0".  A reasonable value for mercylimit when
   the capturelimit is 8 might be 5 or 6.  

   The mercylimit is automatically disabled during match mode.

noclustertechspawn
   New start-of-level tech spawning algorithm that distributes techs more
   evenly throughout the level, instead of allowing such things as
   multiple techs clustering at a single spawn point.  Default is "1".  Set
   this to "0" for the older, non-distributed tech spawning.


Removed cvars
-------------
weirdbugdetect
   This cvar used to activate code that prevented people with a percent-sign
   in their names from connecting.  This could cause a crash on 3.17 and
   earlier servers.  With Q2 3.19, this bug has been fixed and so this
   protection code is no longer needed.

vweprestrict
   Controlled model restriction to prevent VWep diapers.  This is no longer
   needed because version 1.0 uses Quake2's new built-in VWep support.


Commands
--------
admin
   This command has been enhanced to automatically read the client's
   "admin_password" cvar.  Instead of having to type "admin <password>", the
   user can set his admin_password in his config file and then simply type
   "admin" when he connects.  The server will read the admin_password cvar
   and assign or reject appropriate admin permissions.  If the client does
   not set admin_password, he can still type "admin <password>" to obtain
   his admin permissions.

setot_style
   Admin command to set the "ot_style" cvar.

setot_sdtimelimit
   Admin command to set the "ot_sdtimelimit" cvar.

setot_rarounds
   Admin command to set the "ot_rarounds" cvar.

setcolorquad
   Admin command to set the "colorquad" cvar.

setmercylimit
   Admin command to set the "mercylimit" cvar.

sethudtime
   Admin command to set the "hudtime" cvar.

censor
   Overrides the server's "filterchat" setting so chat messages are
   censored for this client.  Note that this does not affect whether
   other clients will receive filtered messages or not.

nocensor
   Overrides the server's "filterchat" setting so chat messages are not
   censored for this client.  Note that this does not affect whether
   other clients will receive filtered messages or not.

matchsetup
   Same as the old "matchprepare" command.  Matchprepare can still be used,
   but it is being replaced with "matchsetup" because "matchsetup" is a
   little easier to remember.

chase [player]
   Chase with no arguments moves a player to spectator (if he's not already
   a spectator) and goes directly into chase camera.  If a player's name
   or number is specified, then that player will be chased.
   This makes it a lot easier to chase a certain player without having
   to cycle through players one at a time.

vote [yes|no]
   Records a YES or NOT vote for a client during a match admin election.

elect [player]
   Used to start an election for a match admin.  If used with no arguments,
   the client attempts to elect himself.  If a player name or player number
   is specified, then the election is started for the given player.


Admin flags
-----------
Flag "*"
   Use an asterisk to give every permission flag without having to specify
   each flag individually.

Flag "L"
   Change overtime cvars: ot_style, ot_sdtimelimit, ot_ratimelimit,
   ot_rarounds.

Flag "M"
   Change the "colorquad" cvar.

Flag "N"
   Change the "hudtime" cvar.


Copyright/Permissions
---------------------
L-Fire CTF is copyright (c) 1998, Kai Kenner.
L-Fire CTF was created solely for my own use, so it is distributed AS IS.
You may distribute this archive so long as this file and all other files
are distributed together.

You may only distribute L-Fire CTF and its supporting files for free.

