Trouble in Terrorist Town: Level Creation

From Valve Developer Community
Revision as of 12:00, 19 March 2024 by Strubium (talk | contribs) (pain (Add Keyvalues))
Jump to navigation Jump to search
Icon-edit.png
This is currently being rewritten.
You can discuss the changes here.

A Level Creation Guide for Template:Game name For general mapping tutorials, see Category:Level Design
For Template:Game name see here

You need for Trouble in Terrorist Town:

Getting Started

Special Objects


Making maps for Template:Game name is essentially the same as creating maps for other Source Source games with a few exceptions. TTT has its fgd file available here which includes gamemode-specific entities. Vague descriptions of these entities, the fgd, as well as a few map examples are available at https://www.troubleinterroristtown.com/development/mapping/

However, due to the map help forums being down, it is mostly up to YouTube videos, and scattered tutorials throughout different forums that developers use to get help for specific things. This page is being worked on starting September 2016, so it is the most recent.

This page will give detailed descriptions of each entity included in the FGD, instructions on how to modify the FGD for various reasons, how to set up Hammer Hammer and test your map, and tutorials on various gamemode-specific entities and logic.

As this page is edited, feel free to request tutorials/anything else needed on the discussion page of this post

Entities

Todo: Move these entities to their own pages

ttt_credit_adjust

This point entity is used within map logic to give or take credits away from a Detective or Traitor player. When activated, it tries to remove (or give) the specified number of credits from the !activator. If the entity successfully adjusts the amount of credits, it will fire its output OnSuccess. If it fails to adjust credits, it will fire its output OnFail. If credits away, the entity will never fire OnFail.

Keyvalues

Credits ([todo internal name (i)]) <integer>
The amount of credits to take. This can be set to a negative value to give the !activator credits.


A practical example of this entity is to have a Traitor room door that will only open if the activator spends 1 credit. This would be done by having a ttt_traitor_button with logic as follows.

My Output Named: OnPressed, Targets entities named: ttt_credit_adjust, Via this input: TakeCredits, Parameters: none.

Then on the ttt_credit_adjust, with the credit amount set to 1, have outputs as follows.

My Output Named: OnSuccess, Targets entites named: traitorroom_door, Via this input: Open, Parameters: none.

When the player presses the button, they become the !activator of the chain. When the button tells the credit to adjust to take credits it attempts to take a credit from the !activator. If it succeeds in taking this credit, it fires the output, telling the door to open.

ttt_damageowner

This point entity is useful for correctly attributing damage to the player that activated a series of events. Traitor traps are an example of this. If a player activates a traitor trap with this entity set up correctly, then the !activator of the trap will be credited with the kill in the post-round logs. It is worth noting that karma will be correctly adjusted for any damage attributed to this entity. Whatever trigger is used to activate a trap, it is important that it also fires the output to the ttt_damageowner with the input of SetActivatorAsDamageOwner. This means that anybody who takes damage from the target entity will now be taking damage from the !activator.

Keyvalues

Target Entity ([todo internal name (i)]) <integer>
The name of the entity that will have its damage owner and round report name specified. You want to set this to whatever entity is dealing the damage.


Target entity's name in the round report - This will show up as how people are killed in the post-round report. For example: if set to "A giant goldfish" the postround report will say: "Jellydonut78 was killed by John using a giant goldfish."

ttt_game_text

This point entity is used to display a game message in the top right corner of the screen where TTT gamemode messages and information normally appear. You can set the message to be displayed to: The activator only, all players, detectives only, traitors only, or all except traitors (Be careful with this. You do not want to display a message that will allow people to figure out who traitors are). It can be placed anywhere in the map and will only display its message when it receives the 'Display' input.

Keyvalues

Players that should receive the message ([todo internal name (i)]) <integer>
What player/group of player receives message (See above)
Message Text ([todo internal name (i)]) <string>
The message to be displayed
Color ([todo internal name (i)]) <color255>
The color of the message


ttt_logic_role

This point entity is used to test the role of the !activator. You set what role to test for. If the !activator of the ttt_logic_role is the specified role, then the entity will fire a OnPass output, if it is not the correct role it will fire OnFail. It is VERY important to note that you do not want to set a button to start the test because that will test whoever presses the button. Instead, use a button to enable a trigger_multiple that will in turn fire the test output. This ensures that whoever is in the specific zone is the !activator. It is recommended to use this entity rather than the brush entity ttt_traitor_check, but may not work depending on some tester designs.

Keyvalues

Player role to test for ([todo internal name (i)]) <integer>
What role the entity will fire OnPass for. Can be either Innocent, Detective, Traitor, or Any Role.


ttt_map_settings

This entity is used for changing settings for your map. It can also force a player model. Map settings also has 4 outputs which are extremely useful: MapSettingsSpawned, RoundStart, Preparation Start, and RoundEnd. This is useful for things that shouldn't be useable until round start and similar.