************************************ Credits ****************************************
The original Expert game coders -- for releasing the original 3.2 expert source
Id software -- obvious reasons(REGISTERED TRADEMARK COMPANY PEOPLE WHO GET TO KEEP ALL THIS FREE-BS-D)

Incinerator -- THIS DOCUMENTATION
	       wrote in damagedrop mode and several fixes.. 
	       maploop fix..general merge
	       merged Incinerator 3.3.2 code and spider 3.2.7 to make expert 4.0 and up
	       ALTERNATE BFG RECODE
               READDED CTFMENU
	       INTEGRATED WARP FUNCTIONALITY
	       MINOR BUG FIXES.
	       WIN32/LINUX UPDATES

Spider -- started the expert 3.2.7 and below modifications
	  TIMELIMIT CONSOLE OPTIONS
	  GAMESPY INTEGRATION
	  SERVER LOCKDOWN FEATURES
	  ALTERNATE WEAPONS GRENADES AND GRENADE LAUNCHER, ALL WEAPFLAGS SETUP
	  supplied a working copy of all his source for the 4.0.2 releases

Mazrim[bbq]-- general coding fixes --- pak file checking ... 
	      Helped with alot of patches/fixes to old code -- 
	      Linux support..

New Chase Cam
	  By: skreamz Email: skreamz@yahoo.co.uk
          Installed by Incin
	
Inspirations...
	  Q2 Expert community -- the players.. thanks
	  MY FAVORITE Q2 SAYING "YOU HAVE BEEN INCINERATED!!!" 
	  IF I SAID IT TO YA IT MEANS I MUSTA FRAGGED YA BUT GOOD...LOL
**************************************************************************************

Requirements for installing Expert CTF

	-Quake2 already installed
	-already installed the ctf 1.50 release
	-optionally already installed a previous version of expert

******************************* Install notes ****************************************
       **** BEFORE INSTALLING THIS BACKUP YOUR EXISTING CONFIGURATIONS *******
**************************************************************************************
 I would suggest backing up your existing configuration folders..ie ctf/ctf,
 ctf/dm, all your cfg files in ctf folder, and batch files.. the easiest way
 is to copy the whole ctf folder to another backup folder like quake2/ctfbak
**************************************************************************************

win32 users
Follow the install utility.. 
after the installer is done you will need to modify the ".bat" files
you will need to modify the ".cfg" files located in the installed directory.
If you installed it in Drive:\Quake2\ctf, most of the config files for each server type are there.


Linux users
******** Note ----- before installing back up your current gamei386.s0

Just rename it to gamei386so.32 so you know what it was...


Clean install
--------------
Follow the "expert.txt" instructions included in the 
quake2\ctf\docs folder



Unzip the files with winzip to the drive using folder names to unzip to
example : unzip to c:\ .. make sure use folder names is checked off

Modify the .bat, AND .cfg files to your liking 
at the least the bat files need an ip change

--------win32 users-----------
AFTER YOUR DONE MODIFYING THE .BAT FILES , MOVE THEM TO DRIVE:\QUAKE2\
--------linux users-----------
AFTER YOUR DONE MODIFYING THE .sh FILES , MOVE THEM TO /QUAKE2/

Modify the .cfg files to your liking or pull the lines out you need and add 
them to your cfg file. This file should stay in ctf path.

******************************* Files included ***************************************
q2ctf.bat --- typical win32 commandline 
------------------------------------------------------------------------
cd ..
start quake2.exe +set game ctf +set dedicated 1 +set public 1 +set ip "127.0.0.1" +set port 27910 +exec exctf.cfg
-------------------------------------------------------------------

Linux commandline -- 
./quake2 +set game ctf +set ip "127.0.0.1" +set port "27910" +set dedicated 1 
+set public 1 +exec exctf.cfg

exctf.cfg
Sample Configuration file to run the server with new features..


gamei386.so
Linux expert ctf version 4.0.4 ...

***************************************************************************************
OutDated -- this has been changed to return the flag now.
For further documentation goto expertctf.net for rtf notes

damagedropdoc.htm --- describes the new ctf mode of play in detail with client/server 
commands and settings.. If you use this you should probably add something to your 
motd(Message of the day) to tell the users to bind the *dropflag* command.
This file is typically located in the quake2/ctf/ctf path. It may be different per
server. 
For more question about this I am at icq 40084883... or wmcincin@expertctf.net

                                   Additions made
******************************* Damagedrop CTF server *********************************
Read the enclosed html... q2\ctf\docs\Damagedropdocs.htm
***************************************************************************************

************************************ Additional cvars/flags ***************************
server side setting 

set weapflags "0"

Values available are 1+32+64+1024 = 1120 to enable all 3(set weapflags 1120)
  0  - disables alternate weapons flags
   1 - Alternate Blaster firing, damage, and speeds - fires 3 shots of 2 at reduced damage 
  32 - Alternate grenades -adjusts the damage radius and damage of a grenade
  64 - alternate grenade launcher - adjust the bounce, damage, and damage radius
1024 - alternate bfg10k -- this replaces hyperblaster if weapflags includes 1024

alternate bfg cvars
bfgspeed --- the speed of the projectile shot from the bfg
bfgdmgradius -- the radius damage value 
bfgdamage -- damage done to a player
maxcells -- client bfg maxcells for the bfg
cellregen -- regeneration rate for the cells to recharge

players should bind a key to bfg10k

************************** NEW Features for Letality Server *********************
New server command line added:
set lethmode 0=off, 1=on

This changes characteristics of the games Rail Gun to a single shot with increased
damage, uses the old screw style rail shot.
UNFORTUNATELY FOR THIS PEOPLE WILL HAFTA TURN cl_particles on to see there shots

This also makes the hooks damage value = 0 for lethality servers.

NOTE: To turn off falling damage in your startup config change dmflags 
- set dmflags "348"

********************** mischta team audio integration ***************************
mishteamaudio 0 or 1 -- this loads sv props for mischta on the server
			use at your own risk. 0 disables, 1 enabled, default is off

******************************* CTFMENU ****************************************
client side command:

ctfmenu
bind <key> ctfmenu

it's a menu for switching teams , spectating, viewing scores, 
expert credits.. etc.

*************************** Warp Function **************************************

server setting
set electpercentage ## --this is set in the exctf.cfg file if commented out map voting is disabled
set votetime ## - default ## is 60

client command to use this
this command starts a vote for a map to be played...
warp mapname where mapname is a map in the server's ctfcycle.cfg or a sv prop property of the server
example : warp q2ctf2
mapname needs to be the filename ie q2ctf2

FOR A CLIENT TO RESPOND TO THE WARP THEY MUST PULL DOWN THE CONSOLE AND TYPE

YES 
NO
this really should work also with 
say "yes" 
say "no"

**************************** Strafe Jump Limiting *******************************
sjtoggle 0,1,or 2
maxsjspeed ### where ### is a positive or negative number
used in conjunction with maxsjspeed variable 

sjtoggle 0 -- disables limiting and allows strafe jumping at crazy speeds
sjtoggle 1 -- limits client movement to the speed of the grapple +/- maxsjspeed value 
sjtoggle 2 -- makes a player jump higher the faster they go 

these below aliases included in the config files for easy access to recommended settings
 -- call these by ---------rcon sj0 OR rcon sj1 OR rcon sj2

 -- enables free strafe jumping, no limiting speeds
alias sj0 "sjtoggle 0;maxsjspeed 0" 

 -- this allows strafe jump but limited to grapples pull speed of (420 - 10 = 390)
alias sj1 "sjtoggle 1;maxsjspeed -10"

 -- this one forces a player to jump higher the faster they go -- bit buggy
 -- good numbers are from 370 to 400 - i wouldn't set it much higher..
alias sj2 "sjtoggle 2;maxsjspeed 380"

                                      Changes made
**************************  Sv prop -- map loop fix ***********************************
Modified the ExitLevel feature..
(This is the function called to change levels at the end of the game)

Currently this supports maps in pak files and maps in baseq2/maps folder and gamedir/maps.(expert,ctf)

This Adds crash protection for map loop not being run or properly or maploop is missing 
completely. This basically will load the same map if the sv prop values for the maploop 
are missing instead of using the maps internal next map property value.. 
In an expert server this typically isnt used anyway..The original intent of the next 
map property in a map was for the original quake2 Mission paks.
(At least I would assume that). So, with that in mind the network play seems to benefit
from this in the respect that if an sv prop is spelled wrong or the the server won't crash
due to a map not in the server map loop, or a missing server loop.
***************************************************************************************

*************** Added a new "sv loadmap" or "sv gamemap" command **********************
***************************************************************************************
****** This only supports maps that are in pak files and, files in baseq2/maps
******* as well as "experts path"/maps
**************************************************************************************
Usage on server console              --- sv loadmap mapname
				     --- sv gamemap mapname
Usage for rcon                       --- rcon password sv loadmap mapname

example ....                         --- rcon password sv loadmap q2ctf1
        - (the above will load q2ctf1 if its not in a pak file currently)

example of a bad map request         --- rcon sv loadmap q2cfgghjkgh 
	- the server will respond map not found

what this command does is checks to see if the map exists first before trying to open 
or change to a new map..so if a remote console user types in the wrong map name the 
server will not change to the map or crash because of a bad mapname.. It has been 
thoroughly tested on win32 systems and now finally on linux. 

**********************************    pullspeed  **************************************
This allows the grapple/hook pulling speed to be adjustable... i have tested this to 
as high as 20000 and as low as -20000 .. it works either way..
I dont recommend going past 700 or so for internet.. this may affect gameplay in the respect 
to the servers player prediction movement code.
If the number is a negative number it will push you away from the hook..
USAGE ---
server console --- pullspeed number ----- example... pullspeed 420
rcon usage     --- rcon pullspeed number
This is a server only option can be positive or negative values -- default is 420
***************************************************************************************

********************************  Rapidfire fix *************************************** 
fixed spectator firing bug -- it is now a only useable when not in expert play mode
THIS IS CONSIDERED A CHEAT
ie.  DM

************************************* Filterban ***************************************
filterban - server side banning of clients
	due to some wierd bug that cropped up, I added a disable feature for 
	filterbanning I haven't resolved the bug yet so i recommend using q2admin or 
        bwadmin banning utilities instead. this command uses ip addresses  
	
0 allows players not in the filterban list to connect 
1 allows only players in the filterban list to connect only
2 disables 

********************************** server sv commands *********************************
sv listsvcmds -- lists all the sv commands in expert

****************************** Ratbot and IBO Bot Detection ***************************
sv ratcheck
	check the server for the usage of a bot
	DONT OVER ABUSE THIS OR PEOPLE WILL GET BOOTED FOR NO REASON
	IT IS MEANT TO DOUBLE CHECK

sv ibocheck
	IBO detection works in conjunction with q2admin . q2admin will kick a player 
	that uses a speed hack. If a player is using the bot. 
	It will be painfully obvious that they are using it when this command is run
	without q2admin support.


***************************************************************************************
                                 AUTORESTART FEATURE 
***************************************************************************************
This is used in conjunction with several things.
2 new cvars made for the server

autorestart 0 or 1 		//default is 0
restartcfg "filename.cfg"  	//default is exctf.cfg

This tries  to restart a server where for some reason the server crashes.

It basically checks these 2 values listed above and reloads the server using the default
cfg script that initially loaded the server..

It is configurable in the the exp*.cfg files and is also in the ctfcycle.cfg files..
Autorestart 0 or 1 is set in the ctfcycle.cfg to resolve a problem with using the 
map command.

autorestart and restartcfg variables should both be present in the initial script cfg 
file that starts the server..if they are not it will simply never autorestart on 
server failures.

Heres an example.
you start the server using a batch file on a win32 machine.
the batch file does "+exec exctf.cfg" as its initial cfg file to run the server
inside the exctf.cfg it sets all the basic startup variables for the game server
in this file it should contain

autorestart 0 
restartcfg "exctf.cfg"  	//default is exctf.cfg

Note that the restartcfg pair has the cfg files filename..This tells the server 
when it shuts down to restart using that file as its restart settings information.

also when the first person connects to the server the ctfcycle.cfg file will load
Inside that file is the map properties for the maploop of the server and this variable
autorestart 1 

this enables the autorestart after the server has actually taken players. 
To disable restarts open the ctfcycle.cfg and change autorestart 1 to 
autorestart 0..
DO NOT DO IT IN THE EXCTF.CFG FILE.. IT SHOULD ALWAYS STAY 0 IN THAT FILE..
AN ALTERNATIVE TO TURNING IT OFF IS USING autorestart 0 at the console or 
using "rcon pass autorestart 0" then do what you need to do.


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

I have included some new server aliases that will allow the server to be shutdown if that
is what you want to do..

The servers initial cfg file listed in your batch files to start the server is included 
in the cfg file that starts the server. 

For example, if the server runs exctf.bat and it calls exctf.cfg the 
restartcfg "exctf.cfg" should be set in it.. more documentation is 
included in the cfg files on this.. 

if you clear this value the server will just shutdown
I recommend against this..  

the autorestart 0 is set in the exctf.cfg on purpose. Leave this as is. 
Instead, change autorestart in ctf/ctfcycle.cfg to 0 to disable the 
autorestart features on server shutdown or do it on console typing autorestart 0.
I recommend server ops type the command "alias" at the console to see the new 
alias commands added to the server..
---------------------------------------------------------------------------
Basically they are as follows, and are already included in the startup files
----------------------------------------------------------------------------
//this will shutdown the server without restarting it
alias shutdown "autorestart 0;killserver"

//this will kill the server and quit q2
alias shutdownq2 "autorestart 0;killserver;quit"

alias killserver "shutdown"
//----------------------------------------------


MAP CYCLE CFG cvar
---------------------------------------------------------------------------------------
The purpose for this cvar is to use a one time map cycle setup. Expert would typically 
load the cycle sv prop variables every time a new map was loaded, I found this wasn't
necessary. 
---------------------------------------------------------------------------------------
usage - mapcyclecfg "ctfcycle.cfg" or mapcyclecfg "" 

otherwise, setting an exec ctfcycle.cfg in another config file may be necessary





Known Issues
---------------------------------------------------------------------------------------
There is a bug in either q2 or q2admin, or this dll that will cause the server to 
crash if you use "rcon killserver"

The alias workaround for it is use rcon shutdown which uses the alias described above, and 
bypasses q2admins killserver before the dll can send the rcon user info from the server
killserver works properly from the server console.
---------------------------------------------------------------------------------------

RESOURCES
----------------------------------------------------------------------------
DRIVE:\\QUAKE2\CTF\DOCS ---ON YOUR COMPUTER IF YOU INSTALLED THE SERVER PACKAGE
HTTP://WWW.expertctf.net
HTTP://WWW.PLANETQUAKE.COM/EXPERT