<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://sigwiki.potato.tf/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.1.218</id>
	<title>SigMod - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://sigwiki.potato.tf/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.1.218"/>
	<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php/Special:Contributions/192.168.1.218"/>
	<updated>2026-06-11T13:22:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1497</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1497"/>
		<updated>2022-02-18T05:56:23Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporters, and engineer bot teleporters. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
The best red spawns aren’t obvious and let bots quickly navigate the map to hunt down players as efficiently as possible, regardless of the bomb path.    &lt;br /&gt;
&lt;br /&gt;
Spawning bots in easy to notice areas can break the illusion of RED having control over the map, and should be avoided unless done as a deliberate design choice.  On the flipside, spawning bots miles away from the player or making them take needlessly long routes to join the fight is equally problematic and will ruin wave pacing.  It’s important to strike a balance between these two extremes&lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas and place spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to progress through before deploying the bomb:  The front, the church tower/bridge area, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.   &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly robots is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.      &lt;br /&gt;
&lt;br /&gt;
It is recommended that VIP escorting objectives be very forgiving unless you specifically force the bot to only follow players.  Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.    &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and cover up holes in the map if there are any.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //invisible&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot; //solid collisions&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1496</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1496"/>
		<updated>2022-02-18T04:50:06Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporters, and engineer bot teleporters. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas and placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to progress through before deploying the bomb:  The front, the church tower/bridge area, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player in order to ensure they don&#039;t make too much progress too quickly, then waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this and place your spawns behind cover along the main bot path, letting bots navigate their way to the player themselves.  This serves multiple purposes:   &lt;br /&gt;
&lt;br /&gt;
* New sub-waves can be seamlessly blended into old ones easily, rather than abruptly ending and having new bots appear out of thin air.    &lt;br /&gt;
* It allows red bots to spread around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.    &lt;br /&gt;
* It better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
* If bots stray too far from players, they will not cause the wave to hang if &amp;lt;code&amp;gt;WaitForAllSpawned&amp;lt;/code&amp;gt; is used instead of &amp;lt;code&amp;gt;WaitForAllDead&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Due to the semi-random behavior of bots when navigating the map, different playthroughs will have minor pacing changes that can improve replay value &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  It is recommended that VIP escorting objectives be very forgiving.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and cover up holes in the map if there are any.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1495</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1495"/>
		<updated>2022-02-18T02:35:01Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporters, and engineer bot teleporters. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player in order to ensure players don&#039;t make too much progress too quickly, then waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this and place your spawns behind cover along the main bot path, letting bots navigate their way to the player themselves.  This serves multiple purposes:   &lt;br /&gt;
&lt;br /&gt;
* New sub-waves can be seamlessly blended into old ones easily, rather than abruptly ending and having new bots appear out of thin air.    &lt;br /&gt;
* It allows red bots to spread around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.    &lt;br /&gt;
* It better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
* If bots stray too far from players, they will not cause the wave to hang if &amp;lt;code&amp;gt;WaitForAllSpawned&amp;lt;/code&amp;gt; is used instead of &amp;lt;code&amp;gt;WaitForAllDead&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Letting bots swarm the map and not forcing fights onto players improves replay value and is less formulaic  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  It is recommended that VIP escorting objectives be very forgiving.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and cover up holes in the map if there are any.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CPasstimeGun&amp;diff=1494</id>
		<title>CPasstimeGun</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CPasstimeGun&amp;diff=1494"/>
		<updated>2022-02-17T03:26:41Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source location : /game/shared/tf/tf_weapon_passtime_gun.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linked entity : [https://developer.valvesoftware.com/wiki/tf_weapon_passtime_gun tf_weapon_passtime_gun]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==[[Classes|Class Structure]]==&lt;br /&gt;
*&#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;[[CBaseAnimating]]&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;[[CEconEntity]]&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;[[CBaseCombatWeapon]]&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;&#039;[[CTFWeaponBase]]&#039;&#039;&#039;&lt;br /&gt;
******&#039;&#039;&#039;CPasstimeGun&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&amp;quot;&lt;br /&gt;
|+CPasstimeGun &lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_eThrowState&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_fChargeBeginTime&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Float&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1359</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1359"/>
		<updated>2022-02-14T19:53:40Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Friendly Robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporters, and engineer bot teleporters. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  It is recommended that VIP escorting objectives be very forgiving.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and cover up holes in the map if there are any.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1358</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1358"/>
		<updated>2022-02-14T19:53:06Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Friendly Robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporters, and engineer bot teleporters. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  It is recommended that any lose conditions built around VIP escorting objectives be very forgiving    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and cover up holes in the map if there are any.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1357</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1357"/>
		<updated>2022-02-14T19:51:10Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Engineer Teleporter Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporters, and engineer bot teleporters. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives be very forgiving    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and cover up holes in the map if there are any.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=WaveSchedule&amp;diff=1356</id>
		<title>WaveSchedule</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=WaveSchedule&amp;diff=1356"/>
		<updated>2022-02-14T19:49:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Reverse MvM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Precache==&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
PrecacheSound &amp;quot;weapons/rocket_directhit_shoot_crit.wav&amp;quot; [$SIGSEGV] //If your mission contains custom sounds that are used by pointtemplate entities or sound overrides, you must include those sounds with precachesound&lt;br /&gt;
PrecacheScriptSound &amp;quot;Weapon_RPG.Single&amp;quot; [$SIGSEGV] //Sound script version of precache sound&lt;br /&gt;
PrecacheModel &amp;quot;models/props_soho/bookstand002.mdl&amp;quot; [$SIGSEGV] //Precaches model. This might be required in some circumstances, such as &amp;quot;custom projectile model&amp;quot; attribute, or prop with custom model&lt;br /&gt;
PrecacheSentenceFile &amp;quot;scripts/sentences.txt&amp;quot; [$SIGSEGV] //Precache sentence file&lt;br /&gt;
PrecacheDecal &amp;quot;decals/tscorch&amp;quot; [$SIGSEGV] //Precache decal file&lt;br /&gt;
PrecacheGeneric &amp;quot;&amp;quot; [$SIGSEGV] //Precache generic file&lt;br /&gt;
PrecacheParticle &amp;quot;env_fire_large_smoke&amp;quot; [$SIGSEGV] //Precache particle&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Precaching helps to ensure that the content used in the mission will be loaded propely and downloaded to the clients&lt;br /&gt;
&lt;br /&gt;
== Halloween ==&lt;br /&gt;
 ForceHoliday 2 [$SIGSEGV] //Enforces Halloween mode, but does not enable wave 666 and zombie bots&lt;br /&gt;
 NoThrillerTaunt 1 [$SIGSEGV] // No thriller taunt in halloween (default: 0)&lt;br /&gt;
 NoCritPumpkin 1 [$SIGSEGV] // No crit pumpkin on player death drop in halloween (default: 0)&lt;br /&gt;
 NoHolidayPickups 1 [$SIGSEGV] // If set, pickups will remain with default models (default: 0)&lt;br /&gt;
 ZombiesNoWave666 1 [$SIGSEGV] // If set to 1, the game will not display wave 666 when EventPopFile is set (default: 0)&lt;br /&gt;
 &lt;br /&gt;
 BotsDropSpells 1 [$SIGSEGV] //If set, bots will drop spells&lt;br /&gt;
 GiantsDropRareSpells 1 [$SIGSEGV] //If set, giants will drop rare spells rather than common&lt;br /&gt;
 SpellDropRateCommon 0.5 [$SIGSEGV] //Drop chance for common spell books, from 0 to 1&lt;br /&gt;
 SpellDropRateGiant 0.5 [$SIGSEGV] //Drop chance for rare spell books, from 0 to 1&lt;br /&gt;
 SpellDropForBotsInTeam Blue [$SIGSEGV] // When set, drop spells only if bots are from Red/Blue team&lt;br /&gt;
 SpellBookNormalRoll [$SIGSEGV] // Override spell roll. The value specifies how many spell charges to give. You can duplicate spells to increase their roll chance&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;Healing Aura&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Fireball&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Ball O&#039; Bats&amp;quot; 2&lt;br /&gt;
 	&amp;quot;Healing Aura&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Pumpkin MIRV&amp;quot; 1 &lt;br /&gt;
 	&amp;quot;Superjump&amp;quot; 4&lt;br /&gt;
 	&amp;quot;Invisibility&amp;quot; 2&lt;br /&gt;
 	&amp;quot;Teleport&amp;quot; 4&lt;br /&gt;
 	&amp;quot;Tesla Bolt&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Minify&amp;quot; 1&lt;br /&gt;
 	&amp;quot;Meteor Shower&amp;quot; 5&lt;br /&gt;
 	&amp;quot;Summon Monoculus&amp;quot; 1&lt;br /&gt;
 	&amp;quot;Summon Skeletons&amp;quot; 4&lt;br /&gt;
 }&lt;br /&gt;
 SpellBookRareRoll [$SIGSEGV] // Override spell roll. The value specifies how many spell charges to give. You can duplicate spells to increase their roll chance&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;Healing Aura&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Fireball&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Ball O&#039; Bats&amp;quot; 2&lt;br /&gt;
 	&amp;quot;Healing Aura&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Pumpkin MIRV&amp;quot; 1 &lt;br /&gt;
 	&amp;quot;Superjump&amp;quot; 4&lt;br /&gt;
 	&amp;quot;Invisibility&amp;quot; 2&lt;br /&gt;
 	&amp;quot;Teleport&amp;quot; 4&lt;br /&gt;
 	&amp;quot;Tesla Bolt&amp;quot; 3&lt;br /&gt;
 	&amp;quot;Minify&amp;quot; 1&lt;br /&gt;
 	&amp;quot;Meteor Shower&amp;quot; 5&lt;br /&gt;
 	&amp;quot;Summon Monoculus&amp;quot; 1&lt;br /&gt;
 	&amp;quot;Summon Skeletons&amp;quot; 4&lt;br /&gt;
 }&lt;br /&gt;
==Reverse MvM==&lt;br /&gt;
 ReverseWinConditions 1 [$SIGSEGV] //Player team wins if bots deliver the bomb.&lt;br /&gt;
 SetCreditTeam 3 [$SIGSEGV] //Sets which team can pickup money. Set to 3 to allow blu team to collect money instead&lt;br /&gt;
 BluHumanFlagCapture 1 [$SIGSEGV] //Can blu humans capture the flag&lt;br /&gt;
 BluHumanFlagPickup 1 [$SIGSEGV] //Can blu humans pickup flags&lt;br /&gt;
 BluHumanInfiniteAmmo 0 [$SIGSEGV] //Enable infinite ammo for blu humans (default: 1)&lt;br /&gt;
 BluHumanInfiniteCloak 1 [$SIGSEGV] //Enable infinite cloak for blu humans (default: 1)&lt;br /&gt;
 AllowJoinTeamBlueMax 4 [$SIGSEGV] //How many players can join the blue team&lt;br /&gt;
 AllowJoinTeamBlue 1 [$SIGSEGV] //If it is possible to join team blue&lt;br /&gt;
 HumansMustJoinTeam blue [$SIGSEGV] //Set to blue to force players join the blu team&lt;br /&gt;
 BluPlayersAreRobots 1 [$SIGSEGV] //If set, blu players use robot models&lt;br /&gt;
 BotTeleportUberDuration 2 [$SIGSEGV] // How long should uber last for robots exiting engineer bot teleporter (default: 5)&lt;br /&gt;
 BluHumanTeleportOnSpawn 1 [$SIGSEGV] // Should players get teleported to engineer bot teleport on spawn (default: 0)&lt;br /&gt;
 BluHumanBotTeleporter 1 [$SIGSEGV] // Should player teleporters teleport players and bots on spawn (default: 0)&lt;br /&gt;
[[Category:Popfile Additions]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1355</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1355"/>
		<updated>2022-02-14T16:22:38Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Upgrade Station */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives be very forgiving    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and cover up holes in the map if there are any.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1354</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1354"/>
		<updated>2022-02-14T16:18:46Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Engineer Teleporter Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is incredibly buggy.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently bug-free.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives be very forgiving    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1353</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=1353"/>
		<updated>2022-02-14T16:16:48Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM is a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives be very forgiving    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CTFBaseProjectile&amp;diff=1299</id>
		<title>CTFBaseProjectile</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CTFBaseProjectile&amp;diff=1299"/>
		<updated>2022-02-14T00:29:40Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source location : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linked entity : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==[[Classes|Class Structure]]==&lt;br /&gt;
*&#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;[[CBaseAnimating]]&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;[[CBaseAnimatingOverlay]]&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;[[CBaseFlex]]&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;&#039;[[CBaseCombatCharacter]]&#039;&#039;&#039;&lt;br /&gt;
******&#039;&#039;&#039;[[CBasePlayer]]&#039;&#039;&#039;&lt;br /&gt;
*******&#039;&#039;&#039;CTFPlayer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&amp;quot;&lt;br /&gt;
|+CTFBaseProjectile &lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_vInitialVelocity&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Vector&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_hLauncher&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Entity DataMaps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&lt;br /&gt;
|+CTFBaseProjectile &lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;CTFBaseProjectileFlyThink&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CTFBaseProjectile&amp;diff=1298</id>
		<title>CTFBaseProjectile</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CTFBaseProjectile&amp;diff=1298"/>
		<updated>2022-02-14T00:28:20Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source location : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linked entity : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==[[Classes|Class Structure]]==&lt;br /&gt;
*&#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;[[CBaseAnimating]]&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;[[CBaseAnimatingOverlay]]&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;[[CBaseFlex]]&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;&#039;[[CBaseCombatCharacter]]&#039;&#039;&#039;&lt;br /&gt;
******&#039;&#039;&#039;[[CBasePlayer]]&#039;&#039;&#039;&lt;br /&gt;
*******&#039;&#039;&#039;CTFPlayer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&amp;quot;&lt;br /&gt;
|+CTFBaseProjectile &lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_vInitialVelocity&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Vector&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_hLauncher&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Entity DataMaps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&lt;br /&gt;
|+CTFWeaponBaseMelee &lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;CTFBaseProjectileFlyThink&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseProjectile&amp;diff=1275</id>
		<title>CBaseProjectile</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseProjectile&amp;diff=1275"/>
		<updated>2022-02-13T23:18:23Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source location : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linked entity : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==[[Classes|Class Structure]]==&lt;br /&gt;
*&#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;[[CBaseAnimating]]&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;[[CBaseAnimatingOverlay]]&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;[[CBaseFlex]]&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;&#039;[[CBaseCombatCharacter]]&#039;&#039;&#039;&lt;br /&gt;
******&#039;&#039;&#039;[[CBasePlayer]]&#039;&#039;&#039;&lt;br /&gt;
*******&#039;&#039;&#039;CTFPlayer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&amp;quot;&lt;br /&gt;
|+CBaseProjectile &lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_hOriginalLauncher&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CTFTauntProp&amp;diff=724</id>
		<title>CTFTauntProp</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CTFTauntProp&amp;diff=724"/>
		<updated>2022-02-02T22:24:45Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source location : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linked entity : ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==[[SendProps|Class Structure]]==&lt;br /&gt;
*&#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;[[CBaseAnimating]]&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;[[CBaseAnimatingOverlay]]&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;[[CBaseFlex]]&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;&#039;[[CBaseCombatCharacter]]&#039;&#039;&#039;&lt;br /&gt;
******&#039;&#039;&#039;[[CBasePlayer]]&#039;&#039;&#039;&lt;br /&gt;
*******&#039;&#039;&#039;CTFPlayer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&amp;quot;&lt;br /&gt;
|+CTFTauntProp &lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_nFlagCaptures&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_iRole&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;team_object_array_element&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;&amp;quot;team_object_array&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Array&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&#039;&#039;&#039;m_hLeader&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 15%;&amp;quot; |Integer&lt;br /&gt;
| style=&amp;quot;width: 35%;&amp;quot; |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CAI_BaseNPC&amp;diff=666</id>
		<title>CAI BaseNPC</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CAI_BaseNPC&amp;diff=666"/>
		<updated>2022-01-31T00:43:57Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location: /game/server/ai_basenpc.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==[[SendProps|Class Structure]]==&lt;br /&gt;
*&#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;[[CBaseAnimating]]&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;[[CBaseAnimatingOverlay]]&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;[[CBaseFlex]]&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;&#039;[[CBaseCombatCharacter]]&#039;&#039;&#039;&lt;br /&gt;
******&#039;&#039;&#039;CAI_BaseNPC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&amp;quot;&lt;br /&gt;
|+CAI_BaseNPC&lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_lifeState&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bPerformAvoidance&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bIsMoving&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bFadeCorpse&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iDeathPose&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iDeathFrame&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bSpeedModActive&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iSpeedModRadius&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iSpeedModSpeed&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bImportanRagdoll&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_flTimePingEffect&#039;&#039;&#039;&lt;br /&gt;
|Float&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CAI_BaseNPC&amp;diff=665</id>
		<title>CAI BaseNPC</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CAI_BaseNPC&amp;diff=665"/>
		<updated>2022-01-31T00:42:51Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Contains functionality common between NPCs and players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location: /game/server/basecombatcharacter.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==[[SendProps|Class Structure]]==&lt;br /&gt;
*&#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;[[CBaseAnimating]]&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;[[CBaseAnimatingOverlay]]&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;[[CBaseFlex]]&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;&#039;CBaseCombatCharacter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;margin: 0 auto; width: 100%; padding: 0;&amp;quot;&lt;br /&gt;
|+CAI_BaseNPC&lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #303030; color: white&amp;quot; |Name &lt;br /&gt;
! style=&amp;quot;width: 15%; background-color: #303030; color: white&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;width: 35%; background-color: #303030; color: white&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_lifeState&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bPerformAvoidance&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bIsMoving&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bFadeCorpse&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iDeathPose&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iDeathFrame&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bSpeedModActive&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iSpeedModRadius&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_iSpeedModSpeed&#039;&#039;&#039;&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_bImportanRagdoll&#039;&#039;&#039;&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;m_flTimePingEffect&#039;&#039;&#039;&lt;br /&gt;
|Float&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseAnimating&amp;diff=628</id>
		<title>CBaseAnimating</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseAnimating&amp;diff=628"/>
		<updated>2022-01-30T04:59:23Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
All entities with models inherit from this class, even if they don&#039;t have any animations. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location : /game/server/baseanimating.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Parent Structure ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CBaseAnimating&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
&#039;&#039;&#039;CBaseAnimating&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nForceBone&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_vecForce&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nSkin&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nBody&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nHitboxSet&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flModelScale&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flPoseParameter&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       000 (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;004&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;005&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;006&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;007&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;008&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;009&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;010&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;011&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;012&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;013&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;014&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;015&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;016&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;017&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;018&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;019&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;020&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;021&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;022&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;023&#039;&#039;&#039; (m_flPoseParameter)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nSequence&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flPlaybackRate&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flEncodedController&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       000 (m_flEncodedController)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_flEncodedController)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_flEncodedController)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_flEncodedController)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bClientSideAnimation&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bClientSideFrameReset&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nNewSequenceParity&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nResetEventsParity&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nMuzzleFlashParity&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hLightingOrigin&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hLightingOriginRelative&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;serveranimdata&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       m_flCycle (serveranimdata)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fadeMinDist&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fadeMaxDist&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flFadeScale&#039;&#039;&#039; (CBaseAnimating)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=264</id>
		<title>CBaseEntity</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=264"/>
		<updated>2022-01-30T01:39:27Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The class from which all entity types derive from. The only exceptions to this are [https://wiki.alliedmods.net/TempEnts_(SourceMod_SDKTools) TempEnts], which are temporary entities that are too simple to warrant the overhead of inheriting from CBaseEntity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location :  /game/server/baseentity.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039; =====&lt;br /&gt;
   &#039;&#039;&#039;AnimTimeMustBeFirst&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_flAnimTime (AnimTimeMustBeFirst)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flSimulationTime&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_vecOrigin&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           The local origin of the entity, which is it&#039;s position relative to the entity&#039;s parent. If the entity has no parent, the relative position from the global origin (0, 0, 0) is used.&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_ubInterpolationFrame&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_Collision&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_vecMinsPreScaled (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSolidType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_usSolidFlags&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSurroundType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_triggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bUniformTriggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMinsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderFX&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderMode&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           https://developer.valvesoftware.com/wiki/Render_Modes&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fEffects&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_clrRender&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTeamNum&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_CollisionGroup&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flElasticity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flShadowCastDistance&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hOwnerEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hEffectEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;moveparent&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iParentAttachment&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movetype&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movecollide&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_angRotation&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTextureFrameIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;predictable_id&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_PredictableID (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bIsPlayerSimulated&#039;&#039;&#039; (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bSimulatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAnimatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAlternateSorting&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndexOverrides&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;000&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=263</id>
		<title>CBaseEntity</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=263"/>
		<updated>2022-01-30T01:38:11Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: Undo revision 262 by 192.168.1.218 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The class from which all entity types derive from. The only exceptions to this are [https://wiki.alliedmods.net/TempEnts_(SourceMod_SDKTools) TempEnts], which are temporary entities that are too simple to warrant the overhead of inheriting from CBaseEntity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location :  /game/server/baseentity.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039; =====&lt;br /&gt;
   &#039;&#039;&#039;AnimTimeMustBeFirst&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_flAnimTime&#039;&#039;&#039; (AnimTimeMustBeFirst)&lt;br /&gt;
&lt;br /&gt;
Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flSimulationTime&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_vecOrigin&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           The local origin of the entity, which is it&#039;s position relative to the entity&#039;s parent. If the entity has no parent, the relative position from the global origin (0, 0, 0) is used.&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_ubInterpolationFrame&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_Collision&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_vecMinsPreScaled (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSolidType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_usSolidFlags&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSurroundType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_triggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bUniformTriggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMinsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderFX&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderMode&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           https://developer.valvesoftware.com/wiki/Render_Modes&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fEffects&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_clrRender&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTeamNum&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_CollisionGroup&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flElasticity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flShadowCastDistance&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hOwnerEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hEffectEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;moveparent&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iParentAttachment&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movetype&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movecollide&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_angRotation&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTextureFrameIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;predictable_id&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_PredictableID (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bIsPlayerSimulated&#039;&#039;&#039; (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bSimulatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAnimatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAlternateSorting&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndexOverrides&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;000&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=262</id>
		<title>CBaseEntity</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=262"/>
		<updated>2022-01-30T01:37:34Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* CBaseEntity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The class from which all entity types derive from. The only exceptions to this are [https://wiki.alliedmods.net/TempEnts_(SourceMod_SDKTools) TempEnts], which are temporary entities that are too simple to warrant the overhead of inheriting from CBaseEntity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location :  /game/server/baseentity.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039; =====&lt;br /&gt;
   &#039;&#039;&#039;AnimTimeMustBeFirst&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_flAnimTime&#039;&#039;&#039; (AnimTimeMustBeFirst)&lt;br /&gt;
&lt;br /&gt;
           Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flSimulationTime&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_vecOrigin&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           The local origin of the entity, which is it&#039;s position relative to the entity&#039;s parent. If the entity has no parent, the relative position from the global origin (0, 0, 0) is used.&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_ubInterpolationFrame&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_Collision&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_vecMinsPreScaled (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSolidType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_usSolidFlags&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSurroundType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_triggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bUniformTriggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMinsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderFX&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderMode&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           https://developer.valvesoftware.com/wiki/Render_Modes&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fEffects&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_clrRender&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTeamNum&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_CollisionGroup&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flElasticity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flShadowCastDistance&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hOwnerEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hEffectEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;moveparent&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iParentAttachment&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movetype&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movecollide&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_angRotation&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTextureFrameIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;predictable_id&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_PredictableID (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bIsPlayerSimulated&#039;&#039;&#039; (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bSimulatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAnimatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAlternateSorting&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndexOverrides&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;000&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=261</id>
		<title>CBaseEntity</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=261"/>
		<updated>2022-01-30T01:25:31Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The class from which all entity types derive from. The only exceptions to this are [https://wiki.alliedmods.net/TempEnts_(SourceMod_SDKTools) TempEnts], which are temporary entities that are too simple to warrant the overhead of inheriting from CBaseEntity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location :  /game/server/baseentity.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039; =====&lt;br /&gt;
   &#039;&#039;&#039;AnimTimeMustBeFirst&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_flAnimTime&#039;&#039;&#039; (AnimTimeMustBeFirst)&lt;br /&gt;
&lt;br /&gt;
Type: float&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flSimulationTime&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_vecOrigin&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           The local origin of the entity, which is it&#039;s position relative to the entity&#039;s parent. If the entity has no parent, the relative position from the global origin (0, 0, 0) is used.&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_ubInterpolationFrame&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_Collision&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_vecMinsPreScaled (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSolidType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_usSolidFlags&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSurroundType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_triggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bUniformTriggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMinsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderFX&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderMode&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           https://developer.valvesoftware.com/wiki/Render_Modes&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fEffects&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_clrRender&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTeamNum&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_CollisionGroup&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flElasticity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flShadowCastDistance&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hOwnerEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hEffectEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;moveparent&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iParentAttachment&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movetype&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movecollide&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_angRotation&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTextureFrameIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;predictable_id&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_PredictableID (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bIsPlayerSimulated&#039;&#039;&#039; (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bSimulatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAnimatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAlternateSorting&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndexOverrides&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;000&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=260</id>
		<title>CBaseEntity</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=260"/>
		<updated>2022-01-30T01:00:05Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The class from which all entity types derive from. The only exceptions to this are [https://wiki.alliedmods.net/TempEnts_(SourceMod_SDKTools) TempEnts], which are temporary entities that are too simple to warrant the overhead of inheriting from CBaseEntity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location :  /game/server/baseentity.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039; =====&lt;br /&gt;
   &#039;&#039;&#039;AnimTimeMustBeFirst&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_flAnimTime&#039;&#039;&#039; (AnimTimeMustBeFirst)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flSimulationTime&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_vecOrigin&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_ubInterpolationFrame&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 3 (2 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_Collision&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_vecMinsPreScaled (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSolidType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 7 (3 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_usSolidFlags&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 1023 (10 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSurroundType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 7 (3 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_triggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bUniformTriggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMinsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderFX&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderMode&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fEffects&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1023 (10 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_clrRender&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 4294967295 (32 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTeamNum&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: -32 - 31 (6 bits signed)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_CollisionGroup&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 31 (5 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flElasticity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flShadowCastDistance&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hOwnerEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 2097151 (21 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hEffectEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 2097151 (21 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;moveparent&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 2097151 (21 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iParentAttachment&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 63 (6 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movetype&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 15 (4 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movecollide&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 7 (3 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_angRotation&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTextureFrameIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;predictable_id&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_PredictableID (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 2147483647 (31 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bIsPlayerSimulated&#039;&#039;&#039; (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bSimulatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAnimatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAlternateSorting&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndexOverrides&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;000&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Classes&amp;diff=259</id>
		<title>Classes</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Classes&amp;diff=259"/>
		<updated>2022-01-30T00:54:53Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Parent Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[CBaseEntity]]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CBaseAnimating&#039;&#039;&#039; &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CBaseEntity)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CBaseAnimatingOverlay&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CEconEntity&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimatingOverlay)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBaseAttributableItem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CEconEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBaseCombatWeapon&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CEconEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CTFWeaponBase&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatWeapon)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CPasstimeGun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CTFWeaponBaseMelee&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFBat&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFBat_Fish&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBat)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFBat_Wood&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBat)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********** &#039;&#039;&#039;CTFBat_Giftwrap&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBat_Wood)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFBonesaw&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFBreakableMelee&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFBottle&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBreakableMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFBreakableSign&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBreakableMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFStickBomb&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBreakableMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFBuffItem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFParachute&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBuffItem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**********&#039;&#039;&#039;CTFParachute_Primary&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFParachute)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**********&#039;&#039;&#039;CTFParachute_Secondary&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFParachute)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFClub&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFFireAxe&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFFists&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFKatana&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFKnife&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFWrench&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFRobotArm&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWrench)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFRocketPack&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFShovel&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFSlap&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFSword&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseMelee)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CTFWeaponBaseGun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFGrenadeLauncher&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFCannon&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFGrenadeLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFSMG&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFChargedSMG&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFSMG)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFJar&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFCleaver&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFJar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFJarGas&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFJar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFJarMilk&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFJar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFThrowable&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFJar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**********&#039;&#039;&#039;CTFSpellBook&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFThrowable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFPipebombLauncher&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFCompoundBow&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFPipebombLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFRocketLauncher&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFCrossbow&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRocketLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********* &#039;&#039;&#039;CTFRaygun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRocketLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********** &#039;&#039;&#039;CTFDRGPomson&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRaygun&#039;&#039;&#039;)&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFGrapplingHook&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRocketLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFParticleCannon&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRocketLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFRocketLauncher_AirStrike&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRocketLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFRocketLauncher_DirectHit&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRocketLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFRocketLauncher_Mortar&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRocketLauncher)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFFlameThrower&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFWeaponFlameBall&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFFlameThrower)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFFlareGun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFFlareGun_Revenge&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFFlareGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFLaserPointer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFMechanicalArm&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFMinigun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFShotgun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFScatterGun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFShotgun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**********&#039;&#039;&#039;CTFPEPBrawlerBlaster&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFScatterGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**********&#039;&#039;&#039;CTFSodaPopper&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFScatterGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFShotgun_HWG&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFShotgun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFShotgun_Pyro&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFShotgun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFShotgun_Revenge&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFShotgun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFShotgun_Soldier&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFShotgun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFShotgunBuildingRescue&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFShotgun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFPistol&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFPistol_Scout&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFPistol)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**********&#039;&#039;&#039;CTFPistol_ScoutPrimary&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFPistol_Scout)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**********&#039;&#039;&#039;CTFPIstol_ScoutSecondary&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFPistol_Scout)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFRevolver&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFSniperRifle&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFSniperRifleClassic&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFSniperRifle)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFSniperRifleDecap&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFSniperRifle)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFSyringeGun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CWeaponMedigun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGun)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFLunchBox&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFLunchBox_Drink&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFLunchBox)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWeaponBuilder&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFWeaponSapper&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBuilder)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWeaponInvis&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWeaponPDA&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFWeaponPDA_Engineer_Build &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;CTFWeaponPDA)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFWeaponPDA_Engineer_Destroy&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponPDA)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFWeaponPDA_Spy&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponPDA)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CWeaponIFMBase&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CWeaponIFMBaseCamera&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponIFMBase)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CWeaponIFMSteadyCam&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponIFMBaseCamera)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CEconWearable&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CEconEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFWearable&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CEconWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFPowerupBottle&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWearableCampaignItem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWearableDemoShield&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWeaponPDAExpansion_Dispenser&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWeaponPDAExpansion_Teleporter&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWearableLevelableItem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWearableRazorback&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWearableRobotArm&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFWearableVM&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFWearableItem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CEconWearable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****&#039;&#039;&#039;CTFRagdoll&#039;&#039;&#039; &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CBaseAnimatingOverlay)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CBaseFlex&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CBaseCombatCharacter&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseFlex)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CAI_BaseNPC&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBaseObject&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CBaseObjectUpgrade&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseObject)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CObjectSapper&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseObjectUpgrade)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CObjectDispenser&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseObject)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CObjectCartDispenser&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CObjectDispenser)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CPlayerDestructionDispenser&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CObjectDispenser)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CRobotDispenser&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CObjectDispenser)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CObjectSentrygun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseObject)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CObjectTeleporter&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseObject)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBasePlayer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFPlayer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBasePlayer)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*****&#039;&#039;&#039;CTFTauntProp&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;NextBotCombatCharacter&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CEyeballBoss&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(NextBotCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CHeadlessHatman&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(NextBotCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CMerasmus&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(NextBotCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CTFBaseBoss&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(NextBotCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFTankBoss&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseBoss)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFRobotDestruction_Robot&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(NextBotCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CZombie&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(NextBotCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CBaseProjectile&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CBaseGrenade&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CTFWeaponBaseGrenadeProj&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseGrenade)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CTFGrenadePipebombProjectile&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFWeaponBaseGrenadeProj)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* &#039;&#039;&#039;CTFStunball&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFGrenadePipebombProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******** &#039;&#039;&#039;CTFBall_Ornament &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFStunball)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
*******&#039;&#039;&#039;CTFProjectile_Jar&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFGrenadePipebombProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFProjectile_Cleaver&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Jar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFProjectile_JarGas&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Jar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFProjectile_JarMilk&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Jar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFProjectile_SpellBats&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Jar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellKartBats&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellMeteorShower&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellMirv&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellPumpkin&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellSpawnBoss&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellSpawnHorde&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellSpawnZombie&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_SpellTransposeTeleport&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellBats)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFProjectile_Throwable&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Jar)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_ThrowableBreadMonster&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Throwable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_ThrowableBrick&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Throwable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*********&#039;&#039;&#039;CTFProjectile_ThrowableRepel&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Throwable)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CTFBaseProjectile&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CTFBaseRocket&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFFlameRocket&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseRocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFProjectile_Arrow&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseRocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFProjectile_GrapplingHook&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Arrow)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFProjectile_HealingBolt&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Arrow)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFProjectile_Rocket&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseRocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFProjectile_BallOfFire&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Rocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFProjectile_MechanicalArmOrb&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Rocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFProjectile_SentryRocket&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Rocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;CTFProjectile_SpellFireball&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_Rocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFProjectile_SpellLightningOrb&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellFireball)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;CTFProjectile_SpellKartOrb&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFProjectile_SpellFireball)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFProjectile_EnergyBall&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseRocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;CTFProjectile_Flare&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseRocket)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*****&#039;&#039;&#039;CTFProjectile_EnergyRing&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFBaseProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****&#039;&#039;&#039;CTFWeaponBaseMerasmusGrenade&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CHalloweenPickup&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CBonusDuckPickup&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CCHalloweenPickup)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CHalloweenGiftPickup&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CCHalloweenPickup)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CCurrencyPack&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CBonusPack&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CCurrencyPack)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CBreakableProp&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CDynamicProp&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBreakableProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBasePropDoor&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CDynamicProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CTFItem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CDynamicProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CCaptureFlag&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFItem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CPhysicsProp&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBreakableProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CPhysicsPropMultiplayer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CPhysicsProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CEnvParticleScript&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTeleportVortex&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CHightower_TeleportVortex&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTeleportVortex)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTFAmmoPack&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTFDroppedWeapon&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFGenericBomb&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CMerasmusDancer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CPasstimeBall&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CPhysMagnet&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CPointCommentaryNode&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CPropVehicleDriveable&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CRagdollProp &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
**** &#039;&#039;&#039;CRagdollPropAttached&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CRagdollProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CMedigunShield&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CPumpkinBomb&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFReviveMarker&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CWaterBullet&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CBaseViewModel&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****&#039;&#039;&#039;CTFViewModel&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseViewModel)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CFish&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CBaseDoor&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CBaseParticleEntity&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CEntityParticleTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CFireTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CSmokeStack&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CSteamJet&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;DustTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;MovieExplosion&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;ParticleSmokeGrenade&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;RocketTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;SmokeTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;SporeExplosion&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;SporeTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseParticleEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CParticleFire&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;CBaseTeamObjectiveResource&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFObjectiveResource&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTeamObjectiveResource)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CBeam&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CBoneFollower&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CBreakableSurface&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CCaptureFlagReturnIcon&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CCaptureZone&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CDynamicLight&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEmbers&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEntityDissolve&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEntityFlame&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEnvProjectedTexture&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEnvQuadraticBeam&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEnvScreenEffect&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEnvScreenOverlay&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CEnvTonemapController&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFireSmoke&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFunc_LOD&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncAreaPortalWindow&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncConveyor&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncForceField&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncLadder &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CFuncMonitor &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CFuncPasstimeGoal&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncReflectiveGlass&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncRespawnRoom&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncRespawnRoomVisualizer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncRotating&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncSmokeVolume&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CFuncTrackTrain&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CHalloweenSoulPack &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CHandleTest&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CInfoLadderDismount&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CInfoLightingRelative&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CMannVsMachineStats&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CMaterialModifyControl&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CParticlePerformanceMonitor&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CPhysBox&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CPhysBoxMultiplayer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CPhysBox)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CPlasma&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CPointCamera&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CPoseController&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CPrecipitation&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CSlideshowDisplay&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CSniperDot&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CLaserDot&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CSniperDot)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CSprite&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CSpriteOriented&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CSprite)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CSpriteTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CSprite)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CSpotlightEnd&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTeamTrainWatcher&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTesla &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CTest_ProxyToggle_Networkable&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTFBotHintEngineerNest&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFPointManager&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFFlameManager&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFPointManager)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFGasManager&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFPointManager)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFGlow &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;CTFHellZap&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFPasstimeLogic&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CVGuiScreen&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CVoteController&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CWorld&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CBonusRoundLogic&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CColorCorrection&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CEnvDetailController&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CEnvWind&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CFogController&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CFunc_Dust&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CFuncOccluder&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CGameRulesProxy&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTeamplayRoundBasedRulesProxy&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CGameRulesProxy)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****&#039;&#039;&#039;CTFGameRulesProxy&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTeamplayRoundBasedRulesProxy)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CLightGlow&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CMonsterResource&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CParticleSystem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CPlayerResource&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFPlayerResource&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CPlayerResource)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CRagdollManager&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CRopeKeyFrame&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CShadowControl &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;CSun&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTeam&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFTeam&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTeamRoundTimer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFMiniGame&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFHalloweenMinigame&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFMiniGame)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****&#039;&#039;&#039;CTFHalloweenMinigame_FallingPlatforms&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFHalloweenMinigame)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFMinigameLogic&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFRobotDestructionLogic&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***&#039;&#039;&#039;CTFPlayerDestructionLogic&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTFRobotDestructionLogic)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFRobotDestruction_RobotGroup&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTFRobotDestruction_RobotSpawn&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CWaterLODControl&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;CBaseTempEntity&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CTEParticleSystem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEBloodStream&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEParticleSystem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEDust&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEParticleSystem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEExplosion&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEParticleSystem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEGaussExplosion&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEParticleSystem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTELargeFunnel&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEParticleSystem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEShowLine&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEParticleSystem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTESparks&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEParticleSystem)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEBreakModel&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEBSPDecal&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEBubbles&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEBubbleTrail&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEClientProjectile&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEDecal&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEDynamicLight&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEEffectDispatch&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEFizz&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEFootprintDecal&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEGlowSprite&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEImpact&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEKillPlayerAttachments&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEMuzzleFlash&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEPhysicsProp&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEPlayerDecal&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEProjectedDecal&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEShatterSurface&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTESmoke&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTESprite&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTESpriteSpray&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTETFBlood&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTETFExplosion&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTETFParticleEffect&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CTEWorldDecal&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTEBaseBeam&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEBeamEntPoint&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEBaseBeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEBeamEnts&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEBaseBeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEBeamFollow&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEBaseBeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEBeamLaser&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEBaseBeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt; &lt;br /&gt;
*** &#039;&#039;&#039;CTEBeamPoints&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEBaseBeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEBeamRIng&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEBaseBeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEBeamRingPoint&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEBaseBeam)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTEBeamSpline&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTEMetalSparks&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CTEArmorRicochet&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CTEMetalSparks)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTEBloodSprite&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTEEnergySplash&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTEFireBullets&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**&#039;&#039;&#039;CTEPlayerAnimEvent&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseTempEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;CColorCorrectionVolume&#039;&#039;&#039; &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CBaseTrigger)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;CInfoOverlayAccessor&#039;&#039;&#039; &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CPointEntity)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;CSceneEntity &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CPointEntity)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CTestTraceline &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CPointEntity)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=258</id>
		<title>CBaseEntity</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=CBaseEntity&amp;diff=258"/>
		<updated>2022-01-30T00:51:22Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The class from which all entity types derive from. The only exceptions to this are [https://wiki.alliedmods.net/TempEnts_(SourceMod_SDKTools) TempEnts], which are temporary entities that are too simple to warrant the overhead of inheriting from CBaseEntity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source Location :  /game/server/baseentity.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SendProps ==&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039; =====&lt;br /&gt;
   &#039;&#039;&#039;AnimTimeMustBeFirst&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_flAnimTime&#039;&#039;&#039; (AnimTimeMustBeFirst)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flSimulationTime&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_vecOrigin&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_ubInterpolationFrame&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 3 (2 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_Collision&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_vecMinsPreScaled (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSolidType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 7 (3 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_usSolidFlags&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 1023 (10 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_nSurroundType&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 7 (3 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_triggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bUniformTriggerBloat&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMinsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxsPreScaled&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMins&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_vecSpecifiedSurroundingMaxs&#039;&#039;&#039; (m_Collision)&lt;br /&gt;
&lt;br /&gt;
           Type: vector&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderFX&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nRenderMode&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_fEffects&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1023 (10 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_clrRender&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 4294967295 (32 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTeamNum&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: -32 - 31 (6 bits signed)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_CollisionGroup&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 31 (5 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flElasticity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_flShadowCastDistance&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: float&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hOwnerEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 2097151 (21 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_hEffectEntity&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 2097151 (21 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;moveparent&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 2097151 (21 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iParentAttachment&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 63 (6 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movetype&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 15 (4 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;movecollide&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 7 (3 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_angRotation&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: vector&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_iTextureFrameIndex&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: integer&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 255 (8 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;predictable_id&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       m_PredictableID (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 2147483647 (31 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;m_bIsPlayerSimulated&#039;&#039;&#039; (predictable_id)&lt;br /&gt;
&lt;br /&gt;
           Type: boolean&lt;br /&gt;
&lt;br /&gt;
           Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bSimulatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAnimatedEveryTick&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_bAlternateSorting&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       Type: boolean&lt;br /&gt;
&lt;br /&gt;
       Range: 0 - 1 (1 bits unsigned)&lt;br /&gt;
&lt;br /&gt;
       Description:&lt;br /&gt;
&lt;br /&gt;
       ------------&lt;br /&gt;
&lt;br /&gt;
           ..?&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;m_nModelIndexOverrides&#039;&#039;&#039; (CBaseEntity)&lt;br /&gt;
&lt;br /&gt;
       000 (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;001&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;002&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;br /&gt;
&lt;br /&gt;
       &#039;&#039;&#039;003&#039;&#039;&#039; (m_nModelIndexOverrides)&lt;br /&gt;
&lt;br /&gt;
           Type: integer&lt;br /&gt;
&lt;br /&gt;
           Range: -4096 - 4095 (13 bits signed)&lt;br /&gt;
&lt;br /&gt;
           Description:&lt;br /&gt;
&lt;br /&gt;
           ------------&lt;br /&gt;
&lt;br /&gt;
               ..?&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Classes&amp;diff=250</id>
		<title>Classes</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Classes&amp;diff=250"/>
		<updated>2022-01-29T19:44:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: Created page with &amp;quot;== Class Parent Hierarchy ==  * &amp;#039;&amp;#039;&amp;#039;CBaseEntity&amp;#039;&amp;#039;&amp;#039; ** &amp;#039;&amp;#039;&amp;#039;CBaseAnimating&amp;#039;&amp;#039;&amp;#039; &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CBaseEntity)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt; *** &amp;#039;&amp;#039;&amp;#039;CBaseAnimatingOverlay&amp;#039;&amp;#039;&amp;#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Parent Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CBaseEntity&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;CBaseAnimating&#039;&#039;&#039; &amp;lt;small&amp;gt;&amp;lt;sub&amp;gt;(CBaseEntity)&amp;lt;/sub&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;CBaseAnimatingOverlay&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CEconEntity&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimatingOverlay)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBaseAttributableItem&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CEconEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBaseCombatWeapon&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CEconEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** CTFWeaponBase&lt;br /&gt;
******* CPasstimeGun&lt;br /&gt;
******* CTFWeaponBaseMelee&lt;br /&gt;
******** CTFBat&lt;br /&gt;
********* CTFBat_Fish&lt;br /&gt;
********* CTFBat_Wood&lt;br /&gt;
********** CTFBat_Giftwrap&lt;br /&gt;
******** CTFBonesaw&lt;br /&gt;
******** CTFBreakableMelee&lt;br /&gt;
********* CTFBottle&lt;br /&gt;
********* CTFBreakableSign&lt;br /&gt;
******** CTFBreakableMelee&lt;br /&gt;
******** CTFBuffItem&lt;br /&gt;
******** CTFClub&lt;br /&gt;
******** CTFFireAxe&lt;br /&gt;
******* CTFWeaponBaseGun&lt;br /&gt;
******** CTFGrenadeLauncher&lt;br /&gt;
********* CTFCannon&lt;br /&gt;
******** CTFSMG&lt;br /&gt;
********* CTFChargedSMG&lt;br /&gt;
******** CTFWeaponJar&lt;br /&gt;
********* CTFCleaver&lt;br /&gt;
******** CTFPipebombLauncher&lt;br /&gt;
********* CTFCompoundBow&lt;br /&gt;
******** CTFRocketLauncher&lt;br /&gt;
********* CTFCrossbow&lt;br /&gt;
********* CTFRaygun&lt;br /&gt;
********** CTFDRGPomson&lt;br /&gt;
***** CEconWearable&lt;br /&gt;
*** &#039;&#039;&#039;CBaseFlex&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CBaseCombatCharacter&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseFlex)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CAI_BaseNPC&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBaseObject&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
****** &#039;&#039;&#039;CBaseObjectUpgrade&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseObject)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
******* CObjectSapper&lt;br /&gt;
****** CObjectDispenser&lt;br /&gt;
******* CObjectCartDispenser&lt;br /&gt;
******* CPlayerDestructionDispenser&lt;br /&gt;
******* CRobotDispenser&lt;br /&gt;
****** CObjectSentrygun&lt;br /&gt;
****** CObjectTeleporter&lt;br /&gt;
***** &#039;&#039;&#039;CBasePlayer&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseCombatCharacter)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** NextBotCombatCharacter&lt;br /&gt;
****** CEyeballBoss&lt;br /&gt;
****** CHeadlessHatman&lt;br /&gt;
****** CMerasmus&lt;br /&gt;
****** CTFBaseBoss&lt;br /&gt;
*** &#039;&#039;&#039;CBaseProjectile&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CBaseGrenade&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseProjectile)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** CTFWeaponBaseGrenadeProj&lt;br /&gt;
****** CTFGrenadePipebombProjectile&lt;br /&gt;
******* CTFStunball&lt;br /&gt;
******** CTFBall_Ornament&lt;br /&gt;
**** CTFBaseProjectile&lt;br /&gt;
***** CTFBaseRocket&lt;br /&gt;
*** &#039;&#039;&#039;CHalloweenPickup&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CBonusDuckPickup&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CCHalloweenPickup)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** CHalloweenGiftPickup&lt;br /&gt;
*** CCurrencyPack&lt;br /&gt;
**** CBonusPack&lt;br /&gt;
*** &#039;&#039;&#039;CBreakableProp&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseAnimating)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;CDynamicProp&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBreakableProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** &#039;&#039;&#039;CBasePropDoor&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CDynamicProp)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
***** CTFItem&lt;br /&gt;
****** CCaptureFlag&lt;br /&gt;
**** CPhysicsProp&lt;br /&gt;
***** CPhysicsPropMultiplayer&lt;br /&gt;
*** CEnvParticleScript&lt;br /&gt;
*** CTeleportVortex&lt;br /&gt;
**** CHightower_TeleportVortex&lt;br /&gt;
*** CTFAmmoPack&lt;br /&gt;
*** CTFDroppedWeapon&lt;br /&gt;
*** CMerasmusDancer&lt;br /&gt;
*** CPasstimeBall&lt;br /&gt;
*** CPhysMagnet&lt;br /&gt;
*** CPointCommentaryNode&lt;br /&gt;
*** CPropVehicleDriveable&lt;br /&gt;
*** CRagdollProp&lt;br /&gt;
**** CRagdollPropAttached&lt;br /&gt;
** &#039;&#039;&#039;CBaseDoor&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;CBaseParticleEntity&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
*** CEntityParticleTrail&lt;br /&gt;
*** CFireTrail&lt;br /&gt;
*** CSmokeStack&lt;br /&gt;
*** CSteamJet&lt;br /&gt;
** &#039;&#039;&#039;CBoneFollower&#039;&#039;&#039; &amp;lt;sub&amp;gt;&amp;lt;small&amp;gt;(CBaseEntity)&amp;lt;/small&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
** CBreakableSurface&lt;br /&gt;
** CCaptureFlagReturnIcon&lt;br /&gt;
** CCaptureZone&lt;br /&gt;
** CDynamicLight&lt;br /&gt;
** CEmbers&lt;br /&gt;
** CEntityDissolve&lt;br /&gt;
** CEntityFlame&lt;br /&gt;
** CEnvProjectedTexture&lt;br /&gt;
** CEnvQuadraticBeam&lt;br /&gt;
** CEnvScreenEffect&lt;br /&gt;
** CEnvScreenOverlay&lt;br /&gt;
** CEnvTonemapController&lt;br /&gt;
** CFireSmoke&lt;br /&gt;
** CFunc_LOD&lt;br /&gt;
** CFuncAreaPortalWindow&lt;br /&gt;
** CFuncConveyor&lt;br /&gt;
** CFuncForceField&lt;br /&gt;
** CFuncLadder&lt;br /&gt;
** CFuncMonitor&lt;br /&gt;
** CFuncPasstimeGoal&lt;br /&gt;
** CFuncReflectiveGlass&lt;br /&gt;
** CFuncRespawnRoom&lt;br /&gt;
** CFuncRespawnRoomVisualizer&lt;br /&gt;
** CFuncRotating&lt;br /&gt;
** CFuncSmokeVolume&lt;br /&gt;
** CFuncTrackTrain&lt;br /&gt;
** CHalloweenSoulPack&lt;br /&gt;
** CHandleTest&lt;br /&gt;
** CInfoLadderDismount&lt;br /&gt;
** CInfoLightingRelative&lt;br /&gt;
** CMannVsMachineStats&lt;br /&gt;
** CMaterialModifyControl&lt;br /&gt;
** CParticlePerformanceMonitor&lt;br /&gt;
** CPhysBox&lt;br /&gt;
*** CPhysBoxMultiplayer&lt;br /&gt;
** CPlasma&lt;br /&gt;
** CPointCamera&lt;br /&gt;
** CPoseController&lt;br /&gt;
** CPrecipitation&lt;br /&gt;
** CSlideshowDisplay&lt;br /&gt;
** CSniperDot&lt;br /&gt;
*** CLaserDot&lt;br /&gt;
** CSprite&lt;br /&gt;
*** CSpriteOriented&lt;br /&gt;
*** CSpriteTrail&lt;br /&gt;
** CSpotlightEnd&lt;br /&gt;
** CTeamTrainWatcher&lt;br /&gt;
** CTesla&lt;br /&gt;
** CTest_ProxyToggle_Networkable&lt;br /&gt;
** CTFBotHintEngineerNest&lt;br /&gt;
* &#039;&#039;&#039;CBaseTeamObjectiveResource&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CBaseTempEntity&#039;&#039;&#039;&lt;br /&gt;
** CTEParticleSystem&lt;br /&gt;
*** CTEBloodStream&lt;br /&gt;
*** CTEDust&lt;br /&gt;
*** CTEExplosion&lt;br /&gt;
*** CTEGaussExplosion&lt;br /&gt;
*** CTELargeFunnel&lt;br /&gt;
*** CTEShowLine&lt;br /&gt;
*** CTESparks&lt;br /&gt;
** CTEBreakModel&lt;br /&gt;
** CTEBSPDecal&lt;br /&gt;
** CTEBubbles&lt;br /&gt;
** CTEBubbleTrail&lt;br /&gt;
** CTEClientProjectile&lt;br /&gt;
** CTEDecal&lt;br /&gt;
** CTEDynamicLight&lt;br /&gt;
** CTEEffectDispatch&lt;br /&gt;
** CTEFizz&lt;br /&gt;
** CTEFootprintDecal&lt;br /&gt;
** CTEGlowSprite&lt;br /&gt;
** CTEImpact&lt;br /&gt;
** CTEKillPlayerAttachments&lt;br /&gt;
** CTEMuzzleFlash&lt;br /&gt;
** CTEPhysicsProp&lt;br /&gt;
** CTEPlayerDecal&lt;br /&gt;
** CTEProjectedDecal&lt;br /&gt;
** CTEShatterSurface&lt;br /&gt;
** CTESmoke&lt;br /&gt;
** CTESprite&lt;br /&gt;
** CTESpriteSpray&lt;br /&gt;
** CTETFBlood&lt;br /&gt;
** CTETFExplosion&lt;br /&gt;
** CTETFParticleEffect&lt;br /&gt;
** CTEWorldDecal&lt;br /&gt;
* &#039;&#039;&#039;CBeam&#039;&#039;&#039;&lt;br /&gt;
* CBaseViewModel&lt;br /&gt;
* CBonusRoundLogic&lt;br /&gt;
* CColorCorrection&lt;br /&gt;
* CColorCorrectionVolume&lt;br /&gt;
* CEnvDetailController&lt;br /&gt;
* CEnvWind&lt;br /&gt;
* CFIsh&lt;br /&gt;
* CFogController&lt;br /&gt;
* CFunc_Dust&lt;br /&gt;
* CFuncOccluder&lt;br /&gt;
* CGameRulesProxy&lt;br /&gt;
** CTeamplayRoundBasedRulesProxy&lt;br /&gt;
* CInfoOverlayAccessor&lt;br /&gt;
* CLightGlow&lt;br /&gt;
* CMonsterResource&lt;br /&gt;
* CParticleFire&lt;br /&gt;
* CParticleSystem&lt;br /&gt;
* CPlayerResource&lt;br /&gt;
* CRagdollManager&lt;br /&gt;
* CRopeKeyFrame&lt;br /&gt;
* CSceneEntity&lt;br /&gt;
* CShadowControl&lt;br /&gt;
* CSun&lt;br /&gt;
* CTeam&lt;br /&gt;
* CTeamRoundTimer&lt;br /&gt;
* CTEBaseBeam&lt;br /&gt;
** CTEBeamEntPoint&lt;br /&gt;
** CTEBeamEnts&lt;br /&gt;
** CTEBeamFollow&lt;br /&gt;
** CTEBeamLaser&lt;br /&gt;
** CTEBeamPoints&lt;br /&gt;
** CTEBeamRIng&lt;br /&gt;
** CTEBeamRingPoint&lt;br /&gt;
* CTEMetalSparks&lt;br /&gt;
** CTEArmorRicochet&lt;br /&gt;
* CTEBeamSpline&lt;br /&gt;
* CTEBloodSprite&lt;br /&gt;
* CTEEnergySplash&lt;br /&gt;
* CTEFireBullets&lt;br /&gt;
* CTEMetalSparks&lt;br /&gt;
* CTEPlayerAnimEvent&lt;br /&gt;
* CTestTraceline&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=240</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=240"/>
		<updated>2022-01-27T03:09:54Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potato.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives be very forgiving    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=239</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=239"/>
		<updated>2022-01-23T20:21:51Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Friendly Robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives be very forgiving    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=236</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=236"/>
		<updated>2021-12-17T01:55:21Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.    &lt;br /&gt;
&lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over the VIP.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be protected and escorted by the VIP.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=235</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=235"/>
		<updated>2021-12-17T01:53:51Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
For new reverse mission makers, it is not recommended to go overboard on making the bots themselves very interesting and outlandish.  While traditional community mvm is largely about creating new and interesting bots in your waves, the main hurdle of making a fun reverse mission is good red spawn locations and pacing.  More time should be spent optimizing red spawns and map flow rather than creating new bot types.   &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.    &lt;br /&gt;
&lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over the VIP.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be protected and escorted by the VIP.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=234</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=234"/>
		<updated>2021-12-17T01:53:23Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://steamcommunity.com/sharedfiles/filedetails/?id=2289315026 Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown, are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable.  Each spawn must be carefully chosen to cover as much ground as possible.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to complete before deploying the bomb:  The front, the church tower, and the hatch.  Spawns and accompanying sub-waves can then be adjusted depending on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
For new reverse mission makers, it is not recommended to go overboard on making the bots themselves very interesting and outlandish.  While traditional community mvm is largely about creating new and interesting bots in your waves, the main hurdle of making a fun reverse mission is good red spawn locations and pacing.  More time should be spent optimizing red spawns and map flow rather than creating new bot types.   &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.    &lt;br /&gt;
&lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over the VIP.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be protected and escorted by the VIP.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.  If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=228</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=228"/>
		<updated>2021-12-08T03:59:46Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Upgrade Station */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  &lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here].  Red robot template files can be found [https://www.dropbox.com/s/c9lri6egkhp5o8o/redbots.zip?dl=1 here].&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower/bridge, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
For new reverse mission makers, it is not recommended to go overboard on making the bots themselves very interesting and outlandish.  While traditional community mvm is largely about creating new and interesting bots in your waves, the main hurdle of making a fun reverse mission is good red spawn locations and pacing.  More time should be spent optimizing red spawns and map flow rather than creating new bot types.  Reverse as a concept carries itself, and many of the existing reverse missions that are suitable for an event make ample use of valve bot templates converted to red team.   &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.    &lt;br /&gt;
&lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over the VIP.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be protected and escorted by the VIP.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&lt;br /&gt;
&lt;br /&gt;
If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case.  Do note the &amp;quot;mins&amp;quot; and &amp;quot;maxs&amp;quot; values for the func_upgradestation entity will need to be adjusted accordingly&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=227</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=227"/>
		<updated>2021-12-08T03:35:10Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Friendly Robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower/bridge, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.    &lt;br /&gt;
&lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over the VIP.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be protected and escorted by the VIP.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=226</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=226"/>
		<updated>2021-12-08T03:34:44Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Friendly Robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower/bridge, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.    &lt;br /&gt;
&lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over the VIP.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be escorted by the VIP.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=225</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=225"/>
		<updated>2021-12-08T03:33:09Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Friendly Robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower/bridge, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.    &lt;br /&gt;
&lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over their actions.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be escorted by the VIP.    &lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=224</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=224"/>
		<updated>2021-12-08T03:29:08Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower/bridge, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress too quickly, then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into old ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over their actions.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be escorted by the VIPDo note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
==Preparing Your Map==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=223</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=223"/>
		<updated>2021-12-08T03:25:09Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Engineer Teleporter Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].  An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps and Structure ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Engineer Teleporter Types&amp;lt;/s&amp;gt; ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style teleporters is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&amp;lt;/sup&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;sup&amp;gt;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&amp;lt;/sup&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower/bridge, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress before the next section or miss the wave.  Then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into older ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
== Friendly Robots ==&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
Due to the complexity of balancing overpowered and underpowered blu robots for your wave, it is recommended that any lose conditions built around VIP escorting objectives either be very forgiving, or take advantage of custom behavior changing keyvalues such as InterruptAction to give players more control over their actions.  It is highly recommended not to allow VIP bots to pick up the bomb, but still have them use default bomb-hunting behavior.  This way, if a player picks up the bomb and there are &amp;lt; 4 blu robots nearby*, they will be escorted by the VIPDo note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*Max escort limit can be adjusted with FlagEscortCountOffset, or by giving the bot Action EscortFlag&amp;lt;/sup&amp;gt;   &lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=222</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=222"/>
		<updated>2021-12-08T03:07:24Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps and Structure ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== Engineer Teleporter Types ===&lt;br /&gt;
&#039;&#039;&amp;lt;s&amp;gt;There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&amp;lt;/s&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;As of 12/07/2021, The feature to place engineer-bot style mobile spawns is horribly broken.  Only vanilla teleporters and teleporters built by actual engineer-bots are currently functional.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friendly Robots ===&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front, the church tower/bridge, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress before the next section or miss the wave.  Then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, using WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into older ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=221</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=221"/>
		<updated>2021-12-08T03:01:41Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps and Structure ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== Engineer Teleporter Types ===&lt;br /&gt;
There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&lt;br /&gt;
&lt;br /&gt;
=== Friendly Robots ===&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Bot spawn timing and placement is the most important ingredient for making your mission enjoyable, and each spawn must be carefully and thoughtfully chosen to cover as much ground as possible before it becomes simply too far from the player to be useful.  &lt;br /&gt;
&lt;br /&gt;
It is best to divide your map into distinct areas that players need to conquer before progressing to the next stage, placing spawns accordingly for where those sections of the map are.  Rottenburg, for example, could be cut into 3 distinct areas that players need to beat before deploying the bomb:  The front/tunnel area, the church tower/bridge area, and the hatch.  Spawns can be placed and accompanying sub-waves can be timed based on how long you want players to spend in each individual area of the map.&lt;br /&gt;
&lt;br /&gt;
A common mistake new reverse mission makers will make is placing spawns very close to the player, sometimes in plain view, in order to ensure players don&#039;t make too much progress before the next section or miss the wave.  Then, waiting for all bots to be dead in the previous sub-wave before spawning the next.  It is best to avoid this practice and, instead, place your spawns far behind cover along the main bot path, and use WaitForAllSpawned over WaitForAllDead.  This serves multiple purposes: When bots are spawned further back and need to make their way to players, new sub-waves are seamlessly blended into older ones, rather than abruptly ending and having new bots appear out of thin air.  It also allows red bots to spread more thinly around the map, catching rushers and taking flank routes without needing to be explicitly told to do so.  It also better highlights the direction players need to go if they get lost, as they can simply follow the trail of red bots to the next location in the map.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=220</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=220"/>
		<updated>2021-12-06T03:47:58Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Placing Spawns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps and Structure ==&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== Engineer Teleporter Types ===&lt;br /&gt;
There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&lt;br /&gt;
&lt;br /&gt;
=== Friendly Robots ===&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=219</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=219"/>
		<updated>2021-12-06T03:39:35Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Pacing and Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Maps and Structure ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== Engineer Teleporter Types ===&lt;br /&gt;
There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&lt;br /&gt;
&lt;br /&gt;
=== Friendly Robots ===&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Placing Spawns ==&lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.  If each sub-wave and spawn location is balanced correctly, players will not spend the majority of their time in one part of the map.  If spawns are too fast and too close together, the mission will be a slog and players will struggle to progress.  If new sub-waves are too slow to begin and spawns are spread too far apart, the threat will be too spread out and players can simply ignore the next sub-wave, head straight to the hatch, and let everything come to them.  Do your best to strike a balance between these two extremes.&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=210</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=210"/>
		<updated>2021-12-01T07:07:23Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://testing.potato.tf/tf/scripts/population/mvm_rottenburg_reverse_core_logic.pop here]&lt;br /&gt;
&lt;br /&gt;
== Pacing and Structure ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
   &lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.  If each sub-wave and spawn location is balanced correctly, players will not spend the majority of their time in one part of the map.  If spawns are too fast and too close together, the mission will be a slog and players will struggle to progress.  If new sub-waves are too slow to begin and spawns are spread too far apart, the threat will be too spread out and players can simply ignore the next sub-wave, head straight to the hatch, and let everything come to them.  Do your best to strike a balance between these two extremes.&lt;br /&gt;
&lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== Engineer Teleporter Types ===&lt;br /&gt;
There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&lt;br /&gt;
&lt;br /&gt;
=== Friendly Robots ===&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=User:Orin/Sandbox/Entity_Additions&amp;diff=206</id>
		<title>User:Orin/Sandbox/Entity Additions</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=User:Orin/Sandbox/Entity_Additions&amp;diff=206"/>
		<updated>2021-11-21T21:06:16Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;WIP. Feel free to edit, but don&#039;t paste anything from here into the main page without my consent. If you have anything that needs to go there, edit it there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;clear:all;padding:0 1em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
All entity-oriented feature additions: Inputs, Outputs, Targetting, etc. are all documented here within their own heaps of lists.&lt;br /&gt;
&lt;br /&gt;
To traverse this page, use the &#039;&#039;Table of Contents&#039;&#039; at the right side, or use the CTRL+F shortcut for your Browser.&lt;br /&gt;
== I/O Expansions ==&lt;br /&gt;
=== Targetname Prefixes ===&lt;br /&gt;
When targetting entities, adding prefixes of the format &amp;lt;code&amp;gt;@name1@&amp;lt;/code&amp;gt; will instead target an entity relative to the given entity, usually by relationships.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;table-layout: fixed;&amp;quot;&lt;br /&gt;
! Prefix&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@p@&amp;lt;targetname&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Targets the parent of an entity. Example: &amp;lt;code&amp;gt;@p@!activator&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@c@&amp;lt;targetname&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Targets the child of an entity. Example: &amp;lt;code&amp;gt;@c@!activator&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@bb&amp;lt;&#039;&#039;vector&#039;&#039; mins&amp;gt; &amp;lt;&#039;&#039;vector&#039;&#039; maxs&amp;gt;@&amp;lt;targetname&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Target &#039;&#039;all&#039;&#039; entiities within a [https://developer.valvesoftware.com/w/images/6/63/BoundingBoxMinsMaxs.png bounding box] relative to the given entity. Example: &amp;lt;code&amp;gt;@bb-100 -100 -100 100 100 100@prop_dynamic&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== point_viewcontrol ([https://developer.valvesoftware.com/wiki/Point_viewcontrol VDC]) ===&lt;br /&gt;
==== &amp;lt;u&amp;gt;Inputs&amp;lt;/u&amp;gt; ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;table-layout: fixed;&amp;quot;&lt;br /&gt;
! Input&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$EnableAll&amp;lt;/code&amp;gt;&lt;br /&gt;
| Enable the camera for all players on the map.&amp;lt;br&amp;gt;&amp;amp;nbsp;❗ &#039;&#039;&#039;Warning:&#039;&#039;&#039; Spawnflag #512 may not do anything. (&amp;lt;code&amp;gt;Start At Player, Interruptable by Player&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$EnableAll&amp;lt;/code&amp;gt;&lt;br /&gt;
| Disable the camera for all players on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$SetTarget &amp;lt;entity&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Set current target as the entity. (Describe this better)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== tank_boss ([https://developer.valvesoftware.com/wiki/Tank_boss VDC]) ===&lt;br /&gt;
==== &amp;lt;u&amp;gt;Outputs&amp;lt;/u&amp;gt; ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;table-layout: fixed;&amp;quot;&lt;br /&gt;
! Output&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$OnStartDeploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| Fired when the tank is deploying the bomb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Entity Expansions ==&lt;br /&gt;
&lt;br /&gt;
=== [https://developer.valvesoftware.com/wiki/Point_viewcontrol obj_sentrygun] (Sentry Gun) ===&lt;br /&gt;
==== &amp;lt;u&amp;gt;Spawnflags&amp;lt;/u&amp;gt; ====&lt;br /&gt;
* &#039;&#039;&#039;[64]&#039;&#039;&#039; - Spawn as mini-sentry&lt;br /&gt;
&lt;br /&gt;
=== [https://developer.valvesoftware.com/wiki/Tf_point_weapon_mimic tf_point_weapon_mimic] (Weapon Mimic) ===&lt;br /&gt;
; &amp;lt;u&amp;gt;General&amp;lt;/u&amp;gt;&lt;br /&gt;
1. Added projectile type 4 - Bullet.&lt;br /&gt;
:- &amp;lt;code&amp;gt;SpeedMax&amp;lt;/code&amp;gt; keyvalue determines max distance (infinite if not specified).&lt;br /&gt;
:- &amp;lt;code&amp;gt;SplashRadius&amp;lt;/code&amp;gt; determines knockback force.&lt;br /&gt;
2. Shot projectiles are now team-assignable with &amp;lt;code&amp;gt;teamnum&amp;lt;/code&amp;gt; keyvalue (2 for RED, 3 for BLU).&lt;br /&gt;
:- Previously they&#039;re always of BLU team.&lt;br /&gt;
3. If a player owner is set with &amp;lt;code&amp;gt;$SetOwner&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$InheritOwner&amp;lt;/code&amp;gt;, fired projectiles are assigned the same owner.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Stickybombs are automatically removed if the mimic is killed.&lt;br /&gt;
==== Spawnflags ====&lt;br /&gt;
* &#039;&#039;&#039;[1]&#039;&#039;&#039; - Shot projectile callback; fires the &amp;lt;code&amp;gt;OnUser4&amp;lt;/code&amp;gt; output whenever a projectile is shot, with &amp;lt;code&amp;gt;!activator&amp;lt;/code&amp;gt; as the projectile.&lt;br /&gt;
* &#039;&#039;&#039;[2]&#039;&#039;&#039; - Allow the keyvalues &amp;quot;&#039;&#039;FireSound&#039;&#039;&amp;quot; and &amp;quot;&#039;&#039;ParticleEffect&#039;&#039;&amp;quot; to have functionality.&lt;br /&gt;
&lt;br /&gt;
=== Tank (tank_boss) ===&lt;br /&gt;
* When a tank with &amp;lt;code&amp;gt;PointTemplate&amp;lt;/code&amp;gt;(s) starts deploying, &amp;quot;OnUser4&amp;quot; output is fired.&lt;br /&gt;
&lt;br /&gt;
=== Medic shield (entity_medigun_shield) ===&lt;br /&gt;
==== Spawnflags ====&lt;br /&gt;
* &#039;&#039;&#039;[1]&#039;&#039;&#039; - Never expire, and don&#039;t block LOS&lt;br /&gt;
* &#039;&#039;&#039;[2]&#039;&#039;&#039; - Spawn as LV2 Shield&lt;br /&gt;
&lt;br /&gt;
=== logic_case ===&lt;br /&gt;
==== Text formatter ====&lt;br /&gt;
With the use of the added inputs, logic_case can be transformed into a text formatter, replacing % in the format string into format parameters.&lt;br /&gt;
&lt;br /&gt;
Example point template usage:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Formatter&lt;br /&gt;
{&lt;br /&gt;
	OnSpawnOutput&lt;br /&gt;
	{&lt;br /&gt;
		Target &amp;quot;formattest&amp;quot;&lt;br /&gt;
		Action &amp;quot;$Format&amp;quot;&lt;br /&gt;
		Delay 1&lt;br /&gt;
	}&lt;br /&gt;
	logic_case&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;targetname&amp;quot; &amp;quot;formattest&amp;quot;&lt;br /&gt;
		&amp;quot;case16&amp;quot; &amp;quot;You have % out of % coins left. % %% done&amp;quot; // Formatter string&lt;br /&gt;
		&amp;quot;case01&amp;quot; &amp;quot;6&amp;quot; //First argument&lt;br /&gt;
		&amp;quot;case02&amp;quot; &amp;quot;12&amp;quot; //Second argument&lt;br /&gt;
		&amp;quot;case03&amp;quot; &amp;quot;50&amp;quot; //Third argument&lt;br /&gt;
		&amp;quot;ondefault&amp;quot; &amp;quot;player,$DisplayTextCenter,,0,-1&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This would display &amp;quot;You have 6 out of 12 coins left. 50 % done&amp;quot; to all players&lt;br /&gt;
&lt;br /&gt;
==== Menus ====&lt;br /&gt;
You can use $DisplayMenu input to display a menu for the player, up to 15 entries&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Menu&lt;br /&gt;
{&lt;br /&gt;
	OnSpawnOutput&lt;br /&gt;
	{&lt;br /&gt;
		Target &amp;quot;menutest&amp;quot;&lt;br /&gt;
		Action &amp;quot;$DisplayMenu&amp;quot;&lt;br /&gt;
		Delay 1&lt;br /&gt;
		Param &amp;quot;player&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	logic_case&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;targetname&amp;quot; &amp;quot;menutest&amp;quot;&lt;br /&gt;
		&amp;quot;case16&amp;quot; &amp;quot;Menu title|30|Cancel&amp;quot; // Title, menu duration (0 for infinite), display optional cancel button&lt;br /&gt;
		&amp;quot;case01&amp;quot; &amp;quot;option1&amp;quot; //First argument&lt;br /&gt;
		&amp;quot;case02&amp;quot; &amp;quot;!disabled option&amp;quot; //Second argument, disabled&lt;br /&gt;
		&amp;quot;case03&amp;quot; &amp;quot;suicide&amp;quot; //Third argument&lt;br /&gt;
		&amp;quot;oncase03&amp;quot; &amp;quot;!activator,sethealth,0,0,-1&amp;quot; // Selected 3rd option&lt;br /&gt;
		&amp;quot;ondefault&amp;quot; &amp;quot;player,$DisplayTextCenter,he,0,-1&amp;quot; // No option selected&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inputs ====&lt;br /&gt;
&lt;br /&gt;
* $FormatString &amp;lt;string&amp;gt;&lt;br /&gt;
** Sets formatting string, then fires OnDefault output, with formatted string as parameter&lt;br /&gt;
* $FormatStringNoFire &amp;lt;string&amp;gt;&lt;br /&gt;
** Sets formatting string&lt;br /&gt;
* $FormatInput1 &amp;lt;string&amp;gt;&lt;br /&gt;
** Sets formatting input argument 1, then fires OnDefault output, with formatted string as parameter&lt;br /&gt;
* $FormatInput2-15 &amp;lt;string&amp;gt;&lt;br /&gt;
** Sets formatting input argument 2-15, then fires OnDefault output, with formatted string as parameter&lt;br /&gt;
* $FormatInputNoFire1 &amp;lt;string&amp;gt;&lt;br /&gt;
** Sets formatting input argument 1&lt;br /&gt;
* $Format&lt;br /&gt;
** Fires OnDefault output, with formatted string as parameter&lt;br /&gt;
* $TestSigsegv&lt;br /&gt;
** Fires OnUser1 output. Can be used to test if sigsegv extension is active&lt;br /&gt;
* $ToInt &amp;lt;any&amp;gt;&lt;br /&gt;
** Fires OnDefault output, converts parameter value from string/float to integer&lt;br /&gt;
* $ToFloat &amp;lt;any&amp;gt;&lt;br /&gt;
** Fires OnDefault output, converts value from string/int to real number&lt;br /&gt;
* $CallerToActivator &amp;lt;any&amp;gt;&lt;br /&gt;
** Fires OnDefault output, but the !caller entity is converted to !activator&lt;br /&gt;
* $GetKeyValueFromActivator &amp;lt;string&amp;gt;&lt;br /&gt;
** Fires OnDefault output, the key value from the !activator entity is the parameter&lt;br /&gt;
* $GetConVar &amp;lt;string&amp;gt;&lt;br /&gt;
** Fires OnDefault output, the convar (console variable) number value is the parameter&lt;br /&gt;
* $GetConVarString &amp;lt;string&amp;gt;&lt;br /&gt;
** Fires OnDefault output, the convar (console variable) string value is the parameter&lt;br /&gt;
*$DisplayMenu &amp;lt;entity&amp;gt;&lt;br /&gt;
**Display menu at player&lt;br /&gt;
*$HideMenu &amp;lt;entity&amp;gt;&lt;br /&gt;
**Hide menu at player&lt;br /&gt;
&lt;br /&gt;
== tf_gamerules ==&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
&lt;br /&gt;
* $StopVO &amp;lt;string&amp;gt;&lt;br /&gt;
** Stops sound that was started with PlayVO input&lt;br /&gt;
&lt;br /&gt;
* $StopVORed &amp;lt;string&amp;gt;&lt;br /&gt;
** Stops sound that was started with PlayVORed input&lt;br /&gt;
&lt;br /&gt;
* $StopVOBlue &amp;lt;string&amp;gt;&lt;br /&gt;
** Stops sound that was started with PlayVOBlue input&lt;br /&gt;
*$SetBossHealthPercentage &amp;lt;float&amp;gt;&lt;br /&gt;
**Set Halloween boss bar percentage to a value between 0 and 1. 0 hides the health bar, any other value makes the bar appear&lt;br /&gt;
*$SetBossState &amp;lt;int&amp;gt;&lt;br /&gt;
**If set to 1, makes the health bar green, like if Merasmus is hiding. If set to 0, the bar goes back to normal&lt;br /&gt;
*$AddCurrencyGlobal &amp;lt;int&amp;gt;&lt;br /&gt;
**Add currency to all players&lt;br /&gt;
&lt;br /&gt;
== player ==&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
&lt;br /&gt;
* $AllowClassAnimations &amp;lt;0|1&amp;gt;&lt;br /&gt;
** Allow class animations instead of using refpose when UseCustomModel input is fired to change player model&lt;br /&gt;
* $SwitchClass &amp;lt;string&amp;gt;&lt;br /&gt;
** Switch player class. The parameter can be either a class name (heavyweapons for example), or class index&lt;br /&gt;
*$SwitchClassInPlace &amp;lt;string&amp;gt;&lt;br /&gt;
**Switch player class in current position. The parameter can be either a class name (heavyweapons for example), or class index&lt;br /&gt;
* $ForceRespawn&lt;br /&gt;
** The player instantly respawns&lt;br /&gt;
* $ForceRespawnDead&lt;br /&gt;
** The player instantly respawns, but only if they are dead&lt;br /&gt;
* $DisplayTextCenter &amp;lt;string&amp;gt;&lt;br /&gt;
** Display text in the middle of the screen&lt;br /&gt;
* $DisplayTextChat &amp;lt;string&amp;gt;&lt;br /&gt;
** Display text to the player&#039;s chat&lt;br /&gt;
* $Suicide&lt;br /&gt;
** Kill the player&lt;br /&gt;
* $ChangeAttributes &amp;lt;string&amp;gt;&lt;br /&gt;
** If the player is a bot, this can be used to change active EventChangeAttributes&lt;br /&gt;
* $RollCommonSpell&lt;br /&gt;
** Roll common spell&lt;br /&gt;
* $SetSpell &amp;lt;string&amp;gt;&lt;br /&gt;
** Set player current spell to one of the following:&lt;br /&gt;
*** Fireball&lt;br /&gt;
*** Ball O&#039; Bats&lt;br /&gt;
*** Healing Aura&lt;br /&gt;
*** Pumpkin MIRV&lt;br /&gt;
*** Superjump&lt;br /&gt;
*** Invisibility&lt;br /&gt;
*** Teleport&lt;br /&gt;
*** Tesla Bolt&lt;br /&gt;
*** Minify&lt;br /&gt;
*** Meteor Shower&lt;br /&gt;
*** Summon Monoculus&lt;br /&gt;
*** Summon Skeletons&lt;br /&gt;
* $AddSpell &amp;lt;string&amp;gt;&lt;br /&gt;
** Adds spell to the number of spells. If the spell is different than the current one, it replaces the spell. The parameter is the same as in $SetSpell&lt;br /&gt;
* $AddCond &amp;lt;int&amp;gt; [int]&lt;br /&gt;
** Add condition to player. If a second argument is present, the condition will only run for a specified duration&lt;br /&gt;
* $RemoveCond &amp;lt;int&amp;gt;&lt;br /&gt;
** Remove condition from player&lt;br /&gt;
* $AddPlayerAttribute &amp;lt;string&amp;gt;&lt;br /&gt;
** Add attribute to player, the parameter should be passed in this way: attribute|value. Example: &amp;quot;move speed bonus|1.2&amp;quot;&lt;br /&gt;
* $RemovePlayerAttribute &amp;lt;string&amp;gt;&lt;br /&gt;
** Remove attribute from player. Example: &amp;quot;move speed bonus&amp;quot;&lt;br /&gt;
* $AddItemAttribute &amp;lt;string&amp;gt;&lt;br /&gt;
** Add attribute to item in slot, the parameter should be passed in this way: attribute|value|slot. Example &amp;quot;damage bonus|2|0&amp;quot; adds 100% damage bonus to primary weapon&lt;br /&gt;
* $RemoveItemAttribute &amp;lt;string&amp;gt;&lt;br /&gt;
** Remove attribute from item in slot, the parameter should be passed in this way: attribute|slot. Example &amp;quot;damage bonus|0&amp;quot; removes damage bonus from primary weapon&lt;br /&gt;
* $PlaySoundToSelf &amp;lt;string&amp;gt;&lt;br /&gt;
** Play sound to the player&lt;br /&gt;
*$IgnitePlayerDuration &amp;lt;float&amp;gt;&lt;br /&gt;
**Ignite the player for a specified duration in seconds&lt;br /&gt;
*$WeaponSwitchSlot &amp;lt;int&amp;gt;&lt;br /&gt;
**Forcibly switches to weapon in slot&lt;br /&gt;
*$WeaponStripSlot &amp;lt;int&amp;gt;&lt;br /&gt;
**Removes weapon from a slot (-1 = current slot)&lt;br /&gt;
*$GiveItem &amp;lt;string&amp;gt;&lt;br /&gt;
**Gives an item to the player&lt;br /&gt;
*$AddCurrency &amp;lt;int&amp;gt;&lt;br /&gt;
**Add currency to the player&lt;br /&gt;
*$RemoveCurrency &amp;lt;int&amp;gt;&lt;br /&gt;
**Remove currency from the player&lt;br /&gt;
*$SetCurrency &amp;lt;int&amp;gt;&lt;br /&gt;
**Set currency to specified value&lt;br /&gt;
*$CurrencyOutputX &amp;lt;string&amp;gt;&lt;br /&gt;
**Fires input if player currency is above specified value (the X in input name), the attribute should be passed in this way: target,input,parameter.&lt;br /&gt;
*$CurrencyInvertOutputX&amp;lt;string&amp;gt;&lt;br /&gt;
**Fires input if player currency is below specified value(the X in input name), the attribute should be passed in this way: target,input,parameter&lt;br /&gt;
*$DropItem &amp;lt;int&amp;gt;&lt;br /&gt;
**Drop item in slot (-1 = current slot)&lt;br /&gt;
*$RemoveItem &amp;lt;string&amp;gt;&lt;br /&gt;
**Remove item with a name&lt;br /&gt;
*$Regenerate&lt;br /&gt;
**Regenerate the player, as if touching resupply cabinet&lt;br /&gt;
*$RefillAmmo&lt;br /&gt;
**Restore player ammo&lt;br /&gt;
&lt;br /&gt;
== trigger_hurt ==&lt;br /&gt;
If entity owner is set with $SetOwner or $InheritOwner, the owner will become the damage inflictor&lt;br /&gt;
&lt;br /&gt;
== Filter entities ==&lt;br /&gt;
The server will no longer crash if the activator entity got removed the time TestActivator is called&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
&lt;br /&gt;
* $TestEntity &amp;lt;entity&amp;gt;&lt;br /&gt;
** Test any entity, rather than only the !activator&lt;br /&gt;
&lt;br /&gt;
== Trigger entities ==&lt;br /&gt;
The server will no longer crash if the caller entity got removed the time StartTouch or EndTouch is called&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
&lt;br /&gt;
* $StartTouchEntity &amp;lt;entity&amp;gt;&lt;br /&gt;
** StartTouch any entity, rather than only the !caller&lt;br /&gt;
* $EndTouchEntity &amp;lt;entity&amp;gt;&lt;br /&gt;
** EndTouch any entity, rather than only the !caller&lt;br /&gt;
&lt;br /&gt;
== game_ui ==&lt;br /&gt;
The server will no longer crash if the player using the entity disconnected from the server&lt;br /&gt;
&lt;br /&gt;
== $filter_keyvalue ==&lt;br /&gt;
Custom filter that lets you filter entities matching the key value. Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity&lt;br /&gt;
&lt;br /&gt;
=== Keyvalues ===&lt;br /&gt;
&lt;br /&gt;
* $name &amp;lt;string&amp;gt;&lt;br /&gt;
** Name of the key to compare, example: health&lt;br /&gt;
* $value &amp;lt;any&amp;gt;&lt;br /&gt;
** Value to compare against&lt;br /&gt;
* $compare &amp;lt;string&amp;gt;&lt;br /&gt;
** The condition for passing the filter (default: equal). Should only be set for numeric values&lt;br /&gt;
** Possible values:&lt;br /&gt;
*** equal&lt;br /&gt;
*** less than&lt;br /&gt;
*** greater than&lt;br /&gt;
*** less than or equal&lt;br /&gt;
*** greater than or equal&lt;br /&gt;
&lt;br /&gt;
== $filter_variable ==&lt;br /&gt;
Custom filter that lets you filter entities matching the custom entity variable (declared by firing $SetVar$variablename input of the entity). Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity&lt;br /&gt;
&lt;br /&gt;
=== Keyvalues ===&lt;br /&gt;
&lt;br /&gt;
* $name &amp;lt;string&amp;gt;&lt;br /&gt;
** Name of the variable to compare, example: myvar&lt;br /&gt;
* $value &amp;lt;any&amp;gt;&lt;br /&gt;
** Value to compare against&lt;br /&gt;
* $compare &amp;lt;string&amp;gt;&lt;br /&gt;
** The condition for passing the filter (default: equal). Should only be set for numeric values&lt;br /&gt;
** Possible values:&lt;br /&gt;
*** equal&lt;br /&gt;
*** less than&lt;br /&gt;
*** greater than&lt;br /&gt;
*** less than or equal&lt;br /&gt;
*** greater than or equal&lt;br /&gt;
&lt;br /&gt;
== $filter_datamap ==&lt;br /&gt;
Custom filter that lets you filter entities matching the [https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop. Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity&lt;br /&gt;
&lt;br /&gt;
=== Keyvalues ===&lt;br /&gt;
&lt;br /&gt;
* $name &amp;lt;string&amp;gt;&lt;br /&gt;
** Name of the variable to compare, example: m_iHealth&lt;br /&gt;
* $value &amp;lt;any&amp;gt;&lt;br /&gt;
** Value to compare against&lt;br /&gt;
* $compare &amp;lt;string&amp;gt;&lt;br /&gt;
** The condition for passing the filter (default: equal). Should only be set for numeric values&lt;br /&gt;
** Possible values:&lt;br /&gt;
*** equal&lt;br /&gt;
*** less than&lt;br /&gt;
*** greater than&lt;br /&gt;
*** less than or equal&lt;br /&gt;
*** greater than or equal&lt;br /&gt;
&lt;br /&gt;
== $filter_prop ==&lt;br /&gt;
Custom filter that lets you filter entities matching the [https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop]. Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity&lt;br /&gt;
&lt;br /&gt;
=== Keyvalues ===&lt;br /&gt;
&lt;br /&gt;
* $name &amp;lt;string&amp;gt;&lt;br /&gt;
** Name of the variable to compare, example: m_nCurrency&lt;br /&gt;
* $value &amp;lt;any&amp;gt;&lt;br /&gt;
** Value to compare against&lt;br /&gt;
* $compare &amp;lt;string&amp;gt;&lt;br /&gt;
** The condition for passing the filter (default: equal). Should only be set for numeric values&lt;br /&gt;
** Possible values:&lt;br /&gt;
*** equal&lt;br /&gt;
*** less than&lt;br /&gt;
*** greater than&lt;br /&gt;
*** less than or equal&lt;br /&gt;
*** greater than or equal&lt;br /&gt;
&lt;br /&gt;
== All entities ==&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
&lt;br /&gt;
* $FireUserAsActivator1-4 &amp;lt;string&amp;gt;&lt;br /&gt;
** Acts like FireUser1-4, but the entity becomes the !activator, and the parameter is passed in OnUser1-4 output&lt;br /&gt;
*$FireUser5-8 &amp;lt;string&amp;gt;&lt;br /&gt;
** Fires custom $onuser5-8 output&lt;br /&gt;
* $TakeDamage &amp;lt;int&amp;gt;&lt;br /&gt;
** Take specified amount of damage&lt;br /&gt;
* $TakeDamageFromActivator &amp;lt;int&amp;gt;&lt;br /&gt;
** Take specified amount of damage, the !activator is the damage inflictor&lt;br /&gt;
* $SetModel &amp;lt;string&amp;gt;&lt;br /&gt;
** Set custom model&lt;br /&gt;
* $SetModelOverride &amp;lt;string&amp;gt;&lt;br /&gt;
** Set custom model, only changes the appearence&lt;br /&gt;
* $SetModelSpecial &amp;lt;string&amp;gt;&lt;br /&gt;
** Set custom model, in a special way, it does less additional changes to the entity&lt;br /&gt;
* $SetOwner &amp;lt;entity&amp;gt;&lt;br /&gt;
** Set entity owner&lt;br /&gt;
* $InheritOwner &amp;lt;entity&amp;gt;&lt;br /&gt;
** Set entity owner to the passed entity owner&lt;br /&gt;
* $InheritParent &amp;lt;entity&amp;gt;&lt;br /&gt;
** Set entity parent to the passed entity parent&lt;br /&gt;
* $GetKeyValue &amp;lt;string&amp;gt;&lt;br /&gt;
** Fire OnUser1 output, with key value as a parameter&lt;br /&gt;
* $MoveType &amp;lt;int&amp;gt;,&amp;lt;int&amp;gt;&lt;br /&gt;
** Set move type&lt;br /&gt;
* $PlaySound &amp;lt;string&amp;gt;&lt;br /&gt;
** Play sound from this entity&lt;br /&gt;
* $StopSound &amp;lt;string&amp;gt;&lt;br /&gt;
** Stop playing sound from this entity&lt;br /&gt;
* $SetLocalOrigin &amp;lt;vector&amp;gt;&lt;br /&gt;
** Set origin relative to parent&lt;br /&gt;
* $SetLocalAngles &amp;lt;vector&amp;gt;&lt;br /&gt;
** Set angles relative to parent&lt;br /&gt;
* $SetLocalVelocity &amp;lt;vector&amp;gt;&lt;br /&gt;
** Set velocity relative to parent&lt;br /&gt;
* $TeleportToEntity &amp;lt;entity&amp;gt;&lt;br /&gt;
** Teleport to specified entity&lt;br /&gt;
* $MoveRelative &amp;lt;vector&amp;gt;&lt;br /&gt;
** Move relative to parent (world)&lt;br /&gt;
* $RotateRelative &amp;lt;vector&amp;gt;&lt;br /&gt;
** Rotate relative to parent (world)&lt;br /&gt;
*$SetKey$(keyvalue name) &amp;lt;string&amp;gt;&lt;br /&gt;
**Set keyvalue to specified value&lt;br /&gt;
*$GetKey$(keyvalue name) &amp;lt;string&amp;gt;&lt;br /&gt;
**parameter format: entity|input|default value&lt;br /&gt;
**example: !activator|$DisplayTextCenter|def&lt;br /&gt;
**Trigger the input of an entity, with keyvalue as a paramer (default value if not found)&lt;br /&gt;
*$SetVar$(variable name) &amp;lt;string&amp;gt;&lt;br /&gt;
**Set custom entity variable&lt;br /&gt;
*$GetVar$(variable name) &amp;lt;string&amp;gt;&lt;br /&gt;
**parameter format: entity|input|default value&lt;br /&gt;
**example: !activator|$DisplayTextCenter|def&lt;br /&gt;
**Trigger the input of an entity, with variable as a paramer (default value if not found)&lt;br /&gt;
*$SetData$([https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop name) &amp;lt;string&amp;gt;&lt;br /&gt;
**Set datamap property to specified value&lt;br /&gt;
*$GetData$([https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop name) &amp;lt;string&amp;gt;&lt;br /&gt;
**parameter format: entity|input|default value&lt;br /&gt;
**example: !activator|$DisplayTextCenter|def&lt;br /&gt;
**Trigger the input of an entity, with datamap prop as a paramer (default value if not found)&lt;br /&gt;
*$SetProp$([https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop] name) &amp;lt;string&amp;gt;&lt;br /&gt;
**Set send property to specified value&lt;br /&gt;
*$GetProp$([https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop] name) &amp;lt;string&amp;gt;&lt;br /&gt;
**parameter format: entity|input|default value&lt;br /&gt;
**example: !activator|$DisplayTextCenter|def&lt;br /&gt;
**Trigger the input of an entity, with send prop as a paramer (default value if not found)&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
&lt;br /&gt;
* $OnUser5-8 &amp;lt;string&amp;gt;&lt;br /&gt;
** Called when $FireUser5-8 input is used&lt;br /&gt;
* $OnKilled&lt;br /&gt;
** Fired when the entity is killed. The calling entity no longer exist and cannot be accessed&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Modular_Gatebots&amp;diff=202</id>
		<title>Modular Gatebots</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Modular_Gatebots&amp;diff=202"/>
		<updated>2021-11-12T06:50:59Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: Fixed page having no category (added Templates); Fixed the &amp;quot;syntax highlighting&amp;quot; error category appearing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gatebot templates that can be used alongside other templates&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
* GatebotScout&lt;br /&gt;
* GatebotPyro&lt;br /&gt;
* GatebotSoldier&lt;br /&gt;
* GatebotHeavy&lt;br /&gt;
* GatebotDemoman&lt;br /&gt;
* GatebotEngineer&lt;br /&gt;
* GatebotMedic&lt;br /&gt;
* GatebotSniper&lt;br /&gt;
* GatebotSpy&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
[[File:Modulargatebot.png|thumb|Gatebot template used alongside demoknight template]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
#base robot_giant.pop&lt;br /&gt;
#base robot_standard.pop&lt;br /&gt;
#base robot_gatebot_modular.pop&lt;br /&gt;
WaveSchedule&lt;br /&gt;
{&lt;br /&gt;
	Wave&lt;br /&gt;
	{&lt;br /&gt;
		WaveSpawn&lt;br /&gt;
		{&lt;br /&gt;
			Name &amp;quot;wave01a&amp;quot;&lt;br /&gt;
			Where spawnbot&lt;br /&gt;
			TotalCount 1&lt;br /&gt;
			WaitBeforeStarting 0&lt;br /&gt;
			&lt;br /&gt;
			TFBot&lt;br /&gt;
			{&lt;br /&gt;
				Template T_TFBot_Demoman_Knight&lt;br /&gt;
				AddTemplate GatebotDemoman [$SIGSEGV]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
Popfile: https://testing.potatomvm.tf/tf/scripts/population/robot_gatebot_modular.pop&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=List_of_custom_attributes&amp;diff=201</id>
		<title>List of custom attributes</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=List_of_custom_attributes&amp;diff=201"/>
		<updated>2021-11-12T06:48:28Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: Fixed category not pointing to &amp;quot;Misc Additions&amp;quot;. (category pointed to References)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Attribute Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example Value&lt;br /&gt;
|-&lt;br /&gt;
| parachute disabled&lt;br /&gt;
|if set to 1, the user cannot deploy parachutes&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|fires milk bolt&lt;br /&gt;
|Secondary attack: crossbow fires milk bolt. Regenerates every x seconds&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|force distribute currency on death&lt;br /&gt;
| The bot with the attribute distributes its currency on death, like with sniper kills&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|melee cleave attack&lt;br /&gt;
|Melee weapon attacks all enemies in range&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| extra damage on hit penalty&lt;br /&gt;
|Special mode for revolver: each hit reduces damage, up to x times. Likely does not work&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|extra damage on hit&lt;br /&gt;
|&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|mod teleporter speed boost&lt;br /&gt;
|Grants the players speed buff for 4 seconds after leaving teleporter&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|set turn to ice&lt;br /&gt;
| Turns the victim ragdoll to ice&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| can breathe under water&lt;br /&gt;
|Can player breathe underwater&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| cannot swim&lt;br /&gt;
|If set to 1 player cannon swim &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|swimming mastery&lt;br /&gt;
|If set to 1 player can swim at full class speed&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|ability doubletap teleport&lt;br /&gt;
|If set to 1 player move his teleporter with double tapped movement keys. Does not work&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|mod ignore resists absorbs&lt;br /&gt;
| A worse version of damage piercing since it only ignores battalion backup 35% reduction. Does not work?&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|scoreboard minigame&lt;br /&gt;
|Players with this attribute are granted more points for kills but lose points after death&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|wet immunity&lt;br /&gt;
|Is the player immune to wet statuses like jarate or mad milk&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|ability master sniper&lt;br /&gt;
|Huntsman: reduces shoot time 40%/70%, same functionality as faster reload rate but limited to 2 points&lt;br /&gt;
Sniper rifle: reduces zoom time 40%/70% (like reload rate does). increases charge rate 50%/200%, but actually 100% due to the cap&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|last shot crits&lt;br /&gt;
|Last revolver shot in the clip is critical&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|keep disguise on attack&lt;br /&gt;
|Keep disguise after attacking. Revolver only&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|add give health to teammate on hit&lt;br /&gt;
| On hit ally: heal your teammate for x health, draining your own health&lt;br /&gt;
|75 &lt;br /&gt;
|-&lt;br /&gt;
|mod minigun can holster while spinning&lt;br /&gt;
|Can switch to other weapons while spinning minigun&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|sapper deploy time&lt;br /&gt;
|Probably does nothing, otherwise it adds time required for the sapper to activate&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|kill combo fire rate boost&lt;br /&gt;
|On kill: gives x% fire rate bonus, stacks up to 3 times. Killing different class clears the combo&lt;br /&gt;
|0.1&lt;br /&gt;
|-&lt;br /&gt;
|mult dispenser rate&lt;br /&gt;
|Healh and ammo dispenser rate&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| mvm sentry ammo&lt;br /&gt;
|Sentry max ammo multiplier&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
| build small sentries&lt;br /&gt;
|Sentry is 20% smaller. 33% less health, 25% less metal required to upgrade &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|mult teleporter recharge rate&lt;br /&gt;
|Teleporter recharge duration multiplier &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| disguise as dispenser on crouch&lt;br /&gt;
|As spy, disguise as dispenser when crouching&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|ubercharge transfer&lt;br /&gt;
|On hit, as a medic, with &amp;quot;ubercharge ammo&amp;quot; syringegun: transfer x% of the used uber to the enemy medic&lt;br /&gt;
|34&lt;br /&gt;
|-&lt;br /&gt;
|ubercharge ammo&lt;br /&gt;
| Uses ubercharge as ammo. 100 for full uber use. Syringegun (not crossbow) only &lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
|teleport instead of die&lt;br /&gt;
| On death: x% chance of being immediately revived at spawn with 1 health&lt;br /&gt;
|0.5&lt;br /&gt;
|-&lt;br /&gt;
|mod projectile heat seek power&lt;br /&gt;
| Flare and rocket homing seek power in degrees per second &lt;br /&gt;
|360&lt;br /&gt;
|-&lt;br /&gt;
| mod projectile heat aim error&lt;br /&gt;
|Rocket max error in aim in degrees &lt;br /&gt;
|90&lt;br /&gt;
|-&lt;br /&gt;
|mult dmg vs same class&lt;br /&gt;
|Damage vs same class multipler&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|uber on damage taken&lt;br /&gt;
|On take damage: x% chance of gaining invicibility for 3 seconds&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|mult dmgtaken from melee&lt;br /&gt;
|Damage taken from melee multipier &lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| mult crit when health is below percent&lt;br /&gt;
|Player is crit boosted when below x% health.&lt;br /&gt;
|0.5&lt;br /&gt;
|-&lt;br /&gt;
|penetration damage penalty&lt;br /&gt;
|Penetrated players receive only x% damage. Bullets only. Can be damage bonus despite the name &lt;br /&gt;
| 0.5&lt;br /&gt;
|-&lt;br /&gt;
| firing forward pull&lt;br /&gt;
|Player is pushed x units and speed boosted when firing flamethrower. Limited by ground move speed&lt;br /&gt;
|1000&lt;br /&gt;
|-&lt;br /&gt;
|mod soldier buff range&lt;br /&gt;
| x% soldier buff range bonus &lt;br /&gt;
|1.7&lt;br /&gt;
|-&lt;br /&gt;
|mult rocketjump deploy time&lt;br /&gt;
|Deploy speed bonus when rocket jumping&lt;br /&gt;
|0.4&lt;br /&gt;
|-&lt;br /&gt;
|mul nonrocketjump attackrate&lt;br /&gt;
|Fire rate multiplier when not rocket jumping&lt;br /&gt;
|0.5&lt;br /&gt;
|-&lt;br /&gt;
|aoe heal chance&lt;br /&gt;
|On hit: refire time * (x/60) % chance for aoe heal for 1s (24 hp healed total). use 60 for 100% chance on 1s refire time weapon, 600 for 0.1s&lt;br /&gt;
|80&lt;br /&gt;
|-&lt;br /&gt;
| crits on damage&lt;br /&gt;
| On hit: refire time * (x/60) % chance for crit boost for 3s.  use 60 for 100% chance on 1s refire time weapon, 600 for 0.1s&lt;br /&gt;
|80 &lt;br /&gt;
|-&lt;br /&gt;
|stun on damage&lt;br /&gt;
|On hit: refire time * (x/60) % chance for stun for 3s. use 60 for 100% chance on 1s refire time weapon, 600 for 0.1s&lt;br /&gt;
| 80&lt;br /&gt;
|-&lt;br /&gt;
|aoe blast on damage&lt;br /&gt;
| On hit: refire time * (x/60) % chance for 100 hu blast that stuns players for 2 seconds and applies bleed. use 60 for 100% chance on 1s refire time weapon, 600 for 0.1s &lt;br /&gt;
|80&lt;br /&gt;
|-&lt;br /&gt;
| mult dmg with reduced health&lt;br /&gt;
| Grants up to x% damage bonus based on current health. Only for melee weapons&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|mult airblast primary refire time&lt;br /&gt;
|Multiplier of how fast can pyro use primary fire again after airblasting &lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
|mod flamethrower spinup time&lt;br /&gt;
|Spin up time for flamethrowers in seconds&lt;br /&gt;
|2.4&lt;br /&gt;
|-&lt;br /&gt;
| mult airblast cone scale&lt;br /&gt;
|Player pushback cone scale. Might not work after JI&lt;br /&gt;
|1.8&lt;br /&gt;
|-&lt;br /&gt;
|airblast functionality flags&lt;br /&gt;
|Combination of flamethrower flags, used to limit airblast functionality. You have to add those numbers to enable specific functions (by default all are enabled):&lt;br /&gt;
1 - If airblast should push players&lt;br /&gt;
&lt;br /&gt;
2 - If airblast can put out afterburn&lt;br /&gt;
&lt;br /&gt;
4 - If airblast can reflect projectiles&lt;br /&gt;
&lt;br /&gt;
8 - If airblast can stun players&lt;br /&gt;
&lt;br /&gt;
16 - If airblast disrupts player aim&lt;br /&gt;
|9&lt;br /&gt;
|-&lt;br /&gt;
|reverse airblast&lt;br /&gt;
|airblast pushes players towards the pyro. Does not work? &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|airblast dashes&lt;br /&gt;
|airblast pushes the pyro himself rather than others&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|mult sniper charge per sec with enemy under crosshair&lt;br /&gt;
|Sniper rifle charge rate when looking at the enemy. Still subject to the 200% charge rate limit&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|sniper beep with enemy under crosshair&lt;br /&gt;
|Beeps when the sniper is looking at the enemy while charging, if set to 1 &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|disable buildings on hit&lt;br /&gt;
|On building hit: Disable for x seconds&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
| regenerate stickbomb&lt;br /&gt;
|Regenerates caber on use&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|mult smack time&lt;br /&gt;
|Melee smack time multiplier (0.2s default)&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|medic machinery beam&lt;br /&gt;
|If set to 1, enables healing buildings as medic. increases building healing rate by 10% for each point&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|arrow mastery&lt;br /&gt;
|Shoots additional 2 arrows per level&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|custom item model&lt;br /&gt;
|Custom item model name&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|custom weapon fire sound&lt;br /&gt;
| Custom weapon fire sound. Does not work for the weapon owner&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|explosive bullets&lt;br /&gt;
| Bullets explode in x radius on hit (147 is rocket launcher radius)&lt;br /&gt;
|100&lt;br /&gt;
|-&lt;br /&gt;
|mult projectile scale&lt;br /&gt;
| Projectile model scale multipier&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
| mult projectile count&lt;br /&gt;
|Fire multiple projectiles at once&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
| projectile trail particle&lt;br /&gt;
|Projectile trail particle name&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|explosion particle&lt;br /&gt;
|Explosion particle name&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|radius sleeper&lt;br /&gt;
|Restores sydney sleeper explosion on headshot&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|cannot be sapped&lt;br /&gt;
|Bot with this attribute cannot be affected by the sapper&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|item color rgb&lt;br /&gt;
|Item tint color&lt;br /&gt;
|223424&lt;br /&gt;
|-&lt;br /&gt;
| is invisible&lt;br /&gt;
|Is item invisible &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| cannot taunt&lt;br /&gt;
|Cannot taunt&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|projectile acceleration&lt;br /&gt;
|Rocket acceleration in hu/s^2 &lt;br /&gt;
|500&lt;br /&gt;
|-&lt;br /&gt;
|is miniboss&lt;br /&gt;
|The player is miniboss&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|model scale&lt;br /&gt;
| Player model scale&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|cannot upgrade&lt;br /&gt;
|Player upgrade possibility&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|min respawn time&lt;br /&gt;
|Minimal respawn time in seconds &lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|always crit&lt;br /&gt;
|Weapon always crits &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|mult firerocket rate&lt;br /&gt;
|Sentry rocket fire rate&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|building max level&lt;br /&gt;
|Building max level limit &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|sentry rapid fire&lt;br /&gt;
|Allows for faster sentry fire rate, up to 66 shots per second&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|dont count damage towards crit rate&lt;br /&gt;
| Dealing damage with weapon does not increase crit rate&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|reduced damage rampup&lt;br /&gt;
|Set damage rampup to 20%&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|no reduced damage rampup&lt;br /&gt;
|Set damage rampup to 50%&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|force damage falloff&lt;br /&gt;
|Force damage rampup and falloff&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| no damage falloff&lt;br /&gt;
|No damage rampup and falloff&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|can headshot&lt;br /&gt;
|Weapon can headshot. Hitscan only &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|building color rgb&lt;br /&gt;
|Building tint color&lt;br /&gt;
|23424&lt;br /&gt;
|-&lt;br /&gt;
|building scale&lt;br /&gt;
|Building scale. Values above 1.17 make it difficult for players to build on uneven ground&lt;br /&gt;
|1.54 &lt;br /&gt;
|-&lt;br /&gt;
|mult stun resistance&lt;br /&gt;
|Stun slow multiplier. 0 to be fully stun slow immune &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
|allow friendly fire&lt;br /&gt;
| Allow to deal friendly fire damage&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|receive friendly fire&lt;br /&gt;
| Receive friendly fire from teammates&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|cannot headshot&lt;br /&gt;
|Weapon Cannot headshot&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|mult crit dmg&lt;br /&gt;
|Crit damage multiplier&lt;br /&gt;
|1.54&lt;br /&gt;
|-&lt;br /&gt;
| cannot be headshot&lt;br /&gt;
|Cannot be headshot. Hitscan only&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|attachment name&lt;br /&gt;
| Use this model attachment instead of bonemerging. If the name is empty, it will follow player origin instead.&lt;br /&gt;
Common attachments for robot models: head, eye_1, flag. Some bot models also have eye_2, partyhat. Demo &amp;amp;amp; soldier additionally contain foot_L and foot_R&lt;br /&gt;
&lt;br /&gt;
Common attachments for player models: head, eyes, flag, partyhat, bread_face, bread_head, effect_hand_L, effect_hand_R, bread_hand_r, bread_hand_l, bread_butt, bread_heel_l, foot_L, foot_R&lt;br /&gt;
|head&lt;br /&gt;
|-&lt;br /&gt;
|attachment offset&lt;br /&gt;
| Item offset from the attachment origin &lt;br /&gt;
|4 2 44&lt;br /&gt;
|-&lt;br /&gt;
|attachment angles&lt;br /&gt;
|Rotation for attached items&lt;br /&gt;
|25 25 0&lt;br /&gt;
|-&lt;br /&gt;
| attachment scale&lt;br /&gt;
|Model scale for attached items&lt;br /&gt;
|1.5&lt;br /&gt;
|-&lt;br /&gt;
|mod projectile heat aim time&lt;br /&gt;
|For how long should the projectile home in&lt;br /&gt;
|1.75&lt;br /&gt;
|-&lt;br /&gt;
|projectile gravity&lt;br /&gt;
|Projectile gravity in hu/s^2&lt;br /&gt;
|600 &lt;br /&gt;
|-&lt;br /&gt;
|projectile acceleration time&lt;br /&gt;
|For how long should the projectile accelerate&lt;br /&gt;
|2.55&lt;br /&gt;
|-&lt;br /&gt;
| grenade explode on impact&lt;br /&gt;
|Grenades explode on impact&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
projectile lifetime&lt;br /&gt;
|Projectile lifetime in seconds &lt;br /&gt;
| 52&lt;br /&gt;
|-&lt;br /&gt;
|not solid to players&lt;br /&gt;
| The player is not solid to other players&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|is suicide counter&lt;br /&gt;
|If set, the player takes this amount of damage per second, ignores uber, does not apply damage force&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|always allow taunt&lt;br /&gt;
|Always allow the player to taunt, even midair &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|mult reflect velocity&lt;br /&gt;
| Reflected projectile speed multiplier&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|custom kill icon&lt;br /&gt;
|Use custom kill icon. Icons are defined in scripts/mod_textures.txt in tf_misc_dir.vpk&lt;br /&gt;
|armageddon&lt;br /&gt;
|-&lt;br /&gt;
|mod projectile heat follow crosshair&lt;br /&gt;
|Homing projectiles follow crosshair&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| cannot be upgraded&lt;br /&gt;
|Weapon cannot be upgraded&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|projectile no deflect&lt;br /&gt;
|Projectile cannot be deflected&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| projectile acceleration start time&lt;br /&gt;
|Time before projectile starts accelerating &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| player gravity ballon head&lt;br /&gt;
|Player gravity multiplier when ballon head condition (TF_COND_BALLOON_HEAD). 0 is for regular gravity&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
| mult dmg vs giants&lt;br /&gt;
|Damage multiplier vs giants&lt;br /&gt;
|2.5&lt;br /&gt;
|-&lt;br /&gt;
| mult dmg vs tanks&lt;br /&gt;
| Damage multiplier vs tanks&lt;br /&gt;
|2.5&lt;br /&gt;
|-&lt;br /&gt;
| mult dmg vs npc&lt;br /&gt;
|Damage multiplier vs npc including tanks excluding player bots &lt;br /&gt;
| 2.5&lt;br /&gt;
|-&lt;br /&gt;
| custom hit sound&lt;br /&gt;
|Custom sound played when a player victim is hit with the weapon&lt;br /&gt;
|fdfdf&lt;br /&gt;
|-&lt;br /&gt;
| custom impact sound&lt;br /&gt;
|Custom sound played when a rocket / projectile / bullet hits something&lt;br /&gt;
|fdfdf&lt;br /&gt;
|-&lt;br /&gt;
|custom weapon reload sound&lt;br /&gt;
|Custom weapon reload sound&lt;br /&gt;
|fdfdf &lt;br /&gt;
|-&lt;br /&gt;
|no explosion particles&lt;br /&gt;
| No explosion particles and sounds&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| override projectile type extra&lt;br /&gt;
|Special version of override projectile type that adds more projectile types:&lt;br /&gt;
&amp;quot;mechanicalarmorb&amp;quot; - Short circuit orb&lt;br /&gt;
|mechanicalarmorb&lt;br /&gt;
|-&lt;br /&gt;
|dmg current health&lt;br /&gt;
|Deal additional damage based on fraction of target current health&lt;br /&gt;
|0.34&lt;br /&gt;
|-&lt;br /&gt;
|dmg max health&lt;br /&gt;
| Deal additional damage based on fraction of target max health&lt;br /&gt;
|0.34&lt;br /&gt;
|-&lt;br /&gt;
|dmg missing health&lt;br /&gt;
|Deal additional damage based on fraction of target missing health&lt;br /&gt;
|0.34&lt;br /&gt;
|-&lt;br /&gt;
|cannot be teleported&lt;br /&gt;
|Player cannot be teleported&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| mult medigun range&lt;br /&gt;
|Medigun range multiplier &lt;br /&gt;
|1.5&lt;br /&gt;
|-&lt;br /&gt;
|projectile penetration limit&lt;br /&gt;
|Penetration limit for projectiles&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|max aoe targets&lt;br /&gt;
|Max targets affected by explosives and flamethrowers&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|add cond on hit&lt;br /&gt;
| Add condtion to the target on hit&lt;br /&gt;
| 56&lt;br /&gt;
|-&lt;br /&gt;
|add cond on hit duration&lt;br /&gt;
|Add condtion on hit duration&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|remove cond on hit&lt;br /&gt;
|Remove condtion from target on hit&lt;br /&gt;
|57&lt;br /&gt;
|-&lt;br /&gt;
|add damage type&lt;br /&gt;
|Add damage type to the attack&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|remove damage type&lt;br /&gt;
|Remove damage type from the attack &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|special damage type&lt;br /&gt;
| Sets a special damage type to a range from 1-3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|dmg taken mult from special damage type 1&lt;br /&gt;
| Damage taken multiplier from weapons with special damage type 1&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|dmg taken mult from special damage type 2&lt;br /&gt;
|Damage taken multiplier from weapons with special damage type 2&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|dmg taken mult from special damage type 3&lt;br /&gt;
|Damage taken multiplier from weapons with special damage type 3&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|mult effect duration&lt;br /&gt;
|Effect duration multiplier on drinks, jars&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|effect cond override&lt;br /&gt;
|Effect condtion override on drinks, jars, ubers and many other effects&lt;br /&gt;
| 24&lt;br /&gt;
|-&lt;br /&gt;
|self add cond on hit&lt;br /&gt;
| Add condition to self on hit target&lt;br /&gt;
|54&lt;br /&gt;
|-&lt;br /&gt;
|self add cond on hit duration&lt;br /&gt;
|Add condition to self on hit target duration&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
|add cond on kill&lt;br /&gt;
| Add condition on kill&lt;br /&gt;
|57&lt;br /&gt;
|-&lt;br /&gt;
|add cond on kill&lt;br /&gt;
| Add condition on kill duration&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
|special item description&lt;br /&gt;
|Item description &lt;br /&gt;
|item description&lt;br /&gt;
|-&lt;br /&gt;
| mult flag carrier move speed&lt;br /&gt;
|Flag carrier move speed multipier&lt;br /&gt;
|0.66&lt;br /&gt;
|-&lt;br /&gt;
|overheal from heal on kill&lt;br /&gt;
|On kill healing can overheal &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|fire input on hit&lt;br /&gt;
|Fire input on hit targets. The player is the activator. The format is &amp;amp;lt;target&amp;amp;gt;^&amp;amp;lt;input&amp;amp;gt;^&amp;amp;lt;param&amp;amp;gt;. If omitted, default param is damage received&lt;br /&gt;
| !self^SetHealth^0&lt;br /&gt;
|-&lt;br /&gt;
|fire input on hit name restrict&lt;br /&gt;
|Restrict input on hit to specified targetname or classname. Wildcards are allowed&lt;br /&gt;
|player&lt;br /&gt;
|-&lt;br /&gt;
| grenade bounce speed&lt;br /&gt;
|Grenades bounce off walls, retaining x% of speed after each bounce&lt;br /&gt;
| 0.8&lt;br /&gt;
|-&lt;br /&gt;
|grenade bounce damage&lt;br /&gt;
| Grenades explode on direct hits even if the grenade already touched a wall, dealing x% additional damage&lt;br /&gt;
|0.3&lt;br /&gt;
|-&lt;br /&gt;
|projectile gravity native&lt;br /&gt;
| Gravity for arrows and flares. 0 is default gravity. For grenades and stickybombs, any value will disable gravity &lt;br /&gt;
|0.4&lt;br /&gt;
|-&lt;br /&gt;
|grenade no drag&lt;br /&gt;
|No drag for grenades and stickybombs&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|stickybomb stick to enemies&lt;br /&gt;
|Stickybombs stick to enemies &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| stickybomb no stick&lt;br /&gt;
|Stickybombs do not stick to ground&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|collect currency on kill&lt;br /&gt;
| Bots killed by the weapon drop red money&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|stomp player damage&lt;br /&gt;
|Damage applied to enemies when touching them&lt;br /&gt;
|100&lt;br /&gt;
|-&lt;br /&gt;
|reflect keep team&lt;br /&gt;
|Projectiles reflected by this weapon keep their original team&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|custom wind up sound&lt;br /&gt;
|Custom minigun wind up sound. Does not override default sound&lt;br /&gt;
|sound.wav&lt;br /&gt;
|-&lt;br /&gt;
|custom wind down sound&lt;br /&gt;
|Custom minigun wind down sound. Does not override default sound&lt;br /&gt;
|sound.wav&lt;br /&gt;
|-&lt;br /&gt;
|reflect magnet&lt;br /&gt;
|If set to 1, reflected projectiles aim towards the pyro&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|stay after regenerate&lt;br /&gt;
|Stay after hitting resupply cabinet or upgrading, if the weapon in the inventory in the slot is different&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|custom minigun spin sound&lt;br /&gt;
|Custom minigun spin sound. The sound will not loop unless its made to loop&lt;br /&gt;
|sound.wav&lt;br /&gt;
|-&lt;br /&gt;
|stomp player time&lt;br /&gt;
|Time between each stomp damage and push. By default, it happens every tick&lt;br /&gt;
|0.1&lt;br /&gt;
|-&lt;br /&gt;
|arrow hit kill time&lt;br /&gt;
|If set to any value other than 0, sets custom arrow kill time after hitting something&lt;br /&gt;
|0.3&lt;br /&gt;
|-&lt;br /&gt;
|custom projectile size&lt;br /&gt;
|Custom projectile hitbox size&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
|mod sentry cost&lt;br /&gt;
|Sentry cost multiplier&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|mod dispenser cost&lt;br /&gt;
|Dispenser cost multiplier&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|penetrate teammates&lt;br /&gt;
|Bullets and projectiles penetrate teammates&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|add cond when active&lt;br /&gt;
|Add condition when weapon is active. To provide a second condition, multiply it by 256. To provide a third condition, multiply it by 65536&lt;br /&gt;
|11&lt;br /&gt;
|-&lt;br /&gt;
|mult step height&lt;br /&gt;
|Step height multiplier (x * 18hu)&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
|ignore player clip&lt;br /&gt;
|Ignore player clip brushes&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|allow bunny hop&lt;br /&gt;
|Allow bunny hopping. 1 - auto bhop. 2 - manual bhop&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|fire input on kill&lt;br /&gt;
|Fire input on killed targets. The player is the activator. The format is &amp;lt;target&amp;gt;^&amp;lt;input&amp;gt;^&amp;lt;param&amp;gt;. If omitted, default param is damage received. !projectile is the projectile entity&lt;br /&gt;
|!self^SetHealth^0&lt;br /&gt;
|-&lt;br /&gt;
|fire input on kill name restrict&lt;br /&gt;
|Restrict input on hit to specified targetname. Wildcards are allowed&lt;br /&gt;
|player&lt;br /&gt;
|-&lt;br /&gt;
|fire full clip at once&lt;br /&gt;
|Fire entire clip at once&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|reload full clip at once&lt;br /&gt;
|Reload full clip at once&lt;br /&gt;
|1&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Misc Additions]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=200</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=200"/>
		<updated>2021-11-11T05:52:41Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Engineer Teleporter Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://www.dropbox.com/s/iu84axj1r0vhg0y/mvm&amp;amp;#x20;rottenburg&amp;amp;#x20;reverse&amp;amp;#x20;core&amp;amp;#x20;logic.pop?dl=1rial&amp;amp;#x20;mission here]&lt;br /&gt;
&lt;br /&gt;
== Pacing and Structure ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
   &lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.  If each sub-wave and spawn location is balanced correctly, players will not spend the majority of their time in one part of the map.  If spawns are too fast and too close together, the mission will be a slog and players will struggle to progress.  If new sub-waves are too slow to begin and spawns are spread too far apart, the threat will be too spread out and players can simply ignore the next sub-wave, head straight to the hatch, and let everything come to them.  Do your best to strike a balance between these two extremes.&lt;br /&gt;
&lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== Engineer Teleporter Types ===&lt;br /&gt;
There are 2 separate types of engineer teleporters: regular teleporter behavior, and engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport players to an exit on respawn with no entrance required.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&lt;br /&gt;
&lt;br /&gt;
=== Friendly Robots ===&lt;br /&gt;
When adding friendly bots to your mission, you should balance them to be considerably weaker than the upcoming red robots.  If your friendly bots are strong enough to beat the mission without player interference in a reasonable amount of time, players won&#039;t feel very engaged.  A good system for picking good friendly bots using valve templates is to pick the less dangerous variant of bots you are using in your waves.  If a certain sub-wave uses crit rapid fire giant soldiers on red, send out normal giant soldiers on blu.  This way, blu robots are at an inherent disadvantage and need players to assist them to progress.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do note that players are able to interact with bots in several ways.  Heavies can heal them with lunchbox items, medics can uber them, soldiers can whip them, and bots will take nearby active teleporters.  All of these features can be modified or disabled.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=199</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=199"/>
		<updated>2021-11-11T05:32:18Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Pacing and Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://www.dropbox.com/s/iu84axj1r0vhg0y/mvm&amp;amp;#x20;rottenburg&amp;amp;#x20;reverse&amp;amp;#x20;core&amp;amp;#x20;logic.pop?dl=1rial&amp;amp;#x20;mission here]&lt;br /&gt;
&lt;br /&gt;
== Pacing and Structure ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
   &lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.  If each sub-wave and spawn location is balanced correctly, players will not spend the majority of their time in one part of the map.  If spawns are too fast and too close together, the mission will be a slog and players will struggle to progress.  If new sub-waves are too slow to begin and spawns are spread too far apart, the threat will be too spread out and players can simply ignore the next sub-wave, head straight to the hatch, and let everything come to them.  Do your best to strike a balance between these two extremes.&lt;br /&gt;
&lt;br /&gt;
=== Gate Maps ===&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
=== Engineer Teleporter Types ===&lt;br /&gt;
There are 2 separate types of engineer teleporters: The standard teleporter behavior, And engineer bot teleporter behavior. Engineer bot teleporters act as a new spawn point, and will instantly teleport all players to an exit.  It is recommended to only use bot style teleporters in long maps that do not use gates, combining gates with this feature can cause balance problems as well as confusion for newer players.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=198</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=198"/>
		<updated>2021-11-10T16:24:47Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: /* Lose Condition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://www.dropbox.com/s/iu84axj1r0vhg0y/mvm&amp;amp;#x20;rottenburg&amp;amp;#x20;reverse&amp;amp;#x20;core&amp;amp;#x20;logic.pop?dl=1rial&amp;amp;#x20;mission here]&lt;br /&gt;
&lt;br /&gt;
== Pacing and Structure ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
   &lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.  If each sub-wave and spawn location is balanced correctly, players will not spend the majority of their time in one part of the map.  If spawns are too fast and too close together, the mission will be a slog and players will struggle to progress.  If new sub-waves are too slow to begin and spawns are spread too far apart, the threat will be too spread out and players can simply ignore the next sub-wave, head straight to the hatch, and let everything come to them.  Do your best to strike a balance between these two extremes.&lt;br /&gt;
&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points, use them to cover up holes in the map as well.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=197</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=197"/>
		<updated>2021-11-10T16:09:53Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom popfile keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop popfile mods].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://www.dropbox.com/s/iu84axj1r0vhg0y/mvm&amp;amp;#x20;rottenburg&amp;amp;#x20;reverse&amp;amp;#x20;core&amp;amp;#x20;logic.pop?dl=1rial&amp;amp;#x20;mission here]&lt;br /&gt;
&lt;br /&gt;
== Pacing and Structure ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access and periodically opening them.   &lt;br /&gt;
   &lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.  If each sub-wave and spawn location is balanced correctly, players will not spend the majority of their time in one part of the map.  If spawns are too fast and too close together, the mission will be a slog and players will struggle to progress.  If new sub-waves are too slow to begin and spawns are spread too far apart, the threat will be too spread out and players can simply ignore the next sub-wave, head straight to the hatch, and let everything come to them.  Do your best to strike a balance between these two extremes.&lt;br /&gt;
&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the edict limit (such as move_rope and keyframe_rope).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own game_round_win entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and use them to cover up holes in the map.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
	<entry>
		<id>https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=196</id>
		<title>Reverse MvM Beginners Guide</title>
		<link rel="alternate" type="text/html" href="https://sigwiki.potato.tf/index.php?title=Reverse_MvM_Beginners_Guide&amp;diff=196"/>
		<updated>2021-11-08T02:27:09Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.218: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse MvM refers to a combination of [https://sigwiki.potatomvm.tf/index.php/WaveSchedule custom keyvalues] that flips the teams and win conditions.  Instead of defending against hordes of robots, players are spawned on the blue team and must fight their way to the hatch and deliver the bomb.  Designing missions around this concept can be very complex and requires heavy usage of [https://sigwiki.potatomvm.tf/index.php/Design_PointTemplate_with_hammer_map_editor Point Templates].  It is highly recommended that you have a basic understanding of hammer and map logic beforehand, as well as a deep understanding of our [https://testing.potatomvm.tf/mvm_bigrock_sigdemo.pop custom popfile keyvalues].&lt;br /&gt;
&lt;br /&gt;
An example popfile for Rottenburg can be found [https://www.dropbox.com/s/iu84axj1r0vhg0y/mvm&amp;amp;#x20;rottenburg&amp;amp;#x20;reverse&amp;amp;#x20;core&amp;amp;#x20;logic.pop?dl=1rial&amp;amp;#x20;mission here]&lt;br /&gt;
&lt;br /&gt;
== Pacing and Structure ==&lt;br /&gt;
[[File:Rotten.png|thumb|Custom spawn and sub-wave layout example for Rottenburg.]]&lt;br /&gt;
While the majority of existing mvm maps are suitable, longer and more complex maps are best suited for reverse.  Bigrock, Mannhattan, and Rottenburg are examples of valve maps where it is relatively easy to stop players from getting to the hatch quickly, due to their layouts and/or overall length.  Shorter and more open-ended maps such as Decoy, Mannworks, and Coaltown are still completely valid options, however they will require ample counter-measures to avoid players bypassing every threat and camping at the hatch, usually by blocking the hatch until the last subwave is ended, or blocking off large regions of the map from access.   &lt;br /&gt;
   &lt;br /&gt;
Once you&#039;ve identified a map you feel is best for your mission, the next step is to create bot spawns that move progressively closer to the hatch, combined with sub-waves that give players adequate time to move forward and engage in the next sub-wave after it.  If each sub-wave and spawn location is balanced correctly, players will not spend the majority of their time in one part of the map.  If spawns are too fast and too close together, the mission will be a slog and players will struggle to progress.  If new sub-waves are too slow to begin and spawns are spread too far apart, the threat will be too spread out and players can simply ignore the next sub-wave, head straight to the hatch, and let everything come to them.  Do your best to strike a balance between these two extremes.&lt;br /&gt;
&lt;br /&gt;
Maps with gates are very useful for structuring your waves at the cost of simplicity.  You can enable/disable bot spawns and connect your own custom logic to the outputs of the maps [https://developer.valvesoftware.com/wiki/Trigger_timer_door trigger_timer_door] entity using AddOutput, giving you the option to add rewards or enable new mission mechanics when capturing a gate.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand.  For the bulk of custom logic, a [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] is recommended, as it will instantly trigger when a new wave loads.  For example, if your mission gives the blue team infinite ammo, it wouldn&#039;t hurt to remove redundant ammo packs from the map like so  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
logic_auto &lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
     &amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
     &amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades.  This can be as simple as placing a prop in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain].  For our example, we&#039;ll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	corelogic&lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		logic_auto &lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot; &lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;mainrelay&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;item_ammopack*,Kill,,0,-1&amp;quot;&lt;br /&gt;
				 &lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1&amp;quot;&lt;br /&gt;
			&amp;quot;OnMapSpawn&amp;quot; &amp;quot;wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	forcefield&lt;br /&gt;
	{  &lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		func_forcefield&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;2724.365479 -2303.941650 -143.139458&amp;quot; //rottenburg spawn&lt;br /&gt;
			&amp;quot;angles&amp;quot; &amp;quot;0 90 0&amp;quot;&lt;br /&gt;
			&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
			&amp;quot;rendercolor&amp;quot; &amp;quot;255 255 255&amp;quot;&lt;br /&gt;
			&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot; //10 = don&#039;t render&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot; //2 for red, 3 for blu&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;spawnbarrier&amp;quot;&lt;br /&gt;
			&amp;quot;mins&amp;quot; &amp;quot;-300 -300 -300&amp;quot;&lt;br /&gt;
			&amp;quot;maxs&amp;quot; &amp;quot;300 300 300&amp;quot; //300x300 hu cube&lt;br /&gt;
			&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix.  It is only limited to suffixes (*_start_relay* would not work)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For more complex maps with a lot of entities, it may be beneficial to strip away unnecessary decorative elements of the map to avoid hitting the edict limit.  move_rope and keyframe_rope for example.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Lose Condition==&lt;br /&gt;
In order to fail the wave when players lose, you will need to add your own game_round_win entity like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
PointTemplates [$SIGSEGV]&lt;br /&gt;
{&lt;br /&gt;
	LoseRelay &lt;br /&gt;
	{&lt;br /&gt;
		NoFixup 1&lt;br /&gt;
		game_round_win //ignore this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;TeamNum&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;bots_win_red&amp;quot;&lt;br /&gt;
			&amp;quot;switch_teams&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			&amp;quot;force_map_reset&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
			&amp;quot;classname&amp;quot; &amp;quot;game_round_win&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		logic_relay //trigger this&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			&amp;quot;targetname&amp;quot; &amp;quot;redwin_relay&amp;quot;&lt;br /&gt;
			&amp;quot;OnTrigger&amp;quot; &amp;quot;bots_win_red,RoundWin,,0,-1&amp;quot;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you to decide how you want players to lose.  Timers, VIP Escort, and Tanks are popular ways to do so.&lt;br /&gt;
&lt;br /&gt;
== Upgrade Station ==&lt;br /&gt;
Upgrade stations will need to be placed in blue spawns.  Do your best to strategically place these in areas that don&#039;t interfere with spawn points and use them to cover up holes in the map.&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		station&lt;br /&gt;
		{&lt;br /&gt;
			NoFixup 1&lt;br /&gt;
			func_upgradestation //upgrade station entity&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;mins&amp;quot; &amp;quot;-105 -100 0&amp;quot; &lt;br /&gt;
				&amp;quot;maxs&amp;quot; &amp;quot;105 100 242&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //blu upgrade station model, can be found on potato servers&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;upgradestation&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models\props_mvm\mvm_upgrade_blu.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;255&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			prop_dynamic //invisible collision prop &lt;br /&gt;
			{&lt;br /&gt;
				&lt;br /&gt;
				&amp;quot;targetname&amp;quot; &amp;quot;shopcollision&amp;quot;&lt;br /&gt;
				&amp;quot;angles&amp;quot; &amp;quot;0 -90 0&amp;quot;&lt;br /&gt;
				&amp;quot;DisableBoneFollowers&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;disablereceiveshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;model&amp;quot; &amp;quot;models/props_vehicles/train_flatcar_container.mdl&amp;quot;&lt;br /&gt;
				&amp;quot;disableshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeDamage&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;ExplodeRadius&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademaxdist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;fademindist&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
				&amp;quot;fadescale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;MaxAnimTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;maxdxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;MinAnimTime&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;mindxlevel&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;modelscale&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
				&amp;quot;PerformanceMode&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;pressuredelay&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;RandomAnimation&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderamt&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;renderfx&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;rendermode&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
				&amp;quot;SetBodyGroup&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;skin&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;CollisionGroup&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
				&amp;quot;solid&amp;quot; &amp;quot;6&amp;quot;&lt;br /&gt;
				&amp;quot;spawnflags&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;StartDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
				&amp;quot;origin&amp;quot; &amp;quot;0 0 0&amp;quot;	&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>192.168.1.218</name></author>
	</entry>
</feed>