Counter-Strike: Global Offensive/Game Modes/Arms Race

Arms Race (internally: gungameprogressive) is a game mode in .
A map can be launched in this game mode by invoking the console commands game_type 1; game_mode 0; map <mapname>, or shorter: map <mapname> gg. See Counter-Strike:_Global_Offensive/Game Modes for details and tips.
On official servers, Arms Race is played as a skirmish game mode, meaning that additionally, is set, too. This has the side effect that the game mode icon seen in the loading screen has a shield and that the map voting process at the end of the game also "offers" a different war game.
== Game Mode Description ==
Officially, this game mode plays as follows:
* The game is a single extended round with instant respawn.
* Players start with a weapon and progress to different weapons as they get kills. When a map loads, the game generates a random weapon progression, consisting of 2 sniper rifles, 3 rifles, 1 machine gun, 3 SMGs, 4 pistols, 2 shotguns and the Golden Knife, in this order.
* Killing a player with the knife steals a progression: The killer progresses, the killed loses a progression (assuming they are not at the first weapon).
* The leading player of a team is highlighted to other players and killing them grants an instant progression.
* The first player to get a kill with the golden knife wins the match.
== Map Requirements ==
The only required entities for a map to work in Arms Race are spawn points for each team.
=== Spawn points ===
Arms Race uses the normal info_player_(counter)terrorist as well as the info_armsrace_(counter)terrorist entities as player spawns. The spawn priorities of all of these are ignored in Arms Race, so a terrorist will always spawn at a randomly chosen spawnpoint from all existing info_player_terrorists and info_armsrace_terrorists.
To use the same spawn points like in , one could...
* select all info_deathmatch_spawn entities (e.g. using Entity Report), copy and paste them in the same spot (e.g. and then ), change the class to info_armsrace_terrorist and do the same again for info_armsrace_counterterrorist. Also, you might want to disable the default spawns, see below.
* execute the VScript code SendToConsoleServer("mp_randomspawn 1; mp_randomspawn_los 1") if the current game mode is Arms Race, which might not require a map recompile.
== Modifying Gameplay ==
=== Weapon Progressions ===
ConVar 	Default	Description
mp_ggprogressive_use_random_weapons 	1 	
*0: The game uses a progression defined in csgo/gamemodes.txt or csgo/gamemodes_server.txt.
*1: The game generates a random weapon progression, see above.
mp_ggprogressive_random_weapon_kills_needed	2 	If mp_ggprogressive_use_random_weapons is set to 1, this determines the number of kills that a player must make with a weapon to progress to the next (except for the Golden Knife, which requires one kill).
sv_ggprogressive_autosniper_first 	1 	
*0: In random progressions, either the G3SG1 or the Scar-20 is the first weapon.
*1: In random progressions, any sniper rifle is the first weapon.
sv_ggprogressive_shotgun_last 	1 	
*0: In random progressions, shotguns follow after the Desert Eagle/R8 Revolver, before the other pistols.
*1: In random progressions, shotguns are the last weapon group.
To play with a custom weapon progression, it is suggested to define it in the file csgo/gamemodes_server.txt, then set mp_ggprogressive_use_random_weapons to 0 and launch a map in this game mode, see above.
The file csgo/gamemodes_server.txt could look like this:
=== Related ConVars ===
ConVar 	Default	Description
mp_ggprogressive_healthshot_killcount	3 	Grant healthshots in Arms Race after this number of kills.
mp_ggprogressive_round_restart_delay 	15 	Number of seconds to delay before restarting a round after a win in Arms Race.
=== Disabling Default Spawns using VScript ===
TYPE <- ScriptGetGameType()
MODE <- ScriptGetGameMode()
if (TYPE == 1 && MODE == 0) // Arms Race uses game_type == 1 and game_mode == 0
{
	EntFire("info_player_terrorist", "SetDisabled")
	EntFire("info_player_counterterrorist", "SetDisabled")
}
else
{
	EntFire("info_player_terrorist", "SetEnabled")
	EntFire("info_player_counterterrorist", "SetEnabled")
}
If you want to use the info_armsrace_terrorist and info_armsrace_counterterrorist spawns exclusively, the info_player_terrorist and info_player_counterterrorist entities must be disabled, unless there are none. One way to do this only for Arms Race is writing a VScript such as the one on the right.
* Create a text file with the content shown on the right. Save it at csgo/scripts/vscripts/ or in a subfolder from there as a .nut file.
* In Hammer, create a logic_script and add this file to its Entity Scripts.
* In-game, check the console when running the map to see if something goes wrong. If a team is full, there are most likely no valid spawn points for that team.
* When publishing the map, this script must also be packed (see e.g. VIDE).
=== Bots ===
The current bots can be used in Arms Race, but need a slight modification. When they spawn, they are programmed to buy a weapon and because they can't buy in Arms Race, they get stuck "buying". To overcome this, one could copy and paste csgo/scripts/ai/deathmatch/bt_default.kv3, rename it and remove these lines:
</pre>
In-game, by setting , all bots will then use this modified behavior tree without getting stuck.
Category:Counter-Strike: Global Offensive
Category:Level_Design