Counter-Strike: Global Offensive/Game Modes/Retakes: Difference between revisions
(Rearranged the text and added a lot of information.) |
(Added fix for mp_retake_ct_count/mp_retake_t_count bug) |
||
(30 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{Lang|CS:GO Game Modes/Retakes}} | ||
{{back|Counter-Strike: Global Offensive Level Creation}}{{Delisted|csgo}} | |||
[[File:Csgo icon skirmish retakes.png|left|link=]] | |||
'''Retakes''' is a [[game mode]] in {{csgo|4}} where Terrorists defend a planted bomb against Counter-Terrorists. This game mode features loadout cards that are dealt to players before each round starts. | |||
To launch a map in this game mode, invoke the console commands <code>[[game_type]] 0; game_mode 0; [[sv_skirmish_id]] 12; map <mapname></code>, or shorter: <code>sv_skirmish_id 12; map <mapname> casual</code>. | |||
This page describes how to add proper Retakes support to [[Bomb Defusal]] maps, as well as how to customize the loadout cards. | |||
== Gamemode Description == | == Gamemode Description == | ||
On official servers, this | On official servers, this game mode is like {{csgo mode|Casual}}, but with the following differences: | ||
* There are 3 Terrorists playing against 4 Counter-Terrorists. | * There are 3 Terrorists playing against 4 Counter-Terrorists. | ||
* Each round, the Terrorists already spawn on a bombsite and the Counter-Terrorists spawn around it. One Terrorist holds the bomb and plants | * Each round, the Terrorists already spawn on a bombsite and the Counter-Terrorists spawn around it. One Terrorist holds the bomb and plants it automatically, so that the ''bomb has been planted'' exactly when the freezetime ends. The planter cannot stop themselves from planting. The bomb is planted even with no players on the Terrorists' team. | ||
* During freezetime, players can neither shoot nor drop weapons. The Terrorists, except the planter, | * During the freezetime, players can neither shoot nor drop weapons. The Terrorists, except for the planter, are able to move, but are restricted by blockers until the freezetime ends. | ||
* The buy menu is replaced with loadout cards that players are shown during freezetime. When picking one, they get the specified loadout. Opening the buy menu will show the cards again for a new choice. If the freezetime ends without a player's choice, | * The buy menu is replaced with loadout cards that players are shown during the freezetime. When picking one, they get the specified loadout. Opening the buy menu will show the cards again for a new choice. If the freezetime ends without a player's choice, they get a random card. This is always the case for [[bot]]s. The MVP of the last round gets an additional grenade in one of his cards. | ||
* During warmup, players respawn and can choose between four cards: an upgraded pistol round card, a full buy round card, the enemy card and the bonus card, see below. As | * During warmup, players respawn and can choose between four cards: an upgraded pistol round card, a full buy round card, the enemy card and the bonus card, see below. As bots never pick a card, they have no gun during warmup, except they pick one up from the ground. | ||
=== Server configuration === | === Server configuration === | ||
The provided <code>csgo/cfg/gamemode_retakecasual.[[cfg]]</code> file can be used as a baseline for a Retakes server. | |||
== Adding Retakes Support to a Bomb Scenario Map == | |||
With no support at all, Retakes will already work on any map with two bombsites: | |||
When the map loads, the game prints in the console: | |||
<code>[ RETAKE RULES ] - Error loading 'maps/<mapname>_retake.txt' - Players will spawn at their opposite sites.</code>. | |||
The [[player]]s will spawn on opposite [[func_bomb_target|bombsites]] (within a radius of about 256 units from the bombsite's center) and no one can move nor shoot in the freezetime while the bomb is being planted, not even the Terrorists. | |||
{{warning|If there is exactly one bombsite, the game crashes with a probability of 50 %. If not, CT spawns are not generated, so CTs spawn at default spawns.}} | |||
However, the placement of player spawns and bomb plants will follow a best effort algorithm that might yield unfair setups. | |||
However, the placement of | |||
In order to provide the best experience for players, the following entities should be added and configured on your bomb scenario map: | In order to provide the best experience for players, the following entities should be added and configured on your bomb scenario map: | ||
* Brushes that restrict Terrorist movement while the bomb is planted. | * Brushes that restrict Terrorist movement while the bomb is planted. | ||
* A list of spawn points for both Terrorists and Counter-Terrorists. | * A list of spawn points for both Terrorists and Counter-Terrorists. | ||
* A list of bomb | * A list of bomb plant points and how likely they're supposed to happen during a match. | ||
=== Movement blockers for Terrorists === | === Movement blockers for Terrorists === | ||
[[File:Wrongway_timer.png|thumb|right|192px|The <code>tools/wrongway_timer</code> [[tool texture]] is only visible to players close to the origin of the entity that this material is applied to. Which means every wall should be its own func_brush.]] | |||
If there are blockers for the current bombsite, Retakes allows Terrorists to move during the freezetime. | |||
In [[Hammer]], create [[clip texture|clip brushes]] around both bomb sites and tie them to [[func_brush]] entities. Name them either '''retake.asite''' or '''retake.bsite''' and make sure they start disabled. The game enables and disables them automatically at the beginning and the end of the freezetime. | |||
{{tip|They follow the same pattern as the blockers used in {{csgo mode|Wingman}}. You can use the '''<code>tools/wrongway_timer</code>''' material, similar to the '''<code>tools/wrongway</code>''' material, which fades into view when approaching it.}} | |||
{{ | {{ModernPlacementTip|The idea is to create an enclosure that allows Terrorists some level of flexibility to position themselves in preparation for the retake. The boundaries should be set so that Terrorists cannot run too far and get too close to the CTs who are never allowed to move during this time. If you use generated spawns, the bounds should also not be too tight around the bombsite due to the spawning radius; Terrorists could spawn inside a blocker brush or on the other side of it.}} | ||
=== List of Spawn Points and Bomb Plant Locations === | |||
Alongside the map's [[BSP]] file one should create a [[KeyValues]] file named '''<code><mapname>_retake.txt</code>''', located at <code>csgo/maps/</code>, e.g. <code>csgo/maps/de_mirage_retake.txt</code>. | |||
One can copy one of the active duty maps' files, rename it, and edit its contents accordingly. There are instructional comments in their first lines. | |||
The following examples are from Valve's <code>csgo/maps/de_mirage_retake.txt</code> when it was last modified on 2020-12-03. | |||
The syntax for each spawn point is: | The syntax for each spawn point is: | ||
< | <pre style="background-color:#444; border-color:#666; color:#ddd"> | ||
"<id>" "<x> <y> <z> <pitch> <yaw> <roll>" | "<id>" "<x> <y> <z> <pitch> <yaw> <roll>" | ||
</ | </pre> | ||
The <code><id></code> can be any string, just be sure not to use any of them multiple times, as the last of them overwrites the first. For simplicity, | {{ModernExample| | ||
<pre style="background-color:#444; border-color:#666; color:#ddd"> | |||
"0" "-1677.126709 -1634.004761 -199.909851 -1.040606 -70.527283 0.000000" // ct spawn towards stairs | |||
"1" "-1656.067993 -1312.397339 -198.956573 -9.220211 46.770073 0.000000" // ct spawn towards window | |||
"2" "-1900.843750 -501.388794 -103.906342 -0.048411 -35.025795 0.000000" // market | |||
"3" "-1098.085815 247.777573 -108.550049 0.483987 -24.305056 0.000000" // short/cat | |||
// ... and 5 more | |||
</pre> | |||
}} | |||
The <code><id></code> can be any string, just be sure not to use any of them multiple times, as the last of them overwrites the first. For simplicity, use indices (0, 1 , 2, ...) just like Valve. | |||
<br> | <br> | ||
The other values can be obtained in-game using '''{{ent|getpos}}''' on your console. | The other values can be obtained in-game using '''{{ent|getpos}}''' on your console. | ||
Line 69: | Line 72: | ||
At the start of each round, the game will choose the spawn points for each player randomly with equal probability from the corresponsing list, using each <code><id></code> at most once. | At the start of each round, the game will choose the spawn points for each player randomly with equal probability from the corresponsing list, using each <code><id></code> at most once. | ||
If there are less spawn points than [[player]]s, the game generates more. | If there are less spawn points than [[player]]s, the game generates more. | ||
{{ | {{tip|If you don't want unpredictable spawn points, include at least as many spawn points as the maximum number of players. Include even more to have a variety of different spawns; This concerns especially CT spawns, as it influences where Ts have to expect CTs to come from.}} | ||
The syntax for each bomb plant spot is: | The syntax for each bomb plant spot is: | ||
< | <pre style="background-color:#444; border-color:#666; color:#ddd"> | ||
"<id>" "<weight> <x> <y> <z> <pitch> <yaw> <roll>" | "<id>" "<weight> <x> <y> <z> <pitch> <yaw> <roll>" | ||
</ | </pre> | ||
{{ModernExample| | |||
<pre style="background-color:#444; border-color:#666; color:#ddd"> | |||
"0" "10 -253.968750 -2134.075439 -172.946960 0.000000 121.827393 0.000000" // default | |||
"1" "10 -554.968750 -2103.693359 -179.968750 0.000000 129.375000 0.000000" // default | |||
"2" "1 -495.546356 -2031.964600 -179.968750 0.000000 191.541138 0.000000" // advantageous | |||
"3" "1 -627.257385 -2000.988037 -179.968750 0.000000 296.834106 0.000000" // advantageous | |||
</pre> | |||
}} | |||
There's an additional weight factor, indicating how often this bomb plant location occurs during a match. | There's an additional weight factor, indicating how often this bomb plant location occurs during a match. | ||
For example, if you have a bomb plant location with a weight of 1, and another with a weight of 10, the latter is 10 times more likely to occur during a | For example, if you have a bomb plant location with a weight of 1, and another with a weight of 10, the latter is 10 times more likely to occur during a Retakes match than the former. | ||
If all bomb plant locations have the same weight, they are all equally likely to be picked during a match. | If all bomb plant locations have the same weight, they are all equally likely to be picked during a match. | ||
{{ | {{note|The bomb will be lying or floating at exactly those coordinates, so make sure to use '''{{ent|getpos_exact}}'''. If you use {{ent|getpos}} to obtain a position, subtract 64 units from the <code><z></code> coordinate, otherwise the bomb will float at head height.}} | ||
{{ | {{note|The bomb will be planted, even if the [[player]] does not touch a [[func_bomb_target]]. The Retake scenario could take place at any location on the map.}} | ||
If any information is missing, the game will do a best-effort algorithm to generate spawn points, but it is not guaranteed to produce fair results. | If any information is missing, the game will do a best-effort algorithm to generate spawn points, but it is not guaranteed to produce fair results. | ||
== | == Customizing Loadout Cards == | ||
The deck of cards for player loadouts can be customized using specific [[ConVars]]. | The deck of cards for player loadouts can be customized using specific [[ConVars]]. | ||
The game comes with a default deck of cards that has been tested on all active duty maps. | The game comes with a default deck of cards that has been tested on all active duty maps. | ||
{{ | {{note|Changing these ConVars in-game has no effect! {{Clarify}} You should set the following ConVars on your Retakes server configuration file, see [[#Server configuration]] section above, or set them in the file <code>csgo/cfg/gamemode_retakecasual.cfg</code>.}} | ||
=== Card deck ConVars === | === Card deck ConVars === | ||
Line 102: | Line 113: | ||
{| class="standard-table" | {| class="standard-table" | ||
|+ Round types and their card deck ConVars | |+ Round types and their card deck ConVars | ||
! Round | ! Round Number | ||
! Round Type | ! Round Type | ||
! Card Deck ConVars | ! Card Deck ConVars | ||
Line 153: | Line 164: | ||
|- | |- | ||
| <code><card></code> | | <code><card></code> | ||
| Any syntax errors in a card make it invalid. Invalid cards have no title and provide only a [[weapon_p250|P250]]. | | A card with the above syntax, representing a loudout. Any syntax errors in a card make it invalid. Invalid cards have no title and provide only a [[weapon_p250|P250]]. | ||
|- | |- | ||
| <code><card title></code> | | <code><card title></code> | ||
| This string is the card title. It can contain spaces if the whole command expression is quoted. It makes sense to use string tokens here, for example <code>#GameUI_Retake_Card_TheAWPortunity</code>. | | This string is the card title. It can contain spaces if the whole command expression is quoted. It makes sense to use string tokens here, for example <code>#GameUI_Retake_Card_TheAWPortunity</code>. Existing string tokens can be looked up, e.g. in the file <code>csgo/resource/csgo_english.txt</code> by searching for <code>GameUI_Retake_Card</code>. | ||
|- | |- | ||
| <code><0/1 for armor>,</code><br><code><0/1 for helmet></code> | | <code><0/1 for armor>,</code><br><code><0/1 for helmet></code> | ||
Line 162: | Line 173: | ||
|- | |- | ||
| <code><item>,<item>,...,<item></code> | | <code><item>,<item>,...,<item></code> | ||
| This is a comma-separated list of weapons and grenades that a card provides. The first one in this list will be displayed with a big image, subsequent items are shown as pictograms below. If the first one is not a pistol, a card with this will also give a player his default pistol. If multiple weapons for the same slot are given, all but the first are dropped. An <code><item></code> can only be one of the values <code>secondary</code>, <code>heavy</code>, <code>smg</code>, <code>rifle</code> or <code>grenade</code>, appended with a number (0-5), for example <code>rifle4</code> (AWP). Consider the table below. This semantics comes from the buy menu. | | This is a comma-separated list of weapons and grenades that a card provides. The first one in this list will be displayed with a big image, subsequent items are shown as pictograms below. If the first one is not a pistol, a card with this will also give a player his default pistol. If multiple weapons for the same slot are given, all but the first are dropped. An <code><item></code> can only be one of the values <code>secondary</code>, <code>heavy</code>, <code>smg</code>, <code>rifle</code> or <code>grenade</code>, appended with a number (0-5), for example <code>rifle4</code> (AWP). Consider the table below. This semantics comes from the [[:Category:Counter-Strike: Global Offensive Weapons|buy menu]]. | ||
|} | |} | ||
Line 183: | Line 194: | ||
| [[weapon_m249|M249]] | | [[weapon_m249|M249]] | ||
| [[weapon_negev|Negev]] | | [[weapon_negev|Negev]] | ||
| | | [[weapon_shield|Riot Shield]] | ||
|- | |- | ||
! smg | ! smg | ||
Line 210: | Line 221: | ||
|} | |} | ||
{{ | {{warning|The game can crash at the end of the freezetime if a player has no cards to choose from. This happens if there are less cards than players on a team.}} | ||
{{Bug| hidetested=1 |If you give the player more than three grenades by setting <code>'''ammo_grenade_limit_total'''</code> to 4 and assigning four grenades in the loadout card, they will keep the first-slot grenade from the previous card if they switch their card before the round starts. {{Confirm|Check if this issue occurs with every loadout or only with MVP cards that grant an extra grenade.}}}} | |||
{{Bug| hidetested=1 |Picking up a [[weapon_shield|Riot Shield]] is not possible unless a [[func_hostage_rescue|func_hostage_rescue]] is present in your level. {{Fix|Place a [[func_hostage_rescue|func_hostage_rescue]] in your level or create it dynamically}} {{Code Fix|{{sourcemod|4.1}} solution for picking up [[weapon_shield|Riot Shield's]] without a [[func_hostage_rescue|func_hostage_rescue]] in your level: | |||
<source lang=cpp> | |||
#include <cstrike> | |||
#include <sdktools> | |||
public void OnMapStart() | |||
{ | |||
if (FindEntityByClassname(-1, "func_hostage_rescue") == -1) | |||
{ | |||
CreateEntityByName("func_hostage_rescue"); | |||
} | |||
} | |||
</source> | |||
This will place a [[func_hostage_rescue|func_hostage_rescue]] in your level when the map get's started | |||
}} }} | |||
{{ModernExample|Consider the default card deck for CTs for the default pistol round (<code>mp_retake_ct_loadout_default_pistol_round</code>): | |||
< | <pre style="background-color:#444; border-color:#666; color:#ddd"> | ||
"1|3;#GameUI_Retake_Card_4v3,0,0,secondary0|1;#GameUI_Retake_Card_FlashOut,0,0,secondary0,grenade2;#GameUI_Retake_Card_HideAndPeek,0,0,secondary0,grenade4" | "1|3;#GameUI_Retake_Card_4v3,0,0,secondary0|1;#GameUI_Retake_Card_FlashOut,0,0,secondary0,grenade2;#GameUI_Retake_Card_HideAndPeek,0,0,secondary0,grenade4" | ||
</ | </pre> | ||
To get a representation that is easier to read and edit, we split it up into its components in a text editor: | To get a representation that is easier to read and edit, we split it up into its components in a text editor: | ||
< | <pre style="background-color:#444; border-color:#666; color:#ddd"> | ||
"1|3;<card 1>|1;<card 2>;<card 3>" // One CT gets a defuse kit. The deck consists of 3x <card 1> plus 1x <card 2> or <card 3>. | "1|3;<card 1>|1;<card 2>;<card 3>" // One CT gets a defuse kit. The deck consists of 3x <card 1> plus 1x <card 2> or <card 3>. | ||
Line 224: | Line 250: | ||
<card 2> = #GameUI_Retake_Card_FlashOut,0,0,secondary0,grenade2 // title "Flash Out!", no kevlar, no helmet, P2000/USP-S + Flashbang | <card 2> = #GameUI_Retake_Card_FlashOut,0,0,secondary0,grenade2 // title "Flash Out!", no kevlar, no helmet, P2000/USP-S + Flashbang | ||
<card 3> = #GameUI_Retake_Card_HideAndPeek,0,0,secondary0,grenade4 // title "Hide and Peek", no kevlar, no helmet, P2000/USP-S + Smoke | <card 3> = #GameUI_Retake_Card_HideAndPeek,0,0,secondary0,grenade4 // title "Hide and Peek", no kevlar, no helmet, P2000/USP-S + Smoke | ||
</ | </pre> | ||
}} | |||
=== Enemy cards === | === Enemy cards === | ||
In some full buy rounds{{clarify}}, a player is dealt an additional card that | In some full buy rounds{{clarify}}, a player is dealt an additional '''enemy card''' that they can choose from. | ||
The special thing about this card is that the first <code><item></code> is picked from the enemy team's default loadout. For example, if a CT gets this card with the first <code><item></code> being <code>rifle0</code>, the weapon is a [[weapon_galilar|Galil AR]] instead of a [[weapon_famas|FAMAS]]. | The special thing about this card is that the first <code><item></code> is picked from the enemy team's default loadout. For example, if a CT gets this card with the first <code><item></code> being <code>rifle0</code>, the weapon is a [[weapon_galilar|Galil AR]] instead of a [[weapon_famas|FAMAS]]. | ||
This card is defined with the ConVars: | This card is defined with the ConVars: | ||
Line 241: | Line 267: | ||
=== Bonus cards === | === Bonus cards === | ||
In full buy rounds, there is a certain number of additional bonus cards in each team's deck. | In full buy rounds, there is a certain number of additional '''bonus cards''' in each team's deck. | ||
Currently there's only one bonus card definition per team. The ConVars are: | Currently there's only one bonus card definition per team. The ConVars are: | ||
Line 277: | Line 303: | ||
For the value <code>"1,1,2"</code>, the availability is instead "1 card, 1 card, 2 cards, 1 card, 1 card, 2 cards, ..." | For the value <code>"1,1,2"</code>, the availability is instead "1 card, 1 card, 2 cards, 1 card, 1 card, 2 cards, ..." | ||
{{ | {{warning|The game crashes at match start if the value is <code>""</code> or if the first integer is <code>0</code> or invalid. If set to one of these values, the bonus card during warmup is empty.}} | ||
{{ | {{todo|''Is the above explanation really the case? Values like <code>"4", "4,4", "99", "99,99"</code> should increase the probability to get a bonus card, but apparently they don't.''}} | ||
<!-- | <!-- | ||
{| class="standard-table" | {| class="standard-table" | ||
|+ Number of bonus cards in a team's deck in full buy rounds | |+ Number of bonus cards in a team's deck in full buy rounds | ||
! rowspan="2" | Availability value !! colspan="12" | Bonus cards in Full Buy Round... | ! rowspan="2"|Availability value !! colspan="12"|Bonus cards in Full Buy Round... | ||
|- | |- | ||
! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! ... | ! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! ... | ||
Line 321: | Line 347: | ||
| The maximum number of rounds in a row on the same [[func_bomb_target|bombsite]]. | | The maximum number of rounds in a row on the same [[func_bomb_target|bombsite]]. | ||
|} | |} | ||
{{Bug|hidetested=1|Placing <code>'''mp_retake_ct_count'''</code> & <code>'''mp_retake_t_count'''</code> in a config or in the <code>'''gamemode_retakecasual.cfg'''</code> will not be executed and will have no effect. {{Fix|Instead of putting them in a config, set them as startup parameters via <code>'''+mp_retake_ct_count <amount> +mp_retake_t_count <amount>'''</code> or change them at runtime, followed by a level change.{{Bug|hidetested=1|Setting those startup parameters without <code>'''sv_skirmish_id 12'''</code> will result in the convar values being subtracted by 1.{{Example|If you set <code>'''+mp_retake_ct_count 5 +mp_retake_t_count 5'''</code> without <code>'''sv_skirmish_id 12'''</code>, it would interpret them as <code>'''mp_retake_ct_count 4'''</code> & <code>'''mp_retake_t_count 4'''</code>, making it a 4v4 instead of the intended 5v5.}}{{Fix|Add <code>'''+sv_skirmish_id 12'''</code> to your startup parameters.}} }} }} }} | |||
[[Category: Counter-Strike: Global Offensive]][[Category: Level Design]][[Category: Tutorials]] | {{csgo-navbox}} | ||
[[Category: Counter-Strike: Global Offensive]] | |||
[[Category: Level Design]] | |||
[[Category: Tutorials]] |
Latest revision as of 03:02, 13 February 2025




It is covered here for historical and technical reference.

Retakes is a game mode in Counter-Strike: Global Offensive where Terrorists defend a planted bomb against Counter-Terrorists. This game mode features loadout cards that are dealt to players before each round starts.
To launch a map in this game mode, invoke the console commands game_type 0; game_mode 0; sv_skirmish_id 12; map <mapname>
, or shorter: sv_skirmish_id 12; map <mapname> casual
.
This page describes how to add proper Retakes support to Bomb Defusal maps, as well as how to customize the loadout cards.
Gamemode Description
On official servers, this game mode is like Casual, but with the following differences:
- There are 3 Terrorists playing against 4 Counter-Terrorists.
- Each round, the Terrorists already spawn on a bombsite and the Counter-Terrorists spawn around it. One Terrorist holds the bomb and plants it automatically, so that the bomb has been planted exactly when the freezetime ends. The planter cannot stop themselves from planting. The bomb is planted even with no players on the Terrorists' team.
- During the freezetime, players can neither shoot nor drop weapons. The Terrorists, except for the planter, are able to move, but are restricted by blockers until the freezetime ends.
- The buy menu is replaced with loadout cards that players are shown during the freezetime. When picking one, they get the specified loadout. Opening the buy menu will show the cards again for a new choice. If the freezetime ends without a player's choice, they get a random card. This is always the case for bots. The MVP of the last round gets an additional grenade in one of his cards.
- During warmup, players respawn and can choose between four cards: an upgraded pistol round card, a full buy round card, the enemy card and the bonus card, see below. As bots never pick a card, they have no gun during warmup, except they pick one up from the ground.
Server configuration
The provided csgo/cfg/gamemode_retakecasual.cfg
file can be used as a baseline for a Retakes server.
Adding Retakes Support to a Bomb Scenario Map
With no support at all, Retakes will already work on any map with two bombsites:
When the map loads, the game prints in the console:
[ RETAKE RULES ] - Error loading 'maps/<mapname>_retake.txt' - Players will spawn at their opposite sites.
.
The players will spawn on opposite bombsites (within a radius of about 256 units from the bombsite's center) and no one can move nor shoot in the freezetime while the bomb is being planted, not even the Terrorists.

However, the placement of player spawns and bomb plants will follow a best effort algorithm that might yield unfair setups. In order to provide the best experience for players, the following entities should be added and configured on your bomb scenario map:
- Brushes that restrict Terrorist movement while the bomb is planted.
- A list of spawn points for both Terrorists and Counter-Terrorists.
- A list of bomb plant points and how likely they're supposed to happen during a match.
Movement blockers for Terrorists

tools/wrongway_timer
tool texture is only visible to players close to the origin of the entity that this material is applied to. Which means every wall should be its own func_brush.If there are blockers for the current bombsite, Retakes allows Terrorists to move during the freezetime.
In Hammer, create clip brushes around both bomb sites and tie them to func_brush entities. Name them either retake.asite or retake.bsite and make sure they start disabled. The game enables and disables them automatically at the beginning and the end of the freezetime.


tools/wrongway_timer
material, similar to the tools/wrongway
material, which fades into view when approaching it.
List of Spawn Points and Bomb Plant Locations
Alongside the map's BSP file one should create a KeyValues file named <mapname>_retake.txt
, located at csgo/maps/
, e.g. csgo/maps/de_mirage_retake.txt
.
One can copy one of the active duty maps' files, rename it, and edit its contents accordingly. There are instructional comments in their first lines.
The following examples are from Valve's csgo/maps/de_mirage_retake.txt
when it was last modified on 2020-12-03.
The syntax for each spawn point is:
"<id>" "<x> <y> <z> <pitch> <yaw> <roll>"

"0" "-1677.126709 -1634.004761 -199.909851 -1.040606 -70.527283 0.000000" // ct spawn towards stairs "1" "-1656.067993 -1312.397339 -198.956573 -9.220211 46.770073 0.000000" // ct spawn towards window "2" "-1900.843750 -501.388794 -103.906342 -0.048411 -35.025795 0.000000" // market "3" "-1098.085815 247.777573 -108.550049 0.483987 -24.305056 0.000000" // short/cat // ... and 5 more
The <id>
can be any string, just be sure not to use any of them multiple times, as the last of them overwrites the first. For simplicity, use indices (0, 1 , 2, ...) just like Valve.
The other values can be obtained in-game using getpos on your console.
At the start of each round, the game will choose the spawn points for each player randomly with equal probability from the corresponsing list, using each <id>
at most once.
If there are less spawn points than players, the game generates more.

The syntax for each bomb plant spot is:
"<id>" "<weight> <x> <y> <z> <pitch> <yaw> <roll>"

"0" "10 -253.968750 -2134.075439 -172.946960 0.000000 121.827393 0.000000" // default "1" "10 -554.968750 -2103.693359 -179.968750 0.000000 129.375000 0.000000" // default "2" "1 -495.546356 -2031.964600 -179.968750 0.000000 191.541138 0.000000" // advantageous "3" "1 -627.257385 -2000.988037 -179.968750 0.000000 296.834106 0.000000" // advantageous
There's an additional weight factor, indicating how often this bomb plant location occurs during a match. For example, if you have a bomb plant location with a weight of 1, and another with a weight of 10, the latter is 10 times more likely to occur during a Retakes match than the former. If all bomb plant locations have the same weight, they are all equally likely to be picked during a match.

<z>
coordinate, otherwise the bomb will float at head height.
If any information is missing, the game will do a best-effort algorithm to generate spawn points, but it is not guaranteed to produce fair results.
Customizing Loadout Cards
The deck of cards for player loadouts can be customized using specific ConVars. The game comes with a default deck of cards that has been tested on all active duty maps.

csgo/cfg/gamemode_retakecasual.cfg
.Card deck ConVars
The card distribution has the following system: Each round, the round type determines a deck of cards that each teams gets. These cards are distributed to all players within each team. There are the following round types:
Round Number | Round Type | Card Deck ConVars |
---|---|---|
1 | Default Pistol Round | mp_retake_ct_loadout_default_pistol_round "<deck string>" mp_retake_t_loadout_default_pistol_round "<deck string>"
|
2 | Upgraded Pistol Round | mp_retake_ct_loadout_upgraded_pistol_round "<deck string>" mp_retake_t_loadout_upgraded_pistol_round "<deck string>"
|
3 | Light Buy Round | mp_retake_ct_loadout_light_buy_round "<deck string>" mp_retake_t_loadout_light_buy_round "<deck string>"
|
4, 5, ... | Full Buy Round | mp_retake_ct_loadout_full_buy_round "<deck string>" mp_retake_t_loadout_full_buy_round "<deck string>"
|
Each of these ConVars is a <deck string>
with special characters that determine the deck of cards for the given round type and team.
All <deck string>
s have the same syntax:
Expression | Syntax | Example |
---|---|---|
<deck string>
|
<# of defusers for team>|<card group>|<card group>|...|<card group>
|
4|<card group> 0|<card group>|<card group>|<card group>
|
<card group>
|
<# of cards from this group in deck>;<card>;<card>;...;<card>
|
3;<card> 2;<card>;<card>;<card>
|
<card>
|
<card title>,<0/1 for armor>,<0/1 for helmet>,<item>,<item>,...,<item>
|
#GameUI_Retake_Card_FlashOut,0,0,secondary2,grenade2 Heavy Weapons Guy,1,0,heavy3
|
Remarks:
<# of defusers for team>
|
This number indicates the number of defuse kits available for this round type. These will be randomly assigned to players on the team in question. |
<# of cards from this group in deck>
|
This is the number of cards from a group that is added to the deck of a team. Each card of the group can be added multiple times. Example: The card group 3;<card 1> will always add three times <card 1> to the deck. The group 1;<card 1>;<card 2> will add one card to the deck, either <card 1> or <card 2> . The group 2;<card 1>;<card 2> adds either two times <card 1> , or two times <card 2> or one of each to the deck. This process of adding is random.
|
<card>
|
A card with the above syntax, representing a loudout. Any syntax errors in a card make it invalid. Invalid cards have no title and provide only a P250. |
<card title>
|
This string is the card title. It can contain spaces if the whole command expression is quoted. It makes sense to use string tokens here, for example #GameUI_Retake_Card_TheAWPortunity . Existing string tokens can be looked up, e.g. in the file csgo/resource/csgo_english.txt by searching for GameUI_Retake_Card .
|
<0/1 for armor>, <0/1 for helmet>
|
These characters are either 0 or 1 , indicating whether this card provides armor and/or a helmet, so the only possibilities for these are 0,0 (no armor), 1,0 (kevlar), 0,1 (kevlar and helmet) and 1,1 (kevlar and halmet). Invalid values behave like 0 .
|
<item>,<item>,...,<item>
|
This is a comma-separated list of weapons and grenades that a card provides. The first one in this list will be displayed with a big image, subsequent items are shown as pictograms below. If the first one is not a pistol, a card with this will also give a player his default pistol. If multiple weapons for the same slot are given, all but the first are dropped. An <item> can only be one of the values secondary , heavy , smg , rifle or grenade , appended with a number (0-5), for example rifle4 (AWP). Consider the table below. This semantics comes from the buy menu.
|
<item> |
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
secondary | Glock-18 / USP-S / P2000 | Dual Berettas | P250 | Tec-9 / CZ75-Auto / Five-SeveN | Desert Eagle / R8 Revolver | nothing |
heavy | Nova | XM1014 | Sawed-Off / MAG-7 | M249 | Negev | Riot Shield |
smg | MAC-10 / MP9 | MP7 / MP5-SD | UMP-45 | P90 | PP-Bizon | nothing |
rifle | Galil AR / FAMAS | AK-47 / M4A4 / M4A1-S | SSG 08 | SG 553 / AUG | AWP | G3SG1 / SCAR-20 |
grenade | Molotov / Incendiary Grenade | Decoy | Flashbang | HE Grenade | Smoke | nothing |


ammo_grenade_limit_total
to 4 and assigning four grenades in the loadout card, they will keep the first-slot grenade from the previous card if they switch their card before the round starts. 




#include <cstrike>
#include <sdktools>
public void OnMapStart()
{
if (FindEntityByClassname(-1, "func_hostage_rescue") == -1)
{
CreateEntityByName("func_hostage_rescue");
}
}
This will place a func_hostage_rescue in your level when the map get's started

mp_retake_ct_loadout_default_pistol_round
):
"1|3;#GameUI_Retake_Card_4v3,0,0,secondary0|1;#GameUI_Retake_Card_FlashOut,0,0,secondary0,grenade2;#GameUI_Retake_Card_HideAndPeek,0,0,secondary0,grenade4"
To get a representation that is easier to read and edit, we split it up into its components in a text editor:
"1|3;<card 1>|1;<card 2>;<card 3>" // One CT gets a defuse kit. The deck consists of 3x <card 1> plus 1x <card 2> or <card 3>. <card 1> = #GameUI_Retake_Card_4v3,0,0,secondary0 // title "4v3", no kevlar, no helmet, P2000/USP-S <card 2> = #GameUI_Retake_Card_FlashOut,0,0,secondary0,grenade2 // title "Flash Out!", no kevlar, no helmet, P2000/USP-S + Flashbang <card 3> = #GameUI_Retake_Card_HideAndPeek,0,0,secondary0,grenade4 // title "Hide and Peek", no kevlar, no helmet, P2000/USP-S + Smoke
Enemy cards
In some full buy rounds[Clarify], a player is dealt an additional enemy card that they can choose from.
The special thing about this card is that the first <item>
is picked from the enemy team's default loadout. For example, if a CT gets this card with the first <item>
being rifle0
, the weapon is a Galil AR instead of a FAMAS.
This card is defined with the ConVars:
mp_retake_ct_loadout_enemy_card <card>
|
mp_retake_t_loadout_enemy_card <card>
|
Bonus cards
In full buy rounds, there is a certain number of additional bonus cards in each team's deck. Currently there's only one bonus card definition per team. The ConVars are:
mp_retake_ct_loadout_bonus_card <card>
|
mp_retake_t_loadout_bonus_card <card>
|
For the format, see above. The default value for both teams is "#GameUI_Retake_Card_TheAWPortunity,1,1,rifle4"
.
There's a ConVar that controls the availability of bonus cards in full buy rounds per team:
mp_retake_ct_loadout_bonus_card_availability
|
"1,2"
|
mp_retake_t_loadout_bonus_card_availability
|
"1,1,2"
|
The value is a string of comma-delimited integers. Each integer represents a number of bonus cards dealt for a team in a full buy round. In the first full buy round, the first integer determines the number of bonus cards. For the next full buy round, the next integer is used. If all integers have been used, the first is used again and this pattern repeats.
Example:
A value of "1,2"
indicates that during the first full buy round, 1 bonus card will be dealt; The second full buy round will feature 2 bonus cards.
Then, only 1 bonus card will be dealt, followed by 2 the next round.
For the value "1,1,2"
, the availability is instead "1 card, 1 card, 2 cards, 1 card, 1 card, 2 cards, ..."

""
or if the first integer is 0
or invalid. If set to one of these values, the bonus card during warmup is empty."4", "4,4", "99", "99,99"
should increase the probability to get a bonus card, but apparently they don't.
Other Console Commands
Command | Default value | Description |
---|---|---|
mp_retake_ct_count
|
4 | The number of players on the CT side. |
mp_retake_t_count
|
3 | The number of players on the T side. |
mp_retake_max_consecutive_rounds_same_target_site
|
2 | The maximum number of rounds in a row on the same bombsite. |

mp_retake_ct_count
& mp_retake_t_count
in a config or in the gamemode_retakecasual.cfg
will not be executed and will have no effect. 
+mp_retake_ct_count <amount> +mp_retake_t_count <amount>
or change them at runtime, followed by a level change.
sv_skirmish_id 12
will result in the convar values being subtracted by 1.
+mp_retake_ct_count 5 +mp_retake_t_count 5
without sv_skirmish_id 12
, it would interpret them as mp_retake_ct_count 4
& mp_retake_t_count 4
, making it a 4v4 instead of the intended 5v5.
+sv_skirmish_id 12
to your startup parameters.
|