Be sure to also get the Common Server Files from
http://www.planetquake.com/bop/b_download.html!
-----------------------------------------------------

Balance of Power Deathmatch Mod v1.04 using BoP v0.97

Coded by Matt Ownby
Other source code used from Zoid's CTF

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

WHAT: This is a mod which is based on the BoP idea but also includes a lot
more features such as observer mode, chasecam mode, map voting, zbot detection
profanity filter, an AI bopbot which can makes comments,
fast weapon switching, message of the day, standard logging (gibstats),
weapon and powerup inhibition, dynamic in-game stats, rate enforcement,
flood protection, spam protection, IP logging, IP banning, chase leader mode,
grappling hook, safety timer, max fps enforcement, and more.

WHY: Because I wanted these extra features on my BoP server (198.60.22.79)
and other mod authors were being tight fisted about their source code <grin>.

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

In an effort to support a standardized set of server variables, I have chosen
to try to conform as much as possible to the Lithium commands.  I haven't
used Lithium much, so some of these might be off, and so with feedback I
receive I will be improving these to match.

Where Lithium features and id software features of Quake 2 v3.20 coincide
(such as IP banning or flood protection), the id software equivalent is used.

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

allow_voting    (default 1)
                0 = Forbid users to vote on anything
                1 = Allow voting as it is currently implemented, including
                map voting.
                Example: "set allow_voting 0"

commentary      (default 0)
                0 = No AI commentary
                1 = Allow AI commentary (but not used unless client enables it)
                This is an experiment I was toying with.  I'm still not sure
                I like it.  Right now, BoPBot will make snide remarks over
                unusual deaths, or it will congratulate players who perform
                an exceptionally impressive maneuver.  When I complete my
                decamping code, it will also alert those who care to the
                location of campers.
                Users have to specifify from the in-game menu whether they
                want it, but if you have it set to 0 here they can't get it
                at all.
                Example: "set commentary 1"

fastweap        (default 0)
                0 = Normal Quake 2 weapon switching
                1 = Fast weapon switching
                Example: "set fastweap 1"

filterban		(default 1)
			***THIS IS AN ID STANDARD CVAR IN QUAKE 2 v3.20***
			0 = Only clients matching your IP list will be allowed to play
			1 = Only clients NOT on your IP list will be allowed to play
			In other words, if this is 0, your IP list is a list of acceptable
			clients; if it is 1, your IP list is a ban list.
			Commands for manipulating your IP list are:
			sv addip
			sv removeip
			sv listip
			sv writeip
			To create a ban list, add IP addresses using addip.  To save the list,
			use writeip.  The list will be written to a file called listip.cfg.
			To use the list, +exec this .cfg file when you start your server.
			(This scheme was developed by id software)
			Example: "set filterban 1"

flood_msgs		(default 4)
			***THIS IS AN ID STANDARD CVAR IN QUAKE 2 v3.20***
			Defines how many lines a client must flood before he gets muzzled.
			With a setting of 4, a flooding client will be muzzled on the 5th
			line.
			Example: "set flood_msgs 3"

flood_persecond	(default 4)
			***THIS IS AN ID STANDARD CVAR IN QUAKE 2 v3.20***
			This defines how picky the server is about determining whether a client
			is flooding or not.
			Example: "set flood_persecond 4"

flood_waitdelay	(default 10)
			***THIS IS AN ID STANDARD CVAR IN QUAKE 2 v3.20***
			This defines how many seconds a client is muzzled for flooding OR spamming.
			Example: "set flood_waitdelay 40"

flood_warnings	(default 3)
			This defines how many times a server will muzzle a client for flooding before
			it kicks him off the server.  If this is set to 0, it won't kick him off the
			server.
			Example: "set flood_warnings 3"

hook_pullspeed	(default 700)
			Defines how fast the hook pulls a client once it hits a target.
			Example: "set hook_speed 1500"

hook_speed		(default 900)
			Defines how fast the grappling hook shoots out.
			Example: "set hook_speed 1000"

kicklog		(default undefined)
			A log will be recorded which will keep track of all clients IP addresses,
			the current map being played, and the reason a client was kicked.  It keeps
			track of no other information (see stdlog features below).  This is useful
			for banning annoying clients who cause trouble when you are not online.
			It is the responsiblity of the admin to regulate the size of this file.
			Example: "set kicklog kicklog.txt"

mapqueue        (default undefined)
                This contains the name of the file that holds all the map
                names.
                Example: "set mapqueue maps.lst"

mapvote_list    (default undefined)
                This contains the name of the file that holds all the
                voteable map names. (see use_mapvote)
                Example: "set mapqueue_list mapvote.lst"

max_fps		(default 0)
			This defines how many frames per second a client is allowed to send to
			the server.  If it is set to 0, it does nothing.
			Example: "set max_fps 60"

max_rate		(default 25000)
			This defines how high a client can set his rate.
			Example: "set max_rate 10000"

maxspectators	(default 4)
			***THIS IS AN ID STANDARD CVAR IN QUAKE 2 v3.20***
			This defines how many clients are allowed to be in spectator mode at one
			time.  It has no effect on clients entering the game if use_startobserver
			is enabled.
			Example: "set maxspectators 16"

motd            (default undefined)
                This contains the name of the Message of The Day plain text file.
                If no MOTD file is specified, the default BoP message will
                display.
		    (see motd_time)
                Example: "set motd motd.txt"

motd_time		(default 5)
			This is approximately how long (in seconds) the message of the day file
			is displayed on the screen.
			Example: "set motd_time 5"

no_shotgun
no_sshotgun
no_machinegun
no_chaingun
no_grenades
no_grenadelauncher
no_rocketlauncher
no_hyperblaster
no_railgun
no_bfg		(default 0)
			0 = Weapon will appear on map normally
			1 = Weapon will be removed from the map
			Example: "set no_bfg 1"

no_quad
no_pent		(default 0)
			0 = Power-up will appear on the map normally
			1 = Power-up will be removed from the map
			Example: "set no_pent 1"

password		(default undefined)
			***THIS IS AN ID STANDARD CVAR IN QUAKE 2 v3.20***
			If this is set, clients who connect to the server are allowed to be
			spectators but cannot join the game without a password.  This is different
			from Quake 2 v3.14.
			Example: "set password boprules"

rankings_time	(default 5)
			This is approximately how long (in seconds) the top 15 performances will be
			shown on the screen at the beginning of each map.  use_rankings must be
			set in order for this to function properly.  These high scores are displayed
			after the message of the day.
			Example: "set rankings_time 5"

safety_time		(default = 0.0)
			This is the number of seconds a client is invulnerable after they
			respawn.  They will be able to fire weapons during this period of time.
			Example: "set safety_time 2.0"

spam_warnings	(default 3)
			This defines how many times a server will muzzle a client for spamming before
			it kicks him off the server.  If this is set to 0, it won't kick him off the
			server.  See flood_waitdelay.
			Example: "set spam_warnings 3"

spectator_password (default undefined)
			***THIS IS AN ID STANDARD CVAR IN QUAKE 2 v3.20***
			If this is set, users must have a password in order to connect to the server.
			This is different from Quake 2 3.14!
			Example: "set spectator_password boprules"

start_health	(default 100)
			This is how much health a client gets when they respawn.
			Example: "set start_health 100"

start_armor		(default 0)
			This is how much yellow armor a client gets when they respawn.
			Example: "set start_armor 50"

start_bullets
start_cells
start_grenades
start_rockets
start_shells
start_slugs		(default 0)
			This is how much ammo a client gets when they respawn.
			Example: "set start_grenades 5"

start_weapon	(default 0)
			Defines which weapon the client starts out with.
			Valid range is 1-10.  If a 0 is used, the blaster
			is the selected weapon.
			Example: "set start_weapon 9"

start_blaster
start_shotgun
start_sshotgun
start_machinegun
start_chaingun
start_grenadelauncher
start_rocketlauncher
start_hyperblaster
start_railgun
start_bfg		(default 0, except for blaster which is 1)
			0 = Client does not respawn with this weapon in his inventory
			1 = Client does respawn with this weapon in his inventory
			start_weapon must be set to use any of these options.
			Example: "set start_railgun 1"

stdlogfile      (default 0)
                Set this to 1 if you want to record Standard Logs, which
                can be parsed with GibStats, FragLog, and other cool
                programs out there =).  (also see stdlogname)
                Example: "set stdlogfile 1"

stdlogname      (default undefined)
                Set this to make a unique filename for your log file.
                Example: "set stdlogname bop.log"

use_hook	    (default 0)
		    0 = No grappling hook
		    1 = Users can bind a key to +HOOK for a laser-styled grappling hook.
		    Example: "set use_hook 1"

use_mapqueue    (default 0)
                0 = No map queue will be used.
                1 = A map queue will be used for regular map rotation.
                You have to also use the "mapqueue" cvar (see below).
                Example: "set use_mapqueue 1"

use_mapvote     (default 0)
                0 = No map voting file will be used
                1 = A map voting file will be used.  When voted map is
                completed, the game will revert back to the regular map
                rotation UNLESS the voted map is already in the regular
                map rotation.  You MUST use a map queue to use this option.
                You also have to set the "mapvote_list" cvar (see below).
                Example: "set use_mapvote 1"

use_rankings	(default 0)
			0 = High scores will not be kept
			1 = The top 15 best performances for each level will be recorded and displayed
			at the beginning of every map.  You must create a directory called "scores"
			inside your game directory! (example: mkdir c:\quake2\bop\scores)  The data
			files are kept inside this directory.  Performance is calculated based on
			frags per hour multiplied by efficiency.  Thus, it does not matter if the map
			is ended with a fraglimit or a timelimit.  This feature is very cool =).
			(See also rankings_time)
			Example: "set use_rankings 1"

use_startchasecam	(default 0)
			0 = Clients will not start out in chasecam mode
			1 = Clients will automatically chasecam the frag leader
			upon entering a map.  They must be in observer mode
			for this to function.
			Example: "set use_startchasecam 1"

use_startobserver	(default 0)
			0 = Clients will not start out in observer mode
			1 = Clients will start out all maps in observer mode
			and can join the game by firing.
			Example: "set use_startobserver 1"

use_stats		(default 0)
			0 = Clients will get no stats after the level is over
			1 = After the level is completed, a list of the frag leader, the FPH
			leader, and the efficiency leader will be displayed.  Also, the top
			3 best performances will be displayed if use_rankings is enabled.
			Very cool! =)
			Example: "set use_stats 1"

use_zbotkick    (default 0)
                0 = Ignore zBot's
                1 = Kick zBot's off server
                Example: "set use_zbotkick 1"

which_scoreboard	(default 1)
			0 = Clients start off with the normal id scoreboard
			1 = Clients start off with the enhanced BoP scoreboard
			Example: "set which_scoreboard 0"