Trouble in Terrorist Town Mapping

Making maps for Trouble in Terrorist Town is essentially the same as creating maps for other games with a few exceptions. TTT has its own fgd file named TTT.fgd which includes gamemode specific entities. Vague descriptions of these entities, the fgd, as well as a few map examples are available at
http://ttt.badking.net/mapping-guide
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 setup 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 ==
=== 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 giving credits away, the entity will never fire OnFail.
Properties
Targetname - The name that other entities refer to this entity by.
Origin - Position of entity's center in the map.
Credits - 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.
Properties
Targetname - The name that other entities refer to this entity by.
Origin - Position of entity's center in the map.
Target Entity - 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.
Properties
Targetname - The name that other entities refer to this entity by.
Players that should receive the message - What player/group of player receives message (See above)
Message Text - The message to be displayed
Color - Standard RGB color codes. Be careful that you only choose a color that will be easily visible. Some maps are brighter and have colored backgrounds that will be hard to read messages on.
===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.
Properties
Targetname - The name that other entities refer to this entity by.
Origin - Position of entity's center in the map.
Pitch Yaw Roll (Y X Z) - Entity's orientation in the map. This should not affect anything so leave it all at 0.
Player role to test for - 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.