Create a invade and defend map for Team Fortress Classic
January 2024
You can help by adding links to this article from other relevant articles.
January 2024
Introduction
In a Sequential Control map one team are the Attackers and the other the Defenders. The Attacking team must eventually capture the Defending team's HQ by first securing other command points. Examples of this style of map are Dustbowl and Avanti.
Game Setup Entities
Every Team Fortress Classic map requires an info_tfdetect
entity so that it can be distinguished from a normal Half-Life map. The other entities that are required are seperate spawn-points for each team - these will be covered later. There also needs to be one info_player_start
.
info_tfdetect
Attribute | Value |
---|---|
Team 1 VGUI menu name (team1_name/) | #Dustbowl_team1
|
Team 2 VGUI menu name (team2_name) | #Dustbowl_team2
|
The above controls the name of teams 1 & 2. The Dustbowl_team1 and Dustbowl_team2 come from the titles.txt in the halflife/tfc directory. Red is team 1 and Blue is team 2
info_player_start
This can be placed anywhere in the map. A player entering the game starts here, before joining a team. Use the Angle: and the Pitch Yaw Roll (Y Z X) to point towards whatever you want the player to see.
State Goals
The below goals are all info_tfgoal_timer
's.
They give the defenders points every minute and inform the players how much time is left.
Defenders Points
This goal gives the Defenders 5 points every minute. The map lasts for 26 minutes, but this goal is not activated when the gates are down (when the attackers are not allowed out), so the total points given out will be the same as the total points the attackers can get from capturing all command points.
Attribute | Value |
---|---|
Goal # (goal_no) | 22
|
Red point gain (increase_team2) | 5
|
Time between activations (search_time) | 60
|
5 Minutes Left
The goals below are activated near the end of the game, telling the players how long is left.
Attribute | Value |
---|---|
Activation Message-center print (broadcast) | #dustbowl_five_minutes_left
|
Speak (global) | !dust_5min
|
Time between activations (search_time) | 1260
|
4 Minutes Left
Attribute | Value |
---|---|
Activation Message-center print (broadcast) | #dustbowl_four_minutes_left
|
Time between activations (search_time) | 1320
|
3 Minutes Left
Attribute | Value |
---|---|
Activation Message-center print (broadcast) | #dustbowl_three_minutes_left
|
Time between activations (search_time) | 1380
|
2 Minutes Left
Attribute | Value |
---|---|
Activation Message-center print (broadcast) | #dustbowl_two_minutes_left
|
Time between activations (search_time) | 1440
|
60 Seconds Left
Attribute | Value |
---|---|
Activation Message-center print (broadcast) | #dustbowl_sixty_seconds_left
|
Time between activations (search_time) | 1500
|
30 Seconds Left
Attribute | Value |
---|---|
Activation Message-center print (broadcast) | #dustbowl_thirty_seconds_left
|
Time between activations (search_time) | 1500
|
Starting Entities
This part of the tutorial focuses on the entities that control the opening of the gates at the start of the map. These gates will stop the Attackers from getting out straight away, giving the Defenders a chance to set up a defense.
trigger_auto
Attribute | Value |
---|---|
Target (target) | gate_1_mm
|
Trigger State (triggerstate) | On
|
This entity is activated as soon as the map starts because its Trigger State is set to on.
multi_manager
Attribute | Value |
---|---|
Name (targetname)(targetname) | gate_1_mm
|
gate_1 | 90
|
start | 90
|
90_second_warning | 5
|
60_second_warning | 30
|
30_second_warning | 60
|
10_second_warning | 80
|
Warning sounds
These info_tfgoals
set up the sounds that tell the players how long it is until the gates open.
They are basically identical, but with different activation messages.
90 Seconds
Attribute | Value |
---|---|
Name (targetname)(targetname) | 90_second_warning
|
Play Sound Path/name.wav (noise) | misc/talk.wav
|
Activation Message-center print (broadcast) | #dustbowl_90_secs
|
Goal Effects bitfields (goal_effects) | 9
|
60 Seconds
Attribute | Value |
---|---|
Name (targetname)(targetname) | 60_second_warning
|
Play Sound Path/name.wav (noise) | misc/talk.wav
|
Activation Message-center print (broadcast) | #dustbowl_60_secs
|
Goal Effects bitfields (goal_effects) | 9
|
30 Seconds
Attribute | Value |
---|---|
Name (targetname)(targetname) | 30_second_warning
|
Play Sound Path/name.wav (noise) | misc/talk.wav
|
Activation Message-center print (broadcast) | #dustbowl_30_secs
|
Goal Effects bitfields (goal_effects) | 9
|
10 Seconds
Attribute | Value |
---|---|
Name (targetname)(targetname) | 10_second_warning
|
Play Sound Path/name.wav (noise) | misc/talk.wav
|
Activation Message-center print (broadcast) | #dustbowl_10_secs
|
Goal Effects bitfields (goal_effects) | 9
|
Gates Open
This goal activates the multi_manager
that controls the message that is played as the gates open.
Attribute | Value |
---|---|
Name (targetname)(targetname) | start
|
Target entity with this targetname (target) | sirensound_mm
|
Play Sound Path/name.wav (noise) | misc/talk.wav
|
Activation Message-center print (broadcast) | #dustbowl_gates_open
|
Goal Effects bitfields (goal_effects) | 9
|
Sirensound Setup
These entities set up the sound that tells the players that the gates are open. A normal door sound will only play in a certain radius; any player outside of that radius will not hear the door open. Doing it this way means that all the players in the game will know when the gates open.
multi_manager
Attribute | Value |
---|---|
Name (targetname)(targetname) | sirensound_mm
|
sirensound | 0
|
sirensound#1 | 4
|
gatestart | 0
|
gatestop | 0.9
|
ambient_generic 1
Attribute | Value |
---|---|
Name (targetname)(targetname) | sirensound
|
WAV Name (message) | ambience/siren.wav
|
Fade out time (0-100) (fadeout) | 50
|
Flags: Play Everywhere & Start Silent are ticked.
ambient_generic 2
Attribute | Value |
---|---|
Name (targetname)(targetname) | gatestart
|
WAV Name (message) | doors/doormove8.wav
|
Flags: Play Everywhere, Start Silent & Is NOT Looped are ticked.
ambient_generic 3
Attribute | Value |
---|---|
Name (targetname)(targetname) | gatestop
|
WAV Name (message) | doors/doorstop8.wav
|
Fade out time (0-100) (fadeout) | 50
|
Flags: Play Everywhere, Start Silent & Is NOT Looped are ticked.
func_door
These are the gates that open after 90 seconds, letting play begin!
Attribute | Value |
---|---|
Name (targetname)(targetname) | gate_1
|
Angle: | Up
|
Goal Activation bitfields (goal_activation) | 1
|
delay before close, -1 stay open (wait) | -1
|
Lip (lip) | -1
|
Speed (speed) | 150
|
Capture Point 1
This part of the tutorial focuses on the first capture point and the events that happen after that. These events are the respawns being changed, everybody being forced to respawn and stopping the Defenders from scoring.
i_t_g
This is the place where the first flag must be brought to.
Attribute | Value |
---|---|
Entity Reference name (for logging) (netname) | Capture Point 1
|
Goal # (goal_no) | 11
|
Team allowed to use goal (team_no) | Blue
|
Has item # (items_allowed) | 1 (the Goal # of the first flag)
|
Stay active(sec), -1 stays (wait) | 10
|
Remove item from APA (axhitme) | 1 (The first flag)
|
Target entity with this targetname (target) | cap1
|
Add/Subtract frags (frags) | 30
|
Add/Subtract health (health) | 100
|
Armor Value % (armor_value) | 300
|
Blue point gain (increase_team1) | 30
|
Owned by-for msg & item glow (owned_by) | Blue
|
Message to A.Player-center print (message) | #dustbowl_you_secure_one
|
Console msg, %s = AP name (netname_broadcast) | #dustbowl_blue_secures_one
|
Global Speak (speak) | !DUST_CP1
|
Goal Result bitfields (goal_result) | 1 - remove immediately
|
multi_manager
This controls all the goals that move spawn points etc.
Attribute | Value |
---|---|
Name (targetname)(targetname) | cap1 |
gate_2 | 4
|
gate_3 | 90
|
move_spawns_1 | 0
|
force_respawn | 4
|
pause_scoring | 0
|
resume_scoring | 90
|
90_second_warning | 4
|
60_second_warning | 30
|
30_second_warning | 60
|
10_second_warning | 80
|
Gates
These are the gates (func_door
) that were targetted by the above multi_manager
.
Gate 2
This gate stops the players from getting to the first area of the map. Place this door where you want it to be when it is closed ie. so it stops the players. The Starts open flag is ticked so it will start open at the start of the game so players can get past it.
Attribute | Value |
---|---|
Name (targetname)(targetname) | gate_2 |
Angle: | Down
|
delay before close, -1 stay open (wait) | -1
|
Lip (lip) | -32
|
Damage inflicted when blocked (dmg) | 10000 (so the player would not be able to block the door without dying instantly)
|
Speed (speed) | 300
|
Flags: Starts Open is ticked.
Gate 3
This gate stops the attackers from attacking straight away so that the Defenders have time to set up.
Attribute | Value |
---|---|
Name (targetname)(targetname) | gate_3 |
Angle: | Up
|
delay before close, -1 stay open (wait) | -1
|
Lip (lip) | -32
|
Speed (speed) | 150
|
Capture Point 1 Goals
These are the goals that are activated by the multi_manager above, when the attacking team secure cap point 1.
Move Spawns 1
Attribute | Value |
---|---|
Name (targetname)(targetname) | move_spawns_1 |
Remove Spawn group # (remove_spawngroup) | 1
|
Restore Spawn group (restore_spawngroup) | 2
|
Force Respawn 1
This goal removes the first flag from the player holding it, respawns all the players, and since the spawns have been moved, they respawn at new places.
Attribute | Value |
---|---|
Name (targetname)(targetname) | force_respawn |
Remove item from APA (axhitme) | 1
|
Goal Effects bitfields (goal_effects) | 9
|
Goal Result bitfields (goal_result) | 112
|
Stop Defenders Scoring
This goal stops the Defenders from scoring during the time that the gates are closed.
Attribute | Value |
---|---|
Name (targetname)(targetname) | pause_scoring |
Remove goal # (remove_goal_no) | 22
|
Restart Defenders Scoring
This goal lets the Defenders start scoring again, since the gates are now open.
Attribute | Value |
---|---|
Name (targetname)(targetname) | resume_scoring |
Remove goal # (remove_goal_no) | 22
|
Capture Point 2
This part of the tutorial focuses on the second capture point and the events that happen after that. These events are, as before, the respawns being changed, everybody being forced to respawn and stopping the Defenders from scoring.
i_t_g
This is the place where the second flag must be brought to.
Attribute | Value |
---|---|
Entity Reference name (for logging) (netname) | Capture Point 2
|
Goal # (goal_no) | 12
|
Team allowed to use goal (team_no) | Blue
|
Has item # (items_allowed) | 2 (the Goal # of the first flag)
|
Stay active(sec), -1 stays (wait) | 10
|
Remove item from APA (axhitme) | 2 (The second flag)
|
Target entity with this targetname (target) | cap2
|
Add/Subtract frags (frags) | 30
|
Add/Subtract health (health) | 100
|
Armor Value % (armor_value) | 300
|
Blue point gain (increase_team1) | 30
|
Owned by-for msg & item glow (owned_by) | Blue
|
Message to A.Player-center print (message) | #dustbowl_you_secure_two
|
Console msg, %s = AP name (netname_broadcast) | #dustbowl_blue_secures_two
|
Global Speak (speak) | !DUST_CP2
|
Goal Result bitfields (goal_result) | 1 - remove immediately
|
multi_manager
This controls all the goals that move spawn points etc.
Attribute | Value |
---|---|
Name (targetname)(targetname) | cap2 |
gate_2 | 4
|
gate_3 | 90
|
move_spawns_1 | 0
|
force_respawn | 4
|
pause_scoring | 0
|
resume_scoring | 90
|
90_second_warning | 4
|
60_second_warning | 30
|
30_second_warning | 60
|
10_second_warning | 80
|
Gates
These are the gates (func_door
) that were targetted by the above multi_manager
.
Gate 4
This gate stops the players from getting to the first area of the map. Place this door where you want it to be when it is closed ie. so it stops the players. The Starts open flag is ticked so it will start open at the start of the game so players can get past it.
Attribute | Value |
---|---|
Name (targetname)(targetname) | gate_4 |
Angle: | Down
|
delay before close, -1 stay open (wait) | -1
|
Lip (lip) | -32
|
Speed (speed) | 150
|
Flags: Starts Open is ticked.
Gate 5
This gate stops the attackers from attacking straight away so that the Defenders have time to set up.
Attribute | Value |
---|---|
Name (targetname)(targetname) | gate_5 |
Angle: | Up
|
delay before close, -1 stay open (wait) | -1
|
Lip (lip) | -32
|
Speed (speed) | 150
|
Capture Point 2 Goals
These are the goals that are activated by the multi_manager
above.
The only ones not shown here are the warning sounds and the goals that Stop/Restart Defenders scoring since these are already made.
Move Spawns 2
Attribute | Value |
---|---|
Name (targetname)(targetname) | move_spawns_2 |
Remove Spawn group # (remove_spawngroup) | 2
|
Restore Spawn group (restore_spawngroup) | 3
|
Force Respawn 2
Attribute | Value |
---|---|
Name (targetname)(targetname) | force_respawn_2 |
Remove item from APA (axhitme) | 2
|
Goal Effects bitfields (goal_effects) | 9
|
Goal Result bitfields (goal_result) | 112
|
Capture Point 3
This part of the tutorial focuses on the third capture point and the end of the map, where either the attackers win by capturing the base, or the defenders win by keeping the attackers away.
i_t_g
This is the place where the final flag must be brought to.
Attribute | Value |
---|---|
Entity Reference name (for logging) (netname) | Capture Point 3
|
Goal # (goal_no) | 13
|
Team allowed to use goal (team_no) | Blue
|
Has item # (items_allowed) | 3 (the Goal # of the third flag)
|
Stay active(sec), -1 stays (wait) | 10
|
Remove item from APA (axhitme) | 3 (The third flag)
|
Target entity with this targetname (target) | cap3
|
Add/Subtract frags (frags) | 50
|
Add/Subtract health (health) | 100
|
Armor Value % (armor_value) | 300
|
Blue point gain (increase_team1) | 50
|
Owned by-for msg & item glow (owned_by) | Blue
|
Goal Result bitfields (goal_result) | 1 - remove immediately
|
multi_manager
The target of the 3rd capture point.
Attribute | Value |
---|---|
Name (targetname)(targetname) | cap3 |
end_game | 3
|
win_message | 1
|
info_tfgoal_timer
After 1560 seconds (26 mins) this goal is activated, which means that the Defenders have won. If the Attackers had won, then the map would have already finished so this goal would not have been activated.
Attribute | Value |
---|---|
Target entity with this targetname(target) | lose_mm |
Time between activations (search_time) | 1560
|
multi_manager
The target of the above info_tfgoal_timer.
Attribute | Value |
---|---|
end_game | 2 |
lose_message | 0
|
End Game Goals
Defenders Win
This goal is activated by the above multi_manager
, if the Attackers have not captured the final base.
Attribute | Value |
---|---|
Name (targetname)(targetname) | lose_message |
Activation Message-center print (broadcast) | #dustbowl_red_defends
|
Global speak (speak) | !DUST_HOLD
|
Attackers Win
This informs the teams that the Attackers have won.
Attribute | Value |
---|---|
Name (targetname)(targetname) | win_message |
Console msg, %s = AP name (netname_broadcast) | #dustbowl_blue_caps
|
Global speak (speak) | !DUST_CAP
|
End Game
Attribute | Value |
---|---|
Name (targetname)(targetname) | end_game |
Goal Result bitfields (goal_result) | 4 - scores, intermission, end
|
Flags
This part of the tutorial shows you how to make each of the three flags.
Flag 1
item_tfgoal
The first flag.
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Flag 1 |
Item # (goal_no) | 1
|
Model Path/name.mdl (mdl) | models/flag.mdl
|
Model skin-varies per model (skin) | 2
|
Team allowed to use goal (team_no) | Blue
|
Owned by-for msg & item glow (owned_by) | Blue
|
Goal Activation Bitfields (goal_activation) | 676 (This value is determined by adding up the correct bit-fields)
|
Percentage of full speed (pausetime) | 75
|
Pause (stays on ground) seconds (pausetime) | 75
|
Activate/Restore goal on return (impulse) | 300 (the goal # of the first flag info_tfgoal)
|
Goal Result bitfields (goal_result) | 16 - Prevent Spy disguise (This will cause an enemy spy to lose their disguise when they pick up the flag)
|
Highlight HUD items bitvalue (items) | Blue Logo
|
Message to A.Player-center print (message) | #dustbowl_take_flag_one
|
Return to start msg, team (noise3) | #2fort_your_flag_returned
|
Return to start msg, owners (noise4) | #2fort_enemy_flag_returned
|
info_tfgoal
This info_tfgoal controls the messages that are printed on screen when the second flag is returned after being dropped by a player.
Attribute | Value |
---|---|
Goal # (goal_no) | 300 |
Team allowed to use goal (team_no) | Red
|
If goal # inactive (if_goal_is_inactive) | 11 (This is the goal # of the first capture spot. This goal will only work when the first capture spot is inactive.)
|
Owned by-for msg & item glow (owned_by) | Blue
|
Activation Message-center print (broadcast) | #dustbowl_flag_returned
|
Speak (non AP team) (non_team_speak) | !CTF_EFLAGBACK
|
Speak (owners team) (team_speak) | !CTF_FLAGBACK
|
Flag 2
item_tfgoal
The second flag.
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Flag 2 |
Item # (goal_no) | 2
|
Model Path/name.mdl (mdl) | models/flag.mdl
|
Model skin-varies per model (skin) | 2
|
Team allowed to use goal (team_no) | Blue
|
Owned by-for msg & item glow (owned_by) | Blue
|
Goal Activation Bitfields (goal_activation) | 676 (This value is determined by adding up the correct bit-fields)
|
Percentage of full speed (pausetime) | 75
|
Pause (stays on ground) seconds (pausetime) | 75
|
Activate/Restore goal on return (impulse) | 301 (the goal # of the first flag info_tfgoal)
|
Goal Result bitfields (goal_result) | 16 - Prevent Spy disguise (This will cause an enemy spy to lose their disguise when they pick up the flag)
|
Highlight HUD items bitvalue (items) | Blue Logo
|
Message to A.Player-center print (message) | #dustbowl_take_flag_two
|
Return to start msg, team (noise3) | #2fort_your_flag_returned
|
Return to start msg, owners (noise4) | #2fort_enemy_flag_returned
|
info_tfgoal
This info_tfgoal controls the messages that are printed on screen when the second flag is returned after being dropped by a player.
Attribute | Value |
---|---|
Goal # (goal_no) | 301 |
Team allowed to use goal (team_no) | Red
|
If goal # inactive (if_goal_is_inactive) | 11 (This is the goal # of the second capture spot. This goal will only work when the second capture spot is inactive.)
|
Owned by-for msg & item glow (owned_by) | Blue
|
Activation Message-center print (broadcast) | #dustbowl_flag_returned
|
Speak (non AP team) (non_team_speak) | !CTF_EFLAGBACK
|
Speak (owners team) (team_speak) | !CTF_FLAGBACK
|
Flag 3
item_tfgoal
The third flag.
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Flag 3 |
Item # (goal_no) | 3
|
Model Path/name.mdl (mdl) | models/flag.mdl
|
Model skin-varies per model (skin) | 2
|
Team allowed to use goal (team_no) | Blue
|
Owned by-for msg & item glow (owned_by) | Blue
|
Goal Activation Bitfields (goal_activation) | 676 (This value is determined by adding up the correct bit-fields)
|
Percentage of full speed (pausetime) | 75
|
Pause (stays on ground) seconds (pausetime) | 75
|
Activate/Restore goal on return (impulse) | 302 (the goal # of the first flag info_tfgoal)
|
Goal Result bitfields (goal_result) | 16 - Prevent Spy disguise (This will cause an enemy spy to lose their disguise when they pick up the flag)
|
Highlight HUD items bitvalue (items) | Blue Logo
|
Message to A.Player-center print (message) | #dustbowl_take_flag_HQ
|
Return to start msg, team (noise3) | #2fort_your_flag_returned
|
Return to start msg, owners (noise4) | #2fort_enemy_flag_returned
|
info_tfgoal
This info_tfgoal controls the messages that are printed on screen when the third flag is returned after being dropped by a player.
Attribute | Value |
---|---|
Goal # (goal_no) | 302 |
Team allowed to use goal (team_no) | Red
|
If goal # inactive (if_goal_is_inactive) | 13 (This is the goal # of the second capture spot. This goal will only work when the second capture spot is inactive.)
|
Owned by-for msg & item glow (owned_by) | Blue
|
Activation Message-center print (broadcast) | #dustbowl_flag_returned
|
Speak (non AP team) (non_team_speak) | !CTF_EFLAGBACK
|
Speak (owners team) (team_speak) | !CTF_FLAGBACK
|
Spawnpoints
This part of the tutorial shows how to set up the spawn points that are needed. They are a slightly different setup than a CTF map. You will need 6 sets of spawnpoints altogether, 3 for the Defenders and 3 for the Attackers. The spawnpoints change after the first and second flags are captured.
All the spawnpoints are the info_player_teamspawn
entity.
Spawn Points 1
These spawn points are where the players start for the first capture point, at the start of the game. Make at least 12 per team.
Blue 1
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Blue Spawn 1 |
Spawn Group # (group_no) | 1
|
Team allowed to spawn here (team_no) | Blue
|
Activate goal # (activate_goal_no) | 100
|
Goal activation (goal_activation) | 3 - all get item/messages
|
Pass AP to Activated Goals? (goal_result) | Yes
|
Red 1
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Red Spawn 1 |
Spawn Group # (group_no) | 1
|
Team allowed to spawn here (team_no) | Blue
|
Activate goal # (activate_goal_no) | 200
|
Goal activation (goal_activation) | 3 - all get item/messages
|
Pass AP to Activated Goals? (goal_result) | Yes
|
Spawn Points 2
These spawn points are where the players start for the second capture point, after the first Cap Point was captured. Make at least 12 per team.
Blue 2
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Blue Spawn 2 |
Spawn Group # (group_no) | 2
|
Initial State (goal_state) | Removed
|
Team allowed to spawn here (team_no) | Blue
|
Activate goal # (activate_goal_no) | 100
|
Goal activation (goal_activation) | 3 - all get item/messages
|
Pass AP to Activated Goals? (goal_result) | Yes
|
Red 2
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Red Spawn 2 |
Spawn Group # (group_no) | 2
|
Initial State (goal_state) | Removed
|
Team allowed to spawn here (team_no) | Blue
|
Activate goal # (activate_goal_no) | 200
|
Goal activation (goal_activation) | 3 - all get item/messages
|
Pass AP to Activated Goals? (goal_result) | Yes
|
Spawn Points 3
These spawn points are where the players start for the third capture point, after the second Cap Point was captured. Make at least 12 per team.
Blue 3
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Blue Spawn 3 |
Spawn Group # (group_no) | 3
|
Initial State (goal_state) | Removed
|
Team allowed to spawn here (team_no) | Blue
|
Activate goal # (activate_goal_no) | 100
|
Goal activation (goal_activation) | 3 - all get item/messages
|
Pass AP to Activated Goals? (goal_result) | Yes
|
Red 3
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Red Spawn 3 |
Spawn Group # (group_no) | 2
|
Initial State (goal_state) | Removed
|
Team allowed to spawn here (team_no) | Blue
|
Activate goal # (activate_goal_no) | 200
|
Goal activation (goal_activation) | 3 - all get item/messages
|
Pass AP to Activated Goals? (goal_result) | Yes
|
Spawn Stuff
These info_tfgoal
's are activated when a player spawns, giving each player their starting armor & ammo.
Goal 100
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Blue Team Spawn Stuff |
Goal # (goal_no) | 100
|
Armor Value % (armorvalue) | 200
|
Armor Class (armortype) | Normal
|
Add/Subtract shells (ammo_shells) | 200
|
Add/Subtract nails (ammo_nails) | 200
|
Add/Subtract rockets (ammo_rockets) | 30
|
Add/Subtract cells (ammo_cells) | 50
|
Add/Subtract grenades #1 (no_grenades_1) | 4
|
Add/Subtract grenades #2 (no_grenades_2) | -4
|
Message to A.Player-center print (message) | #dustbowl_bring_flag
|
Goal 200
Attribute | Value |
---|---|
Entity reference name (for logging) (netname) | Red Team Spawn Stuff |
Goal # (goal_no) | 200
|
Armor Value % (armorvalue) | 200
|
Armor Class (armortype) | Normal
|
Add/Subtract shells (ammo_shells) | 200
|
Add/Subtract nails (ammo_nails) | 200
|
Add/Subtract rockets (ammo_rockets) | 30
|
Add/Subtract cells (ammo_cells) | 50
|
Add/Subtract grenades #1 (no_grenades_1) | 4
|
Add/Subtract grenades #2 (no_grenades_2) | -4
|
Message to A.Player-center print (message) | #dustbowl_protect_HQ
|
Miscellaneous
In Dustbowl, when a capture point is captured, the signs around it change to show the Blue logo, and the actual cap-point changes - a Blue logo rises up and the poles disappear into the ground.
Most of the things that you want to happen when a capture point is captured can be controlled by the multi_manager
that is targetted, eg. cap1
For this part of the tutorial there will be signs that change team, and a block that comes up covering the 1st capture point. (like in Dustbowl) These can easily be changed to work for the other capture points and can be changed for the effect you want.
Signs
Each sign consists of 2 func_wall_toggle, one that starts invisible.
Create a func_wall_toggle
with the Red Team texture :
Attribute | Value |
---|---|
Name (targetname) (targetname) | cap1sign |
Now, create another one, in exactly the same position as the other, but with the Blue Team texture:
Attribute | Value |
---|---|
Name (targetname) (targetname) | cap1sign |
Flags: Starts Invisible is ticked.
Now in the cap1 multi_manager add this:
Attribute | Value |
---|---|
cap1sign | 0 |
When the cap-point is captured, the multi_manager is targetted, which then targets the cap1sign func_wall_toggle's, one which turns invisible (Red Texture) and one which appears (Blue Texture).
Moving Capture Point
This is done using a func_door
.
Create a func_door in the place that you want it to end up ie. covering the cap-point. Change these properties:
Attribute | Value |
---|---|
Name (targetname) (targetname) | cap1move |
Angle: | Down
|
Delay before close, -1 stay open (wait) | -1
|
Lip (lip) | -16
|
Damage inflicted when blocked (dmg) | -1
|
Lip (lip) | 1000 (So that a player blocking it dies instantly)
|
Speed (speed) | 30
|
Move Sound (movesnd) | Large rollers
|
Stop Sound (stopsnd) | Light airbrake
|
Flags: Starts Open is ticked.
Lastly, in the cap1 multi_manager, add this:
Attribute | Value |
---|---|
cap1move | 0 |
When the multi_manager is activated it immediately targets the func_door (which starts open) making it move to cover the cap-point.
Other effects can be created in the same way. Make the effect that you want eg. ambient_generic to add sound, env_sprite to add explosions. Just call these a certain name and add that name to the multi_manager.
Spawnpoints
In Dustbowl, after the first cap-point is captured the Attackers spawn in what was, previously, the Defenders respawn room.
This is not hard to make, just have 2 sets off spawnpoints in the same room, 1 for Defenders (spawn group 1) and 1 for Attackers (spawn group 2).
However, flag 2 starts in this room, and the Defenders should not be able to see it during round 1.
This is simply overcome by making a func_wall_toggle
which covers the flag during round 1, when the Defenders spawn there, but which disappears when the Attackers spawn there for round 2.
Just call it cap1sign and it will disappear at the same time as the signs, above, change.
Timer Bar
In the respawns in Dustbowl, there are red bars which decrease showing how much time is left. They are simply func_doors which move very slowly.
Make a func_door
144 units long and change these:
Attribute | Value |
---|---|
Name (targetname) (targetname) | timerbar |
delay before close, -1 stay open (wait) | -1
|
Damage inflicted when blocked (dmg) | 10000
|
Speed (speed) | 0.1
|
This works for a 26 minute game. If your map lasts longer then change the speed or the length of the bar to suit.
The timerbar must also be targetted as soon as the map starts, so add a trigger_auto
:
Attribute | Value |
---|---|
Target (target) | timerbar |
Trigger State (triggerstate) | On
|
This will target the timerbar as soon as the map starts.
Messages
These are the text and voice messages that could be heard in the game.
Text Messages
These are some of the entries from the titles.txt in the halflife/tfc folder.
dustbowl_you_secure_one You secured Command Point ONE!! dustbowl_you_secure_two You secured Command Point TWO !! dustbowl_protect_HQ Protect your HQ from the Blue Team !! dustbowl_bring_flag Bring your flag to Red's HQ !! dustbowl_take_flag_one Take the flag to Command Point ONE. dustbowl_take_flag_two Take the flag to Command Point TWO. dustbowl_take_flag_HQ Take the flag to Red's HQ! dustbowl_grenades Grenades!! dustbowl_blue_secures_one Blue Team Secures Command Point ONE !! dustbowl_blue_secures_two Blue Team Secures Command Point TWO !! dustbowl_flag_returned Flag has returned to base dustbowl_blue_caps Blue team captured Red's Headquarters! dustbowl_90_secs 90 seconds till gates open. dustbowl_60_secs 60 seconds till gates open. dustbowl_30_secs 30 seconds till gates open. dustbowl_10_secs 10 seconds till gates open. dustbowl_gates_open Gates are open !!. dustbowl_red_defends Red team successfully defended their Headquarters! dustbowl_five_minutes_left Time remaining: Five minutes dustbowl_four_minutes_left Time remaining: Four minutes dustbowl_three_minutes_left Time remaining: Three minutes dustbowl_two_minutes_left Time remaining: Two minutes dustbowl_sixty_seconds_left Time remaining: Sixty seconds dustbowl_thirty_seconds_left Time remaining: Thirty seconds
Voice Messages
These are some of the entries from the sentences.txt in the halflife/tfc/sound folder.
DUST_CP1 Blue team secured command point one DUST_CP2 Blue team secured command point two DUST_HOLD red team holds red base DUST_CAP Blue team captured red base DUST_5MIN time remaining, five minutes DUST_4MIN time remaining, four minutes DUST_3MIN time remaining, three minutes DUST_2MIN time remaining, two minutes DUST_60SEC time remaining, sixty seconds DUST_30SEC time remaining, thirty seconds