======================================================
ENEMY TERRITORY: QUAKE WARS(TM) COMPETITION MOD README
======================================================

THIS IS AN UNSUPPORTED RELEASE. USE AT YOUR OWN RISK.

-------------------------
I. OVERVIEW
-------------------------

The Enemy Territory: QUAKE Wars Competition Mod allows tournament organizers to easily implement and enforce specific rule-sets and enhances other competition related features of the game, such as ETQW:TV. It does this by providing additional Cvars and commands to both the players and server admins.

-------------------------
II. INSTALLATION
-------------------------

For OS specific installation instructions, please read the following appropriate section. Once the competition folder is in place, you can run the mod by loading up the game normally and selecting 'Competition' from the Mods menu.


1. Windows XP/Vista
====================

Extract the zip file and place the competition folder in your Enemy Territory - QUAKE Wars folder, which by default is located here:

	C:\Program Files\id Software\Enemy Territory - QUAKE Wars\

With Windows Vista may need administrator access to be able to install the competition folder in the Program Files. If you don't have admin access you can install the Competition Mod in your User directory instead. Simply copy the competition folder here:

	C:\Users\<USERNAME>\Documents\id Software\Enemy Territory - QUAKE Wars\


2. Mac OS
==========

Simply drag the extracted competition folder into your Enemy Territory - QUAKE Wars folder


3. Linux
=========

Extract the zip file and place the competition directory in your Enemy Territory - QUAKE Wars folder, which by default is located here:

	/usr/local/games/etqw/

If you don't have permissions to write here (usually requires root) then you can install the mod in your home directory by placing the competition directory in:

	~/.etqw/


-------------------------
III. KNOWN ISSUES
-------------------------

- None

-------------------------
IV. INSTRUCTIONs
(taken from http://wiki.splashdamage.com/index.php/Enemy_Territory:_QUAKE_Wars_Competition_Mod_Guide)
-------------------------

    * 1  Server Rules
    * 2  Weapon and Upgrade Unlocks
    * 3  Class, Weapon and Deployable Limits
          o 3.1 Class Limits
          o 3.2 Weapon Limits
          o 3.3 Engineer/Constructor Turrets
          o 3.4 Field Ops/Oppressor Artillery
          o 3.5 Covert Ops/Infiltrator Radar
          o 3.6 Mines
          o 3.7 Example Server Config
    * 4  Pausing and Time Outs
    * 5  Spectating and 'Spec Labels'
          o 5.1 Spectate Position
          o 5.2 Other spectate commands
          o 5.3 Example spectator config
          o 5.4 Spec Labels
    * 6  Vampire/Violator Team Charge Bar
    * 7  Signed Configs
    * 8  Alternate Vehicle Spawns
    * 9  MCP and Third Eye Camera Radar
    * 10 Leaning
    * 11 Useable Vehicle Limits
    * 12 General Changes
          o 12.1 Force Limbo Spectate
          o 12.2 setSpawnPoint Commands
          o 12.3 Auto Demo Recording and Screenshots
          o 12.4 Separate Vehicle Sensitivity Settings
          o 12.5 Look at Killer/Medic




1. Server Rules
================

To run Competition Mod rules on a server you'll need to set si_rules to sdGameRulesCompetition


2. Weapon and Upgrade Unlocks
==============================

Some weapons and proficiency upgrades can be unlocked for all players from the match start in Competition Mod, despite proficiency being turned off. Setting the following Cvars to 1 will unlock these weapons and upgrades.

g_unlockGrenadeLauncher  unlocks the Grenade/Plasma Launcher for the Engineer/Constructor
g_unlockScopedRifle  unlocks the Scoped Assault Rifle/Accurised Lacerator for the Field Ops/Oppressor
g_unlockExtraClip  unlocks extra ammo for all player classes
g_unlockFasterSprint  unlocks faster movement speed for all player classes
g_unlockWeaponSpread  unlocks reduced weapon spread for all weapons



3. Class, Weapon and Deployable Limits
=======================================

Competition Mod also allows admins to set restrictions on the number of classes and deployables available to a team, as well as limiting some weapon types. The value placed against any of the following Cvars is the maximum number of that game element allowed. A value of -1 means there is no limit.


3.1 Class Limits
-----------------

g_maxSoldiers  sets the number of GDF Soldiers allowed
g_maxMedics  sets the number of GDF Medics allowed
g_maxEngineers  sets the number of GDF Engineers allowed
g_maxFieldOps  sets the number of GDF Field Ops allowed
g_maxCovertOps  sets the number of GDF Covert Ops allowed
g_maxAggressors  sets the number of Strogg Aggressors allowed
g_maxTechnicians  sets the number of Strogg Technicians allowed
g_maxConstructors  sets the number of Strogg Constructors allowed
g_maxOppressors  sets the number of Strogg Oppressors allowed
g_maxInfiltrators  sets the number of Strogg Infiltrators allowed


3.2 Weapon Limits
------------------

g_maxGPMGs  sets the number of GPMGs/Hyperblasters allowed per team
g_maxRocketLaunchers  sets the number of Rocket Launchers/Obliterators allowed per team
g_maxSniperRifles  sets the number of Sniper Rifle/Railguns allowed per team
g_maxHeavyWeapons  limits the total number of GPMGs/Hyperblasters and Rocket Launchers/Obliterators allowed per team
g_maxGrenadeLaunchers  sets the number of Grenade/Plasma Launchers allowed per team


3.3 Engineer/Constructor Turrets
---------------------------------

g_maxAITs  sets the number of Artillery Interceptor Turrets allowed per team
g_maxAPTs  sets the number of Anti-Personnel Turrets allowed per team
g_maxAVTs  sets the number of Anti-vehicle Turrets allowed per team


3.4 Field Ops/Oppressor Artillery
----------------------------------

g_maxArtillery  sets the number of Artillery/Rail Howitzers allowed per team
g_maxHammers  sets the number of Hammers/Dark Matter Cannons allowed per team
g_maxRocketArtillery  sets the number of Rocket Artillery/Plasma Mortars allowed per team


3.5 Covert Ops/Infiltrator Radar
---------------------------------

g_maxRadars  sets the number of Radars/Psi-Radars allowed per team


3.6 Mines
----------

g_maxMines  sets the total number of mines a team is allowed to have deployed at any one time


3.7 Example Server Config
--------------------------

This is an example of a server config file limiting deployables, weapons, class, and mines:

// **************************************************************
// *******                                               ********
// *******  Example class, dep and weapon limits config  ********
// *******                                               ********
// **************************************************************


// Turret restrictions

set g_maxAITs 1			// Allows 1 Artillery Interceptor Turret per team
set g_maxAPTs 1			// Allows 1 Anti-Personnel Turret per team
set g_maxAVTs 1			// Allows 1 Anti-Vehicle Turret per team


// Artillery Restrictions

set g_maxArtillery 1		// Allows 1 Artillery or Rail Howitzer per team
set g_maxRocketArtillery 1	// Allows 1 Rocket Artillery or Plasma Mortar per team
set g_maxHammers 1		// Allows 1 Hammer or Dark Matter Cannon per team


// Weapon Restrictions

set g_maxRocketLaunchers 1	// Allows 1 Rocket Launcer or Obliterator per team
set g_maxGPMGs 2		// Allows 2 GPMGs or Hyperblasters per team
set g_maxGrenadeLaunchers -1  	// Allows unlimited Grenade Launchers per team if the Grenade Launcher is available
set g_maxHeavyWeapons -1	// Set no limit to Heavy Weapons
set g_maxSniperRifles 1		// Allows 1 Sniper Rifle or Rail Gun per team


// Mine Limit

set g_maxMines 8		// Allows each team to only have a maximum 8 mines deployed at one time


// Radar Limit

set g_maxRadars 1		// Allows each team to deploy only 1 Radar at a time


// Strogg Class Limits

set g_maxAggressors 2		// Limits Strogg to 2 Aggressors at any one time
set g_maxTechnicians 2		// Limits Strogg to 2 Technicians at any one time
set g_maxConstructors 3		// Limits Strogg to 3 Constructors at any one time
set g_maxOppressors 2		// Limits Strogg to 2 Oppressors at any one time
set g_maxInfiltrators 2		// Limits Strogg to 2 Infiltrators at any one time


// GDF Class Limits

set g_maxSoldiers 2		// Limits GDF to 2 Soldiers at any one time
set g_maxMedics 2 		// Limits GDF to 2 Medics at any one time
set g_maxEngineers 2		// Limits GDF to 2 Engineers at any one time
set g_maxFieldOps 4		// Limits GDF to 4 Field Ops at any one time
set g_maxCovertOps 1		// Limits GDF to 1 Covert Op at any one time


4. Pausing and Time Outs
=========================

Further support has been added for pausing matches as well as a new Team Timeout feature. Any player on either team can call a time out at any time during a game (if allowed on the server), this will pause the game for a set amount of time before counting the game back in and restarting it. Related Cvars and Commands are listed below.

admin pause  Command to pause a game indefinitely
admin unpause  Command to un-pause a game
g_unpauseTimer  Sets the duration, in seconds, of the match restart countdown that plays after a pause or time out has ended
g_maxTeamTimeouts  Determines how many timeouts a team can use per match, value of -1 turns timeouts off
g_teamTimeoutLength  Sets the duration, in minutes, a timeout will last
callTimeout  Command used to start a timeout, any player is able to call a time out



5. Spectating and 'Spec Labels'
================================

With Competition Mod spectators are now able to view players in free fly mode with much greater control and feedback. Support is added for pre-set cameras, binding hot keys for viewing specific clients and for clicking on individual players to jump into their first person perspective. In addition labels can now be added to players when spectating, allowing much easier identification of individuals. These spec labels are customized via client side Cvars.

5.1 Spectate Position
----------------------

This command allows the user to jump to a specific point on the map, looking in a pre-set direction, essentially jumping to user defined camera. The command is set in the following format:

Spectate Position <x> <y> <z> <yaw> <pitch> <roll>

Here X, Y and Z are the coordinates at which the camera will be placed, Yaw, Pitch and Roll set the direction in which it will be looking. The easiest way to obtain these values is to start ETQW, launch Play Computer, fly to the position at which you'd like the camera to be placed and then use the command 'getviewpos'. This will capture the coordinates for your current point of view to the clipboard and you can use these for your camera. You will need net_allowcheats to be set to 1 to be able to use the getviewpos command.

Obviously this is not very easy to do on the fly so it is best to make a series of binds for each map and then store them in a config file. An example of a bind for a ready made camera for the map Valley is:

bind k "spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00"


5.2 Other spectate commands
----------------------------

Spectate Client - Jumps to spectating a specific player based on the client number or the player name entered e.g. "Specate Client 1" or "Spectate Client Tapir" for a player called Tapir
Spectate next  Jumps to the next player
Spectate prev  Jumps to the previous player
Spectate objective  Jumps to a player currently attempting to complete the objective or jumps to view a planted HE/Plasma charge (only works on Primary Objectives)

Pressing the use key (_activate) whilst a player is under the spectators crosshair will now jump to that players point of view, allowing for more fluid transitions between first person and free fly mode


5.3 Example spectator config
-----------------------------

This is an example of a client config file set up to jump to specific clients, map locations, and objectives.

// **********************************
// *******                   ********
// *******  Specator Config  ********
// *******                   ********
// **********************************

// Number keys are bound to specific clients based on client number (ignores clients that are also spectating)

bind  1		"spectate client 1"					
bind  2		"spectate client 2"
bind  3		"spectate client 3"
bind  4		"spectate client 4"
bind  5		"spectate client 5"
bind  6		"spectate client 6"		
bind  7		"spectate client 7"	
bind  8		"spectate client 8"
bind  9		"spectate client 9"
bind  0		"spectate client 10"
bind  -		"spectate client 11"
bind  =		"spectate client 12"


// Keys bound to specific clients based on the player's name

bind  q		"spectate client AO"					
bind  w		"spectate client 'Bongo Boy'"
bind  e		"spectate client ducks"
bind  r		"spectate client Digibob"
bind  t		"spectate client RR2DO2"
bind  y		"spectate client Wils"		
bind  u		"spectate client MoP"	
bind  i		"spectate client Anti"
bind  o		"spectate client Smooth"
bind  p		"spectate client Jose"
bind  [		"spectate client Huntle"
bind  ]		"spectate client JFK"


// Keys bound to toggle through clients

bind rightarrow	"spectate next"
bind leftarrow	"spectate prev"


// Pre-set cameras for Valley

bind kp_end		"spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00"		// Views obj. 1
bind kp_downarrow	"spectate position 3862.32 1435.13 1879.86 131.09 -353.98 0.00"		// Views Tunnel Spawn
bind kp_pgdn	"spectate position 1085.68 8092.22 1955.78 274.70 -337.35 0.00"		// Views obj. 2
bind kp_leftarrow	"spectate position -6847.38 -4325.94 2230.2 244.78 -340.67 0.00"		// Views obj. 3
bind kp_5		"spectate position -5549.77 -9793.78 1934.23 174.49 -330.27 0.00"		// Views obj. 4


// Jumps to spectating any player currently achieving the objective

bind a 		"spectate objective"


5.4 Spec Labels
----------------

Spec Labels are fully customizable name tags that hover next to players in-world when spectating them to aid a viewers understanding of who they are watching. They are also used to display the amount of time remaining on a planted HE/Plasma charge. The labels are controlled client side and are usable with ETQW:TV. The following Cvars are used for editing spec labels:

g_showPlayerNames  cvar used to toggle player spec labels on/off
g_showChargeTimers  cvar used to toggle in-world HE/Plasma charge timers on/off
g_specLabelAlpha  adjusts the alpha of the text on the spec label
g_specLabelBackground  cvar used to toggle the label background on/off
g_specLabelBackgroundColor  adjusts the background color of the label, format "<R> <G> <B> <Alpha>"
g_specLabelDropShadow  adds or removes drop shadow on the label text
g_specLabelMaxDistance  adjusts the distance at which spec labels become visible
g_specLabelPosition  adjusts where a label appears in relation to a player (0 = above, 1 = center, 2 = below)
g_specLabelSize  adjusts the size of the label
g_specLabelShowAll - cvar used to show labels even for players that are hidden (eg behind a wall)
g_specLabelTeamColors - enables the names to be coloured based on the team
g_specLabelGDFColor  adjusts the text color on GDF labels, format "<R> <G> <B> <Alpha>"
g_specLabelStroggColor  adjusts the text color on Strogg labels, format "<R> <G> <B> <Alpha>"
g_showFreeFlyText  cvar used to add/remove the 'free fly mode' text that appears in the center of the screen


6. Vampire/Violator Team Charge Bar
====================================

Competition Mod makes it possible to have a shared charge bar on the Vampire/Violator for each team. When turned on this can be used to prevent teams from 'spamming' fire support at the same time or in quick succession.

g_teamAirstrikeCost - This cvar sets the percentage of the team's charge bar a single air strike will use, set to 100 a single Vampire strike would use the whole charge bar and it would have to fully re-fill before another Vampire could be used. Set to 50 a single Vampire being thrown would cause the charge bar to re-fill from half way, halving the time before another strike could be made. If the cvar is set to -1 then no shared team charge bar is set.
g_teamAirstrikeRechargeTime  Sets the time in seconds it takes for the whole charge bar to re-fill


7. Signed Configs
==================


Support is also available for checking configs between the client and the server, this allows players to ensure that the config that is being run on the server is the correct one. For example if the server is supposed to be running OfficialComp.cfg for a tournament players would be able to download it to their own machine and then check it against the server's version, comparing checksums to see if they are the same. The following commands are used to compare configs, in each case the name of the config to check is entered after the command.

getConfigChecksum - generates a checksum for a config stored on the client and prints it to the player requesting it
getServerConfigChecksum - generates a checksum for a config stored on the server and prints it to the player requesting it
admin configChecksum - generates a checksum for a config stored on the server and prints it to all players on the server
compareConfigs - compares a config stored on the client with one on the server and tells the player if they match or not
admin compareConfigs - compares a config stored on the client with one on the server and tells all players on the server if they match or not


8. Alternate Vehicle Spawns
============================

Some maps now have an alternate set of vehicle spawn points available through Competition Mod. These can be turned on or off by setting the cvar g_useTournyVehicles to 1 or 0.

The affected maps are:

Area 22
Ark
Island
Quarry
Refinery
Sewer


9. MCP and Third Eye Camera Radar
=================================

As of the final release of Competition Mod it is now possible for server admins to disable the radar ability of the MCP and the Third Eye Camera. This can be done with the following cvars. 

g_enableMCPRadar  when set to 0 this cvar turns off the radar ability of the MCP
g_enableThirdEyeRadar  when set to 0 this cvat turns off the Third Eye Cameras radar


10. Leaning
===========

Another addition made with Competition Mod is the ability for server admins to disable player leaning completely. It is also possible to allow players to lean but disable their ability to fire whilst leaning. These options are all available via the follow cvar. 

g_allowLean  set to 0 this cvar disables the ability to lean, set to 1 it disables firing whilst leaning and when set to 2 leaning and firing are both enabled


11. Useable Vehicle Limits
==========================

With Competition Mod admins are now able to limit access to certain vehicles. All the vehicles normally available on a map are still present but the limits set by the admin mean that only a pre-defined number of a specific vehicle could be used at any one time, if the maximum number of that type of vehicle are in use then players would not be able to enter any more of them. 

To set up this feature the admin first needs to assign the vehicles he wants to limit to the appropriate group, this is done with commands like the following: 

g_vehicleClass_Anansi Flyer  this would put the Anansi into the group called Flyer
g_vehicleClass_Titan Heavy  this would put the Titan into the group called Heavy
g_vehicleClass_Trojan Tapir  this would put the Trojan into the group called Tapir


The name of the group is totally of the users choosing but its best to make it something appropriately descriptive. Once all the vehicles you wish to limit are added to groups you then need to set a limit on the number of vehicles available in that group, for the examples above this would be done with the following commands. 

g_maxActiveVehicles_Flyer 1  this would allow only one vehicle from the Flyer group at a time
g_maxActiveVehicles_Heavy 2  this would allow only two vehicles from the Heavy group at a time
g_maxActiveVehicles_Tapir 5  this would allow only five vehicles from the Tapir group at a time


If this value is set to 0 then no vehicles from that group would be allowed to be used. The g_maxActiveVehicles cvars are only generated after a group has been created (by adding a vehicle to it). As a result it is best to have all these commands in your server config rather than applying the limits on the fly via rcon. An example config that might be appropriate for competition is listed below. 

set g_vehicleClass_Anansi "Flyer"
set g_vehicleClass_Bumblebee "Flyer"
set g_vehicleClass_Tormentor "Flyer"

set g_vehicleClass_Desecrator "Heavy"
set g_vehicleClass_Cyclops "Heavy"
set g_vehicleClass_Titan "Heavy"

set g_vehicleClass_Hog "Medium"
set g_vehicleClass_Trojan "Medium"


set g_maxActiveVehicles_Flyer 0 
set g_maxActiveVehicles_Heavy 1 
set g_maxActiveVehicles_Medium 1 

A full list of the available g_vehicleClass cvars can be obtained by writing g_vehcileClass in the console and then pressing the tab key. 


12. General Changes
===================

12.1 Force Limbo Spectate
-------------------------

These cvars allow server admins to prevent 'gibbed' players from viewing the battlefield from their corpse.

g_forceLimboSpectate  when set to 1 this forces gibbed players to spectate team mates until they re-spawn, or if all team mates are dead forces them to the limbo menu
g_forceLimboSpectateMenuSticky  cvar sets if the limbo menu should automatically close if a player forced to the limbo menu re-spawns


12.2 setSpawnPoint Commands
---------------------------

Competition Mod provides a series of commands that allow players to select spawn points across the map without having to use the limbo menu. These commands can be bound to keys to allow very fast spawn point selection.

setSpawnPoint next  selects one spawn ahead of the player's current selection
setSpawnPoint prev  selects one spawn back from the player's current selection
setSpawnPoint default  selects the current front-line spawn point
setSpawnPoint base  sets the player's spawn point to the main base (Command Center/Domination Hub)


12.3 Auto Demo Recording and Screenshots
----------------------------------------

It is possible for players to auto record their own demo files and generate screenshots of the end game scoreboard using Competition Mod. These files can also be given a customized naming format.

g_autoRecordDemos  set to 1 this cvar starts demo recording automatically when the match is started g_autoScreenshot  set to 1 this cvar will automatically take a screenshot of the end game scoreboard

Auto recorded demos and auto screenshots can also have a user defined name format applied to them using the cvars g_autoDemoNameFormat and g_autoScreenshotNameFormat. These default to the following formats:

scoreboard_$year$$month$$day$_$hour$$min$$sec$_$map$_$rules$_$name$_build_$srcrev$_$mediarev$.tga

$year$$month$$day$_$hour$$min$$sec$_$map$_$rules$_$name$_build_$srcrev$_$mediarev$.ndm

These would result in the following file names respectively:

scoreboard_20080205_103901_maps_sewer_competition_first_Player_build_12095_33034.tga

20080205_103617_sewer_competition_first_Player_build_12095_33034.ndm


12.4 Separate Vehicle Sensitivity Settings
------------------------------------------

In Competition Mod it's possible to adjust mouse sensitivity for specific vehicles, allowing players to have high sensitivity in some vehicles with low sensitivity in others, all without effecting their sensitivity when playing as Infantry. The Cvars used to scale the sensitivity in the various vehicles are listed below. Each vehicle has two sensitivity cvars, one for vertical movement, one for horizontal. To adjust the general sensitivity then the value of both cvars should be the same.

m_bumblebeePitchScale  adjusts the vertical sensitivity in the Bumblebee
m_bumblebeeYawScale  adjusts the horizontal sensitivity in the Bumblebee
m_heavyVehiclePitchScale  adjusts the vertical sensitivity in the Titan, Cyclops and Desecrator
m_heavyVehicleYawScale  adjusts the horizontal sensitivity in the Titan, Cyclops and Desecrator
m_helicopterPitchScale  adjusts the vertical sensitivity in the Anansi and Tormentor
m_helicopterYawScale  adjusts the horizontal sensitivity in the Anansi and Tormentor
m_lightVehiclePitchScale  adjusts the vertical sensitivity in the Trojan, Armadillo, Hog and Husky
m_lightVehicleYawScale  adjusts the horizontal sensitivity in the Trojan, Armadillo, Hog and Husky
m_playerPitchScale  adjusts the vertical sensitivity as infantry and in the Icarus
m_playerYawScale  adjusts the horizontal sensitivity as infantry and in the Icarus

Players are also able to switch yaw and roll between the keyboard and the mouse if they choose to using the cvar ui_swapFlightYawAndRoll. Setting this to a value of 1 causes the mouse to become the control for yaw and the keys to become the control for roll.


12.5 Look at Killer/Medic
-------------------------

Normally a dead players point of view will snap to look towards their killer or a nearby medic, this feedback is to help the user understand who just killed them or if they should tap out or not. With Competition Mod the player is now able to turn off this functionality if they choose to.

g_lookAtKiller  set this to a value of 0 to turn off the camera tracking a killer
g_lookAtMedic  set this to a value of 0 to turn off the camera tracking nearby Medics/Technicians 