Team Fortress 2/Creating a CP assault map

__NOEDITSECTION__
This tutorial covers the creation of a dustbowl-style system of rounds.
__TOC__
== Step 1 - Outlining ==
This section will cover the outlines of the linear system.
This tutorial is assuming that you already created the skeleton of your map - which would be the status when the map is nearly completed. The map this tutorial is going to use is a simple, three round map you can see on the picture. It would be vital that you check out the labels on the picture, as everything is written down using those labels.
== Step 2 - Control points ==
This step introduces the usage of the and entities.
* Place a team_control_point_master anywhere on your map and go to its properties.
* Set the Switch teams on map win? field to Yes.
* The next step is placing a team_control_point_round entity for each round your map has. The properties of these entities are much like those of the team_control_point_master. Make sure you set an easily identifiable name for each round, such as round_1. The priority field will make sure that the game is linear: Set it to 100 for the first round, 99 for the second round and so on. You may also want to restrict the defending team from winning - set the Restrict team from winning to RED. Finally, in the Control points in this round field, input the Names of the control points for that round, separated by a space.
== Step 3 - Respawn points ==
Now that you have your rounds, you might want to specify the entry points of each team.
* Fill your respawn rooms with entities and set their Team key value to any of the teams, it doesn't matter. What might matter is Associated Control Point: if you want the spawn place to be usable by the team who owns a certain control point, then input its name into this field. Important fields are Blue and Red spawn for round. Type the name of the rounds into these fields for which you want a team to spawn at these spawn points.
== Step 4 - Timers and rounds ==
The map has almost everything it requires, there is only one little problem: neither teams can win.
To set this up, this step explains the creation of a basic timer with additional options.
* Add a team_round_timer entity. Its key values are explained in the table below.
::
Property Name 	Description 	Value
Name 	Name of the entity 	start_timer
Timer Length 	Time limit at the beginning (in seconds) 	180-300
Max Timer Length 	Max amount of time limit (0 = no limit) 	0
Setup Timer Length 	Setup time before gates open (in seconds)	45-60
Reset Time on Round Restart	Self-explanatory 	No
Use Countdown Seconds 	Self-explanatory 	Yes
Show Timer in Hud 	Self-explanatory 	Yes
=== Handling doors ===
* This entity can open the doors of the attacking team's spawn rooms. To do this, create entities, name them in a sequence such as relay_spawn_1, relay_spawn_2 , etc and disable all of them but the first one. Add these outputs to the team_round_timer:
::
	My Output 	Target Entity	Target Input	Parameter	Delay	Only Once
	OnSetupFinished	relay_spawn_1	Trigger 	<none> 	0.00 	No
	OnSetupFinished	relay_spawn_2	Trigger 	<none> 	0.00 	No
And so on for all of them.
* On each relay, add these outputs:
::
	My Output	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnTrigger	!self 	Disable 	<none> 	0.00 	No
	OnTrigger	(spawn room door) 	Open 	<none> 	0.00 	No
	OnTrigger	(name of next relay)	Enable 	<none> 	0.00 	No
=== Extending time ===
* The specified time seems a little short to win 3 rounds, that's why the control points need to be set up for this. For each add an output:
::
	My Output 	Target Entity	Target Input	Parameter 	Delay	Only Once
	OnCapTeam2	start_timer 	AddTime 	(same time limit as beginning)	0.00 	No
This will add more time once the capture point is taken.
== Step 5 - Team victory ==
Moving on to address the issue of the teams not being able to win.
=== Defending team ===
* You need to add a entity for this. Set the properties as the following:
::
Property Name 	Value
Name 	end_of_game
Team 	Red
Force map reset 	Yes
Switch teams on map win?	Yes
* Now, go back to the team_round_timer and add an output:
::
	My Output 	Target Entity	Target Input	Parameter	Delay	Only Once
	OnFinished	end_of_game 	RoundWin 	<none> 	0.00 	No
=== Attacking team ===
* The issue of BLU not being able to win is a little bit simpler. Add another game_round_win entity with the following properties:
::
Property Name 	Value
Name 	blue_win
Team 	Blue
Force map reset 	Yes
Switch teams on map win?	Yes
* For the very last trigger_capture_area of the very last round, add an output:
::
	My Output 	Target Entity	Target Input	Parameter	Delay	Only Once
	OnCapTeam2	blue_win 	RoundWin 	<none> 	0.00 	No
== See also ==
* Team Fortress 2 Level Creation
Category:Level Design
Creating