]> icculus.org git repositories - icculus/iodoom3.git/blob - neo/d3xp/gamesys/SysCvar.cpp
hello world
[icculus/iodoom3.git] / neo / d3xp / gamesys / SysCvar.cpp
1 /*
2 ===========================================================================
3
4 Doom 3 GPL Source Code
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company. 
6
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).  
8
9 Doom 3 Source Code is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 Doom 3 Source Code is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with Doom 3 Source Code.  If not, see <http://www.gnu.org/licenses/>.
21
22 In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code.  If not, please request a copy in writing from id Software at the address below.
23
24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
25
26 ===========================================================================
27 */
28
29 #include "../../idlib/precompiled.h"
30 #pragma hdrstop
31
32 #include "../Game_local.h"
33
34 #if defined( _DEBUG )
35         #define BUILD_DEBUG     "-debug"
36 #else
37         #define BUILD_DEBUG "-release"
38 #endif
39
40 /*
41
42 All game cvars should be defined here.
43
44 */
45
46 #ifdef CTF
47 const char *si_gameTypeArgs[]           = { "singleplayer", "deathmatch", "Tourney", "Team DM", "Last Man", "CTF", NULL };
48 #else
49 const char *si_gameTypeArgs[]           = { "singleplayer", "deathmatch", "Tourney", "Team DM", "Last Man", NULL };
50 #endif
51
52 const char *si_readyArgs[]                      = { "Not Ready", "Ready", NULL }; 
53 const char *si_spectateArgs[]           = { "Play", "Spectate", NULL };
54
55 #ifdef _D3XP
56 const char *ui_skinArgs[]                       = { "skins/characters/player/marine_mp", "skins/characters/player/marine_mp_red", "skins/characters/player/marine_mp_blue", "skins/characters/player/marine_mp_green", "skins/characters/player/marine_mp_yellow", "skins/characters/player/marine_mp_purple", "skins/characters/player/marine_mp_grey", "skins/characters/player/marine_mp_orange", NULL };
57 #else
58 const char *ui_skinArgs[]                       = { "skins/characters/player/marine_mp", "skins/characters/player/marine_mp_red", "skins/characters/player/marine_mp_blue", "skins/characters/player/marine_mp_green", "skins/characters/player/marine_mp_yellow", NULL };
59 #endif
60
61 const char *ui_teamArgs[]                       = { "Red", "Blue", NULL }; 
62
63 struct gameVersion_s {
64         gameVersion_s( void ) { sprintf( string, "%s.%d%s %s %s", ENGINE_VERSION, BUILD_NUMBER, BUILD_DEBUG, BUILD_STRING, __DATE__, __TIME__ ); }
65         char    string[256];
66 } gameVersion;
67
68 idCVar g_version(                                       "g_version",                            gameVersion.string,     CVAR_GAME | CVAR_ROM, "game version" );
69
70 // noset vars
71 idCVar gamename(                                        "gamename",                                     GAME_VERSION,   CVAR_GAME | CVAR_SERVERINFO | CVAR_ROM, "" );
72 idCVar gamedate(                                        "gamedate",                                     __DATE__,               CVAR_GAME | CVAR_ROM, "" );
73
74 // server info
75 idCVar si_name(                                         "si_name",                                      "DOOM Server",  CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE, "name of the server" );
76
77 #ifdef CTF
78 idCVar si_gameType(                                     "si_gameType",          si_gameTypeArgs[ 0 ],   CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE, "game type - singleplayer, deathmatch, Tourney, Team DM, Last Man or CTF", si_gameTypeArgs, idCmdSystem::ArgCompletion_String<si_gameTypeArgs> );
79 #else
80 idCVar si_gameType(                                     "si_gameType",          si_gameTypeArgs[ 0 ],   CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE, "game type - singleplayer, deathmatch, Tourney, Team DM or Last Man", si_gameTypeArgs, idCmdSystem::ArgCompletion_String<si_gameTypeArgs> );
81 #endif
82
83 idCVar si_map(                                          "si_map",                                       "game/mp/d3dm1",CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE, "map to be played next on server", idCmdSystem::ArgCompletion_MapName );
84 idCVar si_maxPlayers(                           "si_maxPlayers",                        "8",                    CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_INTEGER, "max number of players allowed on the server", 1, 8 );
85 idCVar si_fragLimit(                            "si_fragLimit",                         "10",                   CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_INTEGER, "frag limit", 1, MP_PLAYER_MAXFRAGS );
86 idCVar si_timeLimit(                            "si_timeLimit",                         "10",                   CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_INTEGER, "time limit in minutes", 0, 60 );
87 idCVar si_teamDamage(                           "si_teamDamage",                        "0",                    CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_BOOL, "enable team damage" );
88 idCVar si_warmup(                                       "si_warmup",                            "0",                    CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_BOOL, "do pre-game warmup" );
89 idCVar si_usePass(                                      "si_usePass",                           "0",                    CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_BOOL, "enable client password checking" );
90 idCVar si_pure(                                         "si_pure",                                      "1",                    CVAR_GAME | CVAR_SERVERINFO | CVAR_BOOL, "server is pure and does not allow modified data" );
91 idCVar si_spectators(                           "si_spectators",                        "1",                    CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_BOOL, "allow spectators or require all clients to play" );
92 idCVar si_serverURL(                            "si_serverURL",                         "",                             CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE, "where to reach the server admins and get information about the server" );
93
94 #ifdef CTF
95 //idCVar si_pointLimit(                         "si_pointlimit",                        "8",                    CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_INTEGER, "team points limit to win in CTF" );
96 idCVar si_flagDropTimeLimit(            "si_flagDropTimeLimit",         "30",                   CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_INTEGER, "seconds before a dropped CTF flag is returned" );
97 idCVar si_midnight(                 "si_midnight",              "0",            CVAR_GAME | CVAR_INTEGER | CVAR_SERVERINFO, "Start the game up in midnight CTF (completely dark)" );
98 #endif
99
100
101 // user info
102 idCVar ui_name(                                         "ui_name",                                      "Player",               CVAR_GAME | CVAR_USERINFO | CVAR_ARCHIVE, "player name" );
103 idCVar ui_skin(                                         "ui_skin",                              ui_skinArgs[ 0 ],       CVAR_GAME | CVAR_USERINFO | CVAR_ARCHIVE, "player skin", ui_skinArgs, idCmdSystem::ArgCompletion_String<ui_skinArgs> );
104 idCVar ui_team(                                         "ui_team",                              ui_teamArgs[ 0 ],       CVAR_GAME | CVAR_USERINFO | CVAR_ARCHIVE, "player team", ui_teamArgs, idCmdSystem::ArgCompletion_String<ui_teamArgs> ); 
105 idCVar ui_autoSwitch(                           "ui_autoSwitch",                        "1",                    CVAR_GAME | CVAR_USERINFO | CVAR_ARCHIVE | CVAR_BOOL, "auto switch weapon" );
106 idCVar ui_autoReload(                           "ui_autoReload",                        "1",                    CVAR_GAME | CVAR_USERINFO | CVAR_ARCHIVE | CVAR_BOOL, "auto reload weapon" );
107 idCVar ui_showGun(                                      "ui_showGun",                           "1",                    CVAR_GAME | CVAR_USERINFO | CVAR_ARCHIVE | CVAR_BOOL, "show gun" );
108 idCVar ui_ready(                                        "ui_ready",                             si_readyArgs[ 0 ],      CVAR_GAME | CVAR_USERINFO, "player is ready to start playing", idCmdSystem::ArgCompletion_String<si_readyArgs> );
109 idCVar ui_spectate(                                     "ui_spectate",          si_spectateArgs[ 0 ],   CVAR_GAME | CVAR_USERINFO, "play or spectate", idCmdSystem::ArgCompletion_String<si_spectateArgs> );
110 idCVar ui_chat(                                         "ui_chat",                                      "0",                    CVAR_GAME | CVAR_USERINFO | CVAR_BOOL | CVAR_ROM | CVAR_CHEAT, "player is chatting" );
111
112 // change anytime vars
113 idCVar developer(                                       "developer",                            "0",                    CVAR_GAME | CVAR_BOOL, "" );
114
115 idCVar r_aspectRatio(                           "r_aspectRatio",                        "0",                    CVAR_RENDERER | CVAR_INTEGER | CVAR_ARCHIVE, "aspect ratio of view:\n0 = 4:3\n1 = 16:9\n2 = 16:10", 0, 2 );
116
117 idCVar g_cinematic(                                     "g_cinematic",                          "1",                    CVAR_GAME | CVAR_BOOL, "skips updating entities that aren't marked 'cinematic' '1' during cinematics" );
118 idCVar g_cinematicMaxSkipTime(          "g_cinematicMaxSkipTime",       "600",                  CVAR_GAME | CVAR_FLOAT, "# of seconds to allow game to run when skipping cinematic.  prevents lock-up when cinematic doesn't end.", 0, 3600 );
119
120 idCVar g_muzzleFlash(                           "g_muzzleFlash",                        "1",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "show muzzle flashes" );
121 idCVar g_projectileLights(                      "g_projectileLights",           "1",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "show dynamic lights on projectiles" );
122 idCVar g_bloodEffects(                          "g_bloodEffects",                       "1",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "show blood splats, sprays and gibs" );
123 idCVar g_doubleVision(                          "g_doubleVision",                       "1",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "show double vision when taking damage" );
124 idCVar g_monsters(                                      "g_monsters",                           "1",                    CVAR_GAME | CVAR_BOOL, "" );
125 idCVar g_decals(                                        "g_decals",                                     "1",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "show decals such as bullet holes" );
126 idCVar g_knockback(                                     "g_knockback",                          "1000",                 CVAR_GAME | CVAR_INTEGER, "" );
127 idCVar g_skill(                                         "g_skill",                                      "1",                    CVAR_GAME | CVAR_INTEGER, "" );
128 idCVar g_nightmare(                                     "g_nightmare",                          "0",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "if nightmare mode is allowed" );
129 idCVar g_gravity(                                       "g_gravity",            DEFAULT_GRAVITY_STRING, CVAR_GAME | CVAR_FLOAT, "" );
130 idCVar g_skipFX(                                        "g_skipFX",                                     "0",                    CVAR_GAME | CVAR_BOOL, "" );
131 idCVar g_skipParticles(                         "g_skipParticles",                      "0",                    CVAR_GAME | CVAR_BOOL, "" );
132
133 idCVar g_disasm(                                        "g_disasm",                                     "0",                    CVAR_GAME | CVAR_BOOL, "disassemble script into base/script/disasm.txt on the local drive when script is compiled" );
134 idCVar g_debugBounds(                           "g_debugBounds",                        "0",                    CVAR_GAME | CVAR_BOOL, "checks for models with bounds > 2048" );
135 idCVar g_debugAnim(                                     "g_debugAnim",                          "-1",                   CVAR_GAME | CVAR_INTEGER, "displays information on which animations are playing on the specified entity number.  set to -1 to disable." );
136 idCVar g_debugMove(                                     "g_debugMove",                          "0",                    CVAR_GAME | CVAR_BOOL, "" );
137 idCVar g_debugDamage(                           "g_debugDamage",                        "0",                    CVAR_GAME | CVAR_BOOL, "" );
138 idCVar g_debugWeapon(                           "g_debugWeapon",                        "0",                    CVAR_GAME | CVAR_BOOL, "" );
139 idCVar g_debugScript(                           "g_debugScript",                        "0",                    CVAR_GAME | CVAR_BOOL, "" );
140 idCVar g_debugMover(                            "g_debugMover",                         "0",                    CVAR_GAME | CVAR_BOOL, "" );
141 idCVar g_debugTriggers(                         "g_debugTriggers",                      "0",                    CVAR_GAME | CVAR_BOOL, "" );
142 idCVar g_debugCinematic(                        "g_debugCinematic",                     "0",                    CVAR_GAME | CVAR_BOOL, "" );
143 idCVar g_stopTime(                                      "g_stopTime",                           "0",                    CVAR_GAME | CVAR_BOOL, "" );
144 idCVar g_damageScale(                           "g_damageScale",                        "1",                    CVAR_GAME | CVAR_FLOAT | CVAR_ARCHIVE, "scale final damage on player by this factor" );
145 idCVar g_armorProtection(                       "g_armorProtection",            "0.3",                  CVAR_GAME | CVAR_FLOAT | CVAR_ARCHIVE, "armor takes this percentage of damage" );
146 idCVar g_armorProtectionMP(                     "g_armorProtectionMP",          "0.6",                  CVAR_GAME | CVAR_FLOAT | CVAR_ARCHIVE, "armor takes this percentage of damage in mp" );
147 idCVar g_useDynamicProtection(          "g_useDynamicProtection",       "1",                    CVAR_GAME | CVAR_BOOL | CVAR_ARCHIVE, "scale damage and armor dynamically to keep the player alive more often" );
148 idCVar g_healthTakeTime(                        "g_healthTakeTime",                     "5",                    CVAR_GAME | CVAR_INTEGER | CVAR_ARCHIVE, "how often to take health in nightmare mode" );
149 idCVar g_healthTakeAmt(                         "g_healthTakeAmt",                      "5",                    CVAR_GAME | CVAR_INTEGER | CVAR_ARCHIVE, "how much health to take in nightmare mode" );
150 idCVar g_healthTakeLimit(                       "g_healthTakeLimit",            "25",                   CVAR_GAME | CVAR_INTEGER | CVAR_ARCHIVE, "how low can health get taken in nightmare mode" );
151
152
153
154 idCVar g_showPVS(                                       "g_showPVS",                            "0",                    CVAR_GAME | CVAR_INTEGER, "", 0, 2 );
155 idCVar g_showTargets(                           "g_showTargets",                        "0",                    CVAR_GAME | CVAR_BOOL, "draws entities and thier targets.  hidden entities are drawn grey." );
156 idCVar g_showTriggers(                          "g_showTriggers",                       "0",                    CVAR_GAME | CVAR_BOOL, "draws trigger entities (orange) and thier targets (green).  disabled triggers are drawn grey." );
157 idCVar g_showCollisionWorld(            "g_showCollisionWorld",         "0",                    CVAR_GAME | CVAR_BOOL, "" );
158 idCVar g_showCollisionModels(           "g_showCollisionModels",        "0",                    CVAR_GAME | CVAR_BOOL, "" );
159 idCVar g_showCollisionTraces(           "g_showCollisionTraces",        "0",                    CVAR_GAME | CVAR_BOOL, "" );
160 idCVar g_maxShowDistance(                       "g_maxShowDistance",            "128",                  CVAR_GAME | CVAR_FLOAT, "" );
161 idCVar g_showEntityInfo(                        "g_showEntityInfo",                     "0",                    CVAR_GAME | CVAR_BOOL, "" );
162 idCVar g_showviewpos(                           "g_showviewpos",                        "0",                    CVAR_GAME | CVAR_BOOL, "" );
163 idCVar g_showcamerainfo(                        "g_showcamerainfo",                     "0",                    CVAR_GAME | CVAR_ARCHIVE, "displays the current frame # for the camera when playing cinematics" );
164 idCVar g_showTestModelFrame(            "g_showTestModelFrame",         "0",                    CVAR_GAME | CVAR_BOOL, "displays the current animation and frame # for testmodels" );
165 idCVar g_showActiveEntities(            "g_showActiveEntities",         "0",                    CVAR_GAME | CVAR_BOOL, "draws boxes around thinking entities.  dormant entities (outside of pvs) are drawn yellow.  non-dormant are green." );
166 idCVar g_showEnemies(                           "g_showEnemies",                        "0",                    CVAR_GAME | CVAR_BOOL, "draws boxes around monsters that have targeted the the player" );
167
168 idCVar g_frametime(                                     "g_frametime",                          "0",                    CVAR_GAME | CVAR_BOOL, "displays timing information for each game frame" );
169 idCVar g_timeentities(                          "g_timeEntities",                       "0",                    CVAR_GAME | CVAR_FLOAT, "when non-zero, shows entities whose think functions exceeded the # of milliseconds specified" );
170
171 #ifdef _D3XP
172 idCVar g_testPistolFlashlight(          "g_testPistolFlashlight",       "1",                    CVAR_GAME | CVAR_BOOL, "Test out having a flashlight out with the pistol" );
173 idCVar g_debugShockwave(                        "g_debugShockwave",                     "0",                    CVAR_GAME | CVAR_BOOL, "Debug the shockwave" );
174
175 idCVar g_enableSlowmo(                          "g_enableSlowmo",                       "0",                    CVAR_GAME | CVAR_BOOL, "for testing purposes only" );
176 idCVar g_slowmoStepRate(                        "g_slowmoStepRate",                     "0.02",                 CVAR_GAME | CVAR_FLOAT, "" );
177
178 idCVar g_enablePortalSky(                       "g_enablePortalSky",            "1",                    CVAR_GAME | CVAR_BOOL, "enables the portal sky" );
179 idCVar g_testFullscreenFX(                      "g_testFullscreenFX",           "-1",                   CVAR_GAME | CVAR_INTEGER, "index will activate specific fx, -2 is for all on, -1 is off" );
180 idCVar g_testHelltimeFX(                        "g_testHelltimeFX",                     "-1",                   CVAR_GAME | CVAR_INTEGER, "set to 0, 1, 2 to test helltime, -1 is off" );
181 idCVar g_testMultiplayerFX(                     "g_testMultiplayerFX",          "-1",                   CVAR_GAME | CVAR_INTEGER, "set to 0, 1, 2 to test multiplayer, -1 is off" );
182 idCVar g_lowresFullscreenFX(            "g_lowresFullscreenFX",         "0",                    CVAR_GAME | CVAR_BOOL, "enable lores mode for fx" );
183
184 idCVar g_moveableDamageScale(           "g_moveableDamageScale",        "0.1",                  CVAR_GAME | CVAR_FLOAT, "scales damage wrt mass of object in multiplayer" );
185
186 idCVar g_testBloomSpeed(                        "g_testBloomSpeed",                     "1",                    CVAR_GAME | CVAR_FLOAT, "" );
187 idCVar g_testBloomIntensity(            "g_testBloomIntensity",         "-0.01",                CVAR_GAME | CVAR_FLOAT, "" );
188 idCVar g_testBloomNumPasses(            "g_testBloomNumPasses",         "30",                   CVAR_GAME | CVAR_INTEGER, "" );
189 #endif
190
191 idCVar ai_debugScript(                          "ai_debugScript",                       "-1",                   CVAR_GAME | CVAR_INTEGER, "displays script calls for the specified monster entity number" );
192 idCVar ai_debugMove(                            "ai_debugMove",                         "0",                    CVAR_GAME | CVAR_BOOL, "draws movement information for monsters" );
193 idCVar ai_debugTrajectory(                      "ai_debugTrajectory",           "0",                    CVAR_GAME | CVAR_BOOL, "draws trajectory tests for monsters" );
194 idCVar ai_testPredictPath(                      "ai_testPredictPath",           "0",                    CVAR_GAME | CVAR_BOOL, "" );
195 idCVar ai_showCombatNodes(                      "ai_showCombatNodes",           "0",                    CVAR_GAME | CVAR_BOOL, "draws attack cones for monsters" );
196 idCVar ai_showPaths(                            "ai_showPaths",                         "0",                    CVAR_GAME | CVAR_BOOL, "draws path_* entities" );
197 idCVar ai_showObstacleAvoidance(        "ai_showObstacleAvoidance",     "0",                    CVAR_GAME | CVAR_INTEGER, "draws obstacle avoidance information for monsters.  if 2, draws obstacles for player, as well", 0, 2, idCmdSystem::ArgCompletion_Integer<0,2> );
198 idCVar ai_blockedFailSafe(                      "ai_blockedFailSafe",           "1",                    CVAR_GAME | CVAR_BOOL, "enable blocked fail safe handling" );
199
200 #ifdef _D3XP
201 idCVar ai_showHealth(                           "ai_showHealth",                        "0",                    CVAR_GAME | CVAR_BOOL, "Draws the AI's health above its head" );
202 #endif
203
204 idCVar g_dvTime(                                        "g_dvTime",                                     "1",                    CVAR_GAME | CVAR_FLOAT, "" );
205 idCVar g_dvAmplitude(                           "g_dvAmplitude",                        "0.001",                CVAR_GAME | CVAR_FLOAT, "" );
206 idCVar g_dvFrequency(                           "g_dvFrequency",                        "0.5",                  CVAR_GAME | CVAR_FLOAT, "" );
207
208 idCVar g_kickTime(                                      "g_kickTime",                           "1",                    CVAR_GAME | CVAR_FLOAT, "" );
209 idCVar g_kickAmplitude(                         "g_kickAmplitude",                      "0.0001",               CVAR_GAME | CVAR_FLOAT, "" );
210 idCVar g_blobTime(                                      "g_blobTime",                           "1",                    CVAR_GAME | CVAR_FLOAT, "" );
211 idCVar g_blobSize(                                      "g_blobSize",                           "1",                    CVAR_GAME | CVAR_FLOAT, "" );
212
213 idCVar g_testHealthVision(                      "g_testHealthVision",           "0",                    CVAR_GAME | CVAR_FLOAT, "" );
214 idCVar g_editEntityMode(                        "g_editEntityMode",                     "0",                    CVAR_GAME | CVAR_INTEGER,       "0 = off\n"
215                                                                                                                                                                                                                         "1 = lights\n"
216                                                                                                                                                                                                                         "2 = sounds\n"
217                                                                                                                                                                                                                         "3 = articulated figures\n"
218                                                                                                                                                                                                                         "4 = particle systems\n"
219                                                                                                                                                                                                                         "5 = monsters\n"
220                                                                                                                                                                                                                         "6 = entity names\n"
221                                                                                                                                                                                                                         "7 = entity models", 0, 7, idCmdSystem::ArgCompletion_Integer<0,7> );
222 idCVar g_dragEntity(                            "g_dragEntity",                         "0",                    CVAR_GAME | CVAR_BOOL, "allows dragging physics objects around by placing the crosshair over them and holding the fire button" );
223 idCVar g_dragDamping(                           "g_dragDamping",                        "0.5",                  CVAR_GAME | CVAR_FLOAT, "" );
224 idCVar g_dragShowSelection(                     "g_dragShowSelection",          "0",                    CVAR_GAME | CVAR_BOOL, "" );
225 idCVar g_dropItemRotation(                      "g_dropItemRotation",           "",                             CVAR_GAME, "" );
226
227 #ifdef CTF
228 // Note: These cvars do not necessarily need to be in the shipping game. 
229 idCVar g_flagAttachJoint( "g_flagAttachJoint", "Chest", CVAR_GAME | CVAR_CHEAT, "player joint to attach CTF flag to" );
230 idCVar g_flagAttachOffsetX( "g_flagAttachOffsetX", "8", CVAR_GAME | CVAR_CHEAT, "X offset of CTF flag when carried" );
231 idCVar g_flagAttachOffsetY( "g_flagAttachOffsetY", "4", CVAR_GAME | CVAR_CHEAT, "Y offset of CTF flag when carried" );
232 idCVar g_flagAttachOffsetZ( "g_flagAttachOffsetZ", "-12", CVAR_GAME | CVAR_CHEAT, "Z offset of CTF flag when carried" );
233 idCVar g_flagAttachAngleX( "g_flagAttachAngleX", "90", CVAR_GAME | CVAR_CHEAT, "X angle of CTF flag when carried" );
234 idCVar g_flagAttachAngleY( "g_flagAttachAngleY", "25", CVAR_GAME | CVAR_CHEAT, "Y angle of CTF flag when carried" );
235 idCVar g_flagAttachAngleZ( "g_flagAttachAngleZ", "-90", CVAR_GAME | CVAR_CHEAT, "Z angle of CTF flag when carried" );
236 #endif
237
238
239 idCVar g_vehicleVelocity(                       "g_vehicleVelocity",            "1000",                 CVAR_GAME | CVAR_FLOAT, "" );
240 idCVar g_vehicleForce(                          "g_vehicleForce",                       "50000",                CVAR_GAME | CVAR_FLOAT, "" );
241 idCVar g_vehicleSuspensionUp(           "g_vehicleSuspensionUp",        "32",                   CVAR_GAME | CVAR_FLOAT, "" );
242 idCVar g_vehicleSuspensionDown(         "g_vehicleSuspensionDown",      "20",                   CVAR_GAME | CVAR_FLOAT, "" );
243 idCVar g_vehicleSuspensionKCompress("g_vehicleSuspensionKCompress","200",               CVAR_GAME | CVAR_FLOAT, "" );
244 idCVar g_vehicleSuspensionDamping(      "g_vehicleSuspensionDamping","400",                     CVAR_GAME | CVAR_FLOAT, "" );
245 idCVar g_vehicleTireFriction(           "g_vehicleTireFriction",        "0.8",                  CVAR_GAME | CVAR_FLOAT, "" );
246 #ifdef _D3XP
247 idCVar g_vehicleDebug(                          "g_vehicleDebug",                       "0",                    CVAR_GAME | CVAR_BOOL, "" );
248 #endif
249
250 idCVar ik_enable(                                       "ik_enable",                            "1",                    CVAR_GAME | CVAR_BOOL, "enable IK" );
251 idCVar ik_debug(                                        "ik_debug",                                     "0",                    CVAR_GAME | CVAR_BOOL, "show IK debug lines" );
252
253 idCVar af_useLinearTime(                        "af_useLinearTime",                     "1",                    CVAR_GAME | CVAR_BOOL, "use linear time algorithm for tree-like structures" );
254 idCVar af_useImpulseFriction(           "af_useImpulseFriction",        "0",                    CVAR_GAME | CVAR_BOOL, "use impulse based contact friction" );
255 idCVar af_useJointImpulseFriction(      "af_useJointImpulseFriction","0",                       CVAR_GAME | CVAR_BOOL, "use impulse based joint friction" );
256 idCVar af_useSymmetry(                          "af_useSymmetry",                       "1",                    CVAR_GAME | CVAR_BOOL, "use constraint matrix symmetry" );
257 idCVar af_skipSelfCollision(            "af_skipSelfCollision",         "0",                    CVAR_GAME | CVAR_BOOL, "skip self collision detection" );
258 idCVar af_skipLimits(                           "af_skipLimits",                        "0",                    CVAR_GAME | CVAR_BOOL, "skip joint limits" );
259 idCVar af_skipFriction(                         "af_skipFriction",                      "0",                    CVAR_GAME | CVAR_BOOL, "skip friction" );
260 idCVar af_forceFriction(                        "af_forceFriction",                     "-1",                   CVAR_GAME | CVAR_FLOAT, "force the given friction value" );
261 idCVar af_maxLinearVelocity(            "af_maxLinearVelocity",         "128",                  CVAR_GAME | CVAR_FLOAT, "maximum linear velocity" );
262 idCVar af_maxAngularVelocity(           "af_maxAngularVelocity",        "1.57",                 CVAR_GAME | CVAR_FLOAT, "maximum angular velocity" );
263 idCVar af_timeScale(                            "af_timeScale",                         "1",                    CVAR_GAME | CVAR_FLOAT, "scales the time" );
264 idCVar af_jointFrictionScale(           "af_jointFrictionScale",        "0",                    CVAR_GAME | CVAR_FLOAT, "scales the joint friction" );
265 idCVar af_contactFrictionScale(         "af_contactFrictionScale",      "0",                    CVAR_GAME | CVAR_FLOAT, "scales the contact friction" );
266 idCVar af_highlightBody(                        "af_highlightBody",                     "",                             CVAR_GAME, "name of the body to highlight" );
267 idCVar af_highlightConstraint(          "af_highlightConstraint",       "",                             CVAR_GAME, "name of the constraint to highlight" );
268 idCVar af_showTimings(                          "af_showTimings",                       "0",                    CVAR_GAME | CVAR_BOOL, "show articulated figure cpu usage" );
269 idCVar af_showConstraints(                      "af_showConstraints",           "0",                    CVAR_GAME | CVAR_BOOL, "show constraints" );
270 idCVar af_showConstraintNames(          "af_showConstraintNames",       "0",                    CVAR_GAME | CVAR_BOOL, "show constraint names" );
271 idCVar af_showConstrainedBodies(        "af_showConstrainedBodies",     "0",                    CVAR_GAME | CVAR_BOOL, "show the two bodies contrained by the highlighted constraint" );
272 idCVar af_showPrimaryOnly(                      "af_showPrimaryOnly",           "0",                    CVAR_GAME | CVAR_BOOL, "show primary constraints only" );
273 idCVar af_showTrees(                            "af_showTrees",                         "0",                    CVAR_GAME | CVAR_BOOL, "show tree-like structures" );
274 idCVar af_showLimits(                           "af_showLimits",                        "0",                    CVAR_GAME | CVAR_BOOL, "show joint limits" );
275 idCVar af_showBodies(                           "af_showBodies",                        "0",                    CVAR_GAME | CVAR_BOOL, "show bodies" );
276 idCVar af_showBodyNames(                        "af_showBodyNames",                     "0",                    CVAR_GAME | CVAR_BOOL, "show body names" );
277 idCVar af_showMass(                                     "af_showMass",                          "0",                    CVAR_GAME | CVAR_BOOL, "show the mass of each body" );
278 idCVar af_showTotalMass(                        "af_showTotalMass",                     "0",                    CVAR_GAME | CVAR_BOOL, "show the total mass of each articulated figure" );
279 idCVar af_showInertia(                          "af_showInertia",                       "0",                    CVAR_GAME | CVAR_BOOL, "show the inertia tensor of each body" );
280 idCVar af_showVelocity(                         "af_showVelocity",                      "0",                    CVAR_GAME | CVAR_BOOL, "show the velocity of each body" );
281 idCVar af_showActive(                           "af_showActive",                        "0",                    CVAR_GAME | CVAR_BOOL, "show tree-like structures of articulated figures not at rest" );
282 idCVar af_testSolid(                            "af_testSolid",                         "1",                    CVAR_GAME | CVAR_BOOL, "test for bodies initially stuck in solid" );
283
284 idCVar rb_showTimings(                          "rb_showTimings",                       "0",                    CVAR_GAME | CVAR_BOOL, "show rigid body cpu usage" );
285 idCVar rb_showBodies(                           "rb_showBodies",                        "0",                    CVAR_GAME | CVAR_BOOL, "show rigid bodies" );
286 idCVar rb_showMass(                                     "rb_showMass",                          "0",                    CVAR_GAME | CVAR_BOOL, "show the mass of each rigid body" );
287 idCVar rb_showInertia(                          "rb_showInertia",                       "0",                    CVAR_GAME | CVAR_BOOL, "show the inertia tensor of each rigid body" );
288 idCVar rb_showVelocity(                         "rb_showVelocity",                      "0",                    CVAR_GAME | CVAR_BOOL, "show the velocity of each rigid body" );
289 idCVar rb_showActive(                           "rb_showActive",                        "0",                    CVAR_GAME | CVAR_BOOL, "show rigid bodies that are not at rest" );
290
291 // The default values for player movement cvars are set in def/player.def
292 idCVar pm_jumpheight(                           "pm_jumpheight",                        "48",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "approximate hieght the player can jump" );
293 idCVar pm_stepsize(                                     "pm_stepsize",                          "16",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "maximum height the player can step up without jumping" );
294 idCVar pm_crouchspeed(                          "pm_crouchspeed",                       "80",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "speed the player can move while crouched" );
295 idCVar pm_walkspeed(                            "pm_walkspeed",                         "140",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "speed the player can move while walking" );
296 idCVar pm_runspeed(                                     "pm_runspeed",                          "220",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "speed the player can move while running" );
297 idCVar pm_noclipspeed(                          "pm_noclipspeed",                       "200",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "speed the player can move while in noclip" );
298 idCVar pm_spectatespeed(                        "pm_spectatespeed",                     "450",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "speed the player can move while spectating" );
299 idCVar pm_spectatebbox(                         "pm_spectatebbox",                      "32",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "size of the spectator bounding box" );
300 idCVar pm_usecylinder(                          "pm_usecylinder",                       "0",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_BOOL, "use a cylinder approximation instead of a bounding box for player collision detection" );
301 idCVar pm_minviewpitch(                         "pm_minviewpitch",                      "-89",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "amount player's view can look up (negative values are up)" );
302 idCVar pm_maxviewpitch(                         "pm_maxviewpitch",                      "89",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "amount player's view can look down" );
303 idCVar pm_stamina(                                      "pm_stamina",                           "24",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "length of time player can run" );
304 idCVar pm_staminathreshold(                     "pm_staminathreshold",          "45",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "when stamina drops below this value, player gradually slows to a walk" );
305 idCVar pm_staminarate(                          "pm_staminarate",                       "0.75",                 CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "rate that player regains stamina. divide pm_stamina by this value to determine how long it takes to fully recharge." );
306 idCVar pm_crouchheight(                         "pm_crouchheight",                      "38",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's bounding box while crouched" );
307 idCVar pm_crouchviewheight(                     "pm_crouchviewheight",          "32",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's view while crouched" );
308 idCVar pm_normalheight(                         "pm_normalheight",                      "74",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's bounding box while standing" );
309 idCVar pm_normalviewheight(                     "pm_normalviewheight",          "68",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's view while standing" );
310 idCVar pm_deadheight(                           "pm_deadheight",                        "20",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's bounding box while dead" );
311 idCVar pm_deadviewheight(                       "pm_deadviewheight",            "10",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of player's view while dead" );
312 idCVar pm_crouchrate(                           "pm_crouchrate",                        "0.87",                 CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "time it takes for player's view to change from standing to crouching" );
313 idCVar pm_bboxwidth(                            "pm_bboxwidth",                         "32",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "x/y size of player's bounding box" );
314 idCVar pm_crouchbob(                            "pm_crouchbob",                         "0.5",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob much faster when crouched" );
315 idCVar pm_walkbob(                                      "pm_walkbob",                           "0.3",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob slowly when walking" );
316 idCVar pm_runbob(                                       "pm_runbob",                            "0.4",                  CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "bob faster when running" );
317 idCVar pm_runpitch(                                     "pm_runpitch",                          "0.002",                CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "" );
318 idCVar pm_runroll(                                      "pm_runroll",                           "0.005",                CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "" );
319 idCVar pm_bobup(                                        "pm_bobup",                                     "0.005",                CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "" );
320 idCVar pm_bobpitch(                                     "pm_bobpitch",                          "0.002",                CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "" );
321 idCVar pm_bobroll(                                      "pm_bobroll",                           "0.002",                CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "" );
322 idCVar pm_thirdPersonRange(                     "pm_thirdPersonRange",          "80",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "camera distance from player in 3rd person" );
323 idCVar pm_thirdPersonHeight(            "pm_thirdPersonHeight",         "0",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "height of camera from normal view height in 3rd person" );
324 idCVar pm_thirdPersonAngle(                     "pm_thirdPersonAngle",          "0",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_FLOAT, "direction of camera from player in 3rd person in degrees (0 = behind player, 180 = in front)" );
325 idCVar pm_thirdPersonClip(                      "pm_thirdPersonClip",           "1",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_BOOL, "clip third person view into world space" );
326 idCVar pm_thirdPerson(                          "pm_thirdPerson",                       "0",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_BOOL, "enables third person view" );
327 idCVar pm_thirdPersonDeath(                     "pm_thirdPersonDeath",          "0",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_BOOL, "enables third person view when player dies" );
328 idCVar pm_modelView(                            "pm_modelView",                         "0",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_INTEGER, "draws camera from POV of player model (1 = always, 2 = when dead)", 0, 2, idCmdSystem::ArgCompletion_Integer<0,2> );
329 idCVar pm_airTics(                                      "pm_air",                                       "1800",                 CVAR_GAME | CVAR_NETWORKSYNC | CVAR_INTEGER, "how long in milliseconds the player can go without air before he starts taking damage" );
330
331 idCVar g_showPlayerShadow(                      "g_showPlayerShadow",           "0",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "enables shadow of player model" );
332 idCVar g_showHud(                                       "g_showHud",                            "1",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "" );
333 idCVar g_showProjectilePct(                     "g_showProjectilePct",          "0",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "enables display of player hit percentage" );
334 idCVar g_showBrass(                                     "g_showBrass",                          "1",                    CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "enables ejected shells from weapon" );
335 idCVar g_gun_x(                                         "g_gunX",                                       "0",                    CVAR_GAME | CVAR_FLOAT, "" );
336 idCVar g_gun_y(                                         "g_gunY",                                       "0",                    CVAR_GAME | CVAR_FLOAT, "" );
337 idCVar g_gun_z(                                         "g_gunZ",                                       "0",                    CVAR_GAME | CVAR_FLOAT, "" );
338 idCVar g_viewNodalX(                            "g_viewNodalX",                         "0",                    CVAR_GAME | CVAR_FLOAT, "" );
339 idCVar g_viewNodalZ(                            "g_viewNodalZ",                         "0",                    CVAR_GAME | CVAR_FLOAT, "" );
340 idCVar g_fov(                                           "g_fov",                                        "90",                   CVAR_GAME | CVAR_INTEGER | CVAR_NOCHEAT, "" );
341 idCVar g_skipViewEffects(                       "g_skipViewEffects",            "0",                    CVAR_GAME | CVAR_BOOL, "skip damage and other view effects" );
342 idCVar g_mpWeaponAngleScale(            "g_mpWeaponAngleScale",         "0",                    CVAR_GAME | CVAR_FLOAT, "Control the weapon sway in MP" );
343
344 idCVar g_testParticle(                          "g_testParticle",                       "0",                    CVAR_GAME | CVAR_INTEGER, "test particle visualation, set by the particle editor" );
345 idCVar g_testParticleName(                      "g_testParticleName",           "",                             CVAR_GAME, "name of the particle being tested by the particle editor" );
346 idCVar g_testModelRotate(                       "g_testModelRotate",            "0",                    CVAR_GAME, "test model rotation speed" );
347 idCVar g_testPostProcess(                       "g_testPostProcess",            "",                             CVAR_GAME, "name of material to draw over screen" );
348 idCVar g_testModelAnimate(                      "g_testModelAnimate",           "0",                    CVAR_GAME | CVAR_INTEGER, "test model animation,\n"
349                                                                                                                                                                                         "0 = cycle anim with origin reset\n"
350                                                                                                                                                                                         "1 = cycle anim with fixed origin\n"
351                                                                                                                                                                                         "2 = cycle anim with continuous origin\n"
352                                                                                                                                                                                         "3 = frame by frame with continuous origin\n"
353                                                                                                                                                                                         "4 = play anim once", 0, 4, idCmdSystem::ArgCompletion_Integer<0,4> );
354 idCVar g_testModelBlend(                        "g_testModelBlend",                     "0",                    CVAR_GAME | CVAR_INTEGER, "number of frames to blend" );
355 idCVar g_testDeath(                                     "g_testDeath",                          "0",                    CVAR_GAME | CVAR_BOOL, "" );
356 idCVar g_exportMask(                            "g_exportMask",                         "",                             CVAR_GAME, "" );
357 idCVar g_flushSave(                                     "g_flushSave",                          "0",                    CVAR_GAME | CVAR_BOOL, "1 = don't buffer file writing for save games." );
358
359 idCVar aas_test(                                        "aas_test",                                     "0",                    CVAR_GAME | CVAR_INTEGER, "" );
360 idCVar aas_showAreas(                           "aas_showAreas",                        "0",                    CVAR_GAME | CVAR_BOOL, "" );
361 idCVar aas_showPath(                            "aas_showPath",                         "0",                    CVAR_GAME | CVAR_INTEGER, "" );
362 idCVar aas_showFlyPath(                         "aas_showFlyPath",                      "0",                    CVAR_GAME | CVAR_INTEGER, "" );
363 idCVar aas_showWallEdges(                       "aas_showWallEdges",            "0",                    CVAR_GAME | CVAR_BOOL, "" );
364 idCVar aas_showHideArea(                        "aas_showHideArea",                     "0",                    CVAR_GAME | CVAR_INTEGER, "" );
365 idCVar aas_pullPlayer(                          "aas_pullPlayer",                       "0",                    CVAR_GAME | CVAR_INTEGER, "" );
366 idCVar aas_randomPullPlayer(            "aas_randomPullPlayer",         "0",                    CVAR_GAME | CVAR_BOOL, "" );
367 idCVar aas_goalArea(                            "aas_goalArea",                         "0",                    CVAR_GAME | CVAR_INTEGER, "" );
368 idCVar aas_showPushIntoArea(            "aas_showPushIntoArea",         "0",                    CVAR_GAME | CVAR_BOOL, "" );
369
370 idCVar g_password(                                      "g_password",                           "",                             CVAR_GAME | CVAR_ARCHIVE, "game password" );
371 idCVar password(                                        "password",                                     "",                             CVAR_GAME | CVAR_NOCHEAT, "client password used when connecting" );
372
373 idCVar g_countDown(                                     "g_countDown",                          "10",                   CVAR_GAME | CVAR_INTEGER | CVAR_ARCHIVE, "pregame countdown in seconds", 4, 3600 );
374 idCVar g_gameReviewPause(                       "g_gameReviewPause",            "10",                   CVAR_GAME | CVAR_NETWORKSYNC | CVAR_INTEGER | CVAR_ARCHIVE, "scores review time in seconds (at end game)", 2, 3600 );
375 idCVar g_TDMArrows(                                     "g_TDMArrows",                          "1",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_BOOL, "draw arrows over teammates in team deathmatch" );
376 idCVar g_balanceTDM(                            "g_balanceTDM",                         "1",                    CVAR_GAME | CVAR_BOOL, "maintain even teams" );
377 #ifdef CTF
378 idCVar g_CTFArrows(                                     "g_CTFArrows",                          "1",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_BOOL, "draw arrows over teammates in CTF" );
379 #endif
380
381 idCVar net_clientPredictGUI(            "net_clientPredictGUI",         "1",                    CVAR_GAME | CVAR_BOOL, "test guis in networking without prediction" );
382
383 idCVar g_voteFlags(                                     "g_voteFlags",                          "0",                    CVAR_GAME | CVAR_NETWORKSYNC | CVAR_INTEGER | CVAR_ARCHIVE, "vote flags. bit mask of votes not allowed on this server\n"
384                                                                                                                                                                         "bit 0 (+1)   restart now\n"
385                                                                                                                                                                         "bit 1 (+2)   time limit\n"
386                                                                                                                                                                         "bit 2 (+4)   frag limit\n"
387                                                                                                                                                                         "bit 3 (+8)   game type\n"
388                                                                                                                                                                         "bit 4 (+16)  kick player\n"
389                                                                                                                                                                         "bit 5 (+32)  change map\n"
390                                                                                                                                                                         "bit 6 (+64)  spectators\n"
391                                                                                                                                                                         "bit 7 (+128) next map" );
392 idCVar g_mapCycle(                                      "g_mapCycle",                           "mapcycle",             CVAR_GAME | CVAR_ARCHIVE, "map cycling script for multiplayer games - see mapcycle.scriptcfg" );
393
394 #ifdef _D3XP
395 idCVar mod_validSkins(                          "mod_validSkins",                       "skins/characters/player/marine_mp;skins/characters/player/marine_mp_green;skins/characters/player/marine_mp_blue;skins/characters/player/marine_mp_red;skins/characters/player/marine_mp_yellow;skins/characters/player/marine_mp_purple;skins/characters/player/marine_mp_grey;skins/characters/player/marine_mp_orange",             CVAR_GAME | CVAR_ARCHIVE, "valid skins for the game" );
396 #else
397 idCVar mod_validSkins(                          "mod_validSkins",                       "skins/characters/player/marine_mp;skins/characters/player/marine_mp_green;skins/characters/player/marine_mp_blue;skins/characters/player/marine_mp_red;skins/characters/player/marine_mp_yellow",              CVAR_GAME | CVAR_ARCHIVE, "valid skins for the game" );
398 #endif
399
400
401 #ifdef _D3XP
402 idCVar g_grabberHoldSeconds(            "g_grabberHoldSeconds",         "3",                    CVAR_GAME | CVAR_FLOAT | CVAR_CHEAT, "number of seconds to hold object" );
403 idCVar g_grabberEnableShake(            "g_grabberEnableShake",         "1",                    CVAR_GAME | CVAR_BOOL | CVAR_CHEAT, "enable the grabber shake" );
404 idCVar g_grabberRandomMotion(           "g_grabberRandomMotion",        "1",                    CVAR_GAME | CVAR_BOOL | CVAR_CHEAT, "enable random motion on the grabbed object" );
405 idCVar g_grabberHardStop(                       "g_grabberHardStop",            "1",                    CVAR_GAME | CVAR_BOOL | CVAR_CHEAT, "hard stops object if too fast" );
406 idCVar g_grabberDamping(                        "g_grabberDamping",                     "0.5",                  CVAR_GAME | CVAR_FLOAT | CVAR_CHEAT, "damping of grabber" );
407 #endif
408
409 #ifdef _D3XP
410 idCVar g_xp_bind_run_once( "g_xp_bind_run_once", "0", CVAR_GAME | CVAR_BOOL | CVAR_ARCHIVE, "Rebind all controls once for D3XP." );
411 #endif
412
413 idCVar net_serverDownload(                      "net_serverDownload",           "0",                    CVAR_GAME | CVAR_INTEGER | CVAR_ARCHIVE, "enable server download redirects. 0: off 1: redirect to si_serverURL 2: use builtin download. see net_serverDl cvars for configuration" );
414 idCVar net_serverDlBaseURL(                     "net_serverDlBaseURL",          "",                             CVAR_GAME | CVAR_ARCHIVE, "base URL for the download redirection" );
415 idCVar net_serverDlTable(                       "net_serverDlTable",            "",                             CVAR_GAME | CVAR_ARCHIVE, "pak names for which download is provided, seperated by ;" );