<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Grayman</id>
	<title>The DarkMod Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Grayman"/>
	<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Special:Contributions/Grayman"/>
	<updated>2026-05-03T09:16:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=GUI_Scripting:_Parsing_of_Set_%27Cmd%27&amp;diff=26760</id>
		<title>GUI Scripting: Parsing of Set &#039;Cmd&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=GUI_Scripting:_Parsing_of_Set_%27Cmd%27&amp;diff=26760"/>
		<updated>2020-11-23T10:39:48Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GUI commands ==&lt;br /&gt;
&lt;br /&gt;
Commands in the main menu GUI with &amp;quot;cmd&amp;quot; as first parameter&lt;br /&gt;
&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mycommand argument1 argument2;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
are handled in &amp;lt;tt&amp;gt;idGameLocal::HandleMainMenuCommands()&amp;lt;/tt&amp;gt; in &#039;&#039;game/game_local.cpp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each of the parts &amp;quot;mycommand&amp;quot;, &amp;quot;argument1&amp;quot;, &amp;quot;argument2&amp;quot; and sometimes the final &amp;quot;;&amp;quot;, the routine is called again. &lt;br /&gt;
&lt;br /&gt;
One special case is just using &amp;quot;set&amp;quot; &amp;quot;cmd&amp;quot; &amp;quot;mycommand&amp;quot;, this will call &amp;lt;tt&amp;gt;HandleMainMenuCommands()&amp;lt;/tt&amp;gt; twice, once with &amp;quot;mycommand&amp;quot; and once with &amp;quot;;&amp;quot; as the &#039;&#039;menuCommand&#039;&#039; parameter. &lt;br /&gt;
&lt;br /&gt;
Commands like &amp;quot;play&amp;quot; or &amp;quot;music&amp;quot; are special cases, too, only the first part (&amp;quot;play&amp;quot; or &amp;quot;music&amp;quot;) is relayed to the routine, but the argument is not. Thus it seems impossible to recover what sound shader is to be played.&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
The routine therefore predicts how many arguments the current command takes, accumulating them on a stack. And when it has seen enough arguments, handles the command and clears the stack before returning. &lt;br /&gt;
&lt;br /&gt;
Any stray &amp;quot;;&amp;quot; as command is silently skipped.&lt;br /&gt;
&lt;br /&gt;
The routine will also complain if you don&#039;t give enough arguments to a command.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;play sound/meta/menu/mnu_hover&amp;quot;;  // will result in &amp;quot;play&amp;quot;, and potentially &amp;quot;;&amp;quot;&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;log &#039;Some text here&#039;;&amp;quot;;           // will result in &amp;quot;log&amp;quot;, &amp;quot;Some text here&amp;quot; and &amp;quot;;&amp;quot; - written to the console&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mainmenu_heartbeat&amp;quot;;              // will result in &amp;quot;mainmenu_heartbeat&amp;quot; and &amp;quot;;&amp;quot;&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mainmenu_heartbeat;&amp;quot;;             // will result in &amp;quot;mainmenu_heartbeat&amp;quot;, &amp;quot;;&amp;quot; and &amp;quot;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;log&amp;quot; command only works on MainMenu guis, and only if the executable has been built with the cvar &amp;quot;tdm_debug_mainmenu&amp;quot; set to &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.iddevnet.com/doom3/guis.php Introduction to Doom3 GUIs]&lt;br /&gt;
* [https://modwiki.dhewm3.org/GUI_scripting GUI Scripting] on modwiki&lt;br /&gt;
* [https://modwiki.dhewm3.org/Set_(GUI_command) The &amp;quot;set&amp;quot; command] on modiwki&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26461</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26461"/>
		<updated>2020-07-11T02:08:46Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seeking Lady Leicester&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|XXL &lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Meanwhile in Newfoundland...&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com The Nexus]&lt;br /&gt;
|Melan, (Jdude, Bikerdude)&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com}}&lt;br /&gt;
|2021?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com Restless Plunder]&lt;br /&gt;
|Melan, (Bikerdude)&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com}}&lt;br /&gt;
|2021?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackheart manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351}}&lt;br /&gt;
|WIP&lt;br /&gt;
|2020-06-11&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26460</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26460"/>
		<updated>2020-07-11T02:00:12Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seeking Lady Leicester&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|XXL &lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Meanwhile in Newfoundland...&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com The Nexus]&lt;br /&gt;
|Melan, (Jdude, Bikerdude)&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com}}&lt;br /&gt;
|2021?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com Restless Plunder]&lt;br /&gt;
|Melan, (Bikerdude)&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com}}&lt;br /&gt;
|2021?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackheart manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351}}&lt;br /&gt;
|WIP&lt;br /&gt;
|2020-06-11&lt;br /&gt;
|XXL&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|2021-04&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26450</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26450"/>
		<updated>2020-07-10T14:51:38Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seeking Lady Leicester&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackheart manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351}}&lt;br /&gt;
|2021?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26447</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26447"/>
		<updated>2020-07-10T07:26:11Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seeking Lady Leicester&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2021&lt;br /&gt;
|2020-07-10&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=GUI_Scripting:_Parsing_of_Set_%27Cmd%27&amp;diff=26423</id>
		<title>GUI Scripting: Parsing of Set &#039;Cmd&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=GUI_Scripting:_Parsing_of_Set_%27Cmd%27&amp;diff=26423"/>
		<updated>2020-06-27T19:03:30Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GUI commands ==&lt;br /&gt;
&lt;br /&gt;
Commands in the main menu GUI with &amp;quot;cmd&amp;quot; as first parameter&lt;br /&gt;
&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mycommand argument1 argument2;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
are handled in &amp;lt;tt&amp;gt;idGameLocal::HandleMainMenuCommands()&amp;lt;/tt&amp;gt; in &#039;&#039;game/game_local.cpp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each of the parts &amp;quot;mycommand&amp;quot;, &amp;quot;argument1&amp;quot;, &amp;quot;argument2&amp;quot; and sometimes the final &amp;quot;;&amp;quot;, the routine is called again. &lt;br /&gt;
&lt;br /&gt;
One special case is just using &amp;quot;set&amp;quot; &amp;quot;cmd&amp;quot; &amp;quot;mycommand&amp;quot;, this will call &amp;lt;tt&amp;gt;HandleMainMenuCommands()&amp;lt;/tt&amp;gt; twice, once with &amp;quot;mycommand&amp;quot; and once with &amp;quot;;&amp;quot; as the &#039;&#039;menuCommand&#039;&#039; parameter. &lt;br /&gt;
&lt;br /&gt;
Commands like &amp;quot;play&amp;quot; or &amp;quot;music&amp;quot; are special cases, too, only the first part (&amp;quot;play&amp;quot; or &amp;quot;music&amp;quot;) is relayed to the routine, but the argument is not. Thus it seems impossible to recover what sound shader is to be played.&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
The routine there fore predicts how much arguments the current command takes, accumulates them on a stack. And when it has seen enough arguments, handles the command and clears the stack before returning. &lt;br /&gt;
&lt;br /&gt;
Any stray &amp;quot;;&amp;quot; as command is silently skipped.&lt;br /&gt;
&lt;br /&gt;
The routine will also complain if you give not enough arguments to a command.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;play sound/meta/menu/mnu_hover&amp;quot;;  // will result in &amp;quot;play&amp;quot;, and potentially &amp;quot;;&amp;quot;&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;log &#039;Some text here&#039;;&amp;quot;;           // will result in &amp;quot;log&amp;quot;, &amp;quot;Some text here&amp;quot; and &amp;quot;;&amp;quot; - written to the console&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mainmenu_heartbeat&amp;quot;;              // will result in &amp;quot;mainmenu_heartbeat&amp;quot; and &amp;quot;;&amp;quot;&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mainmenu_heartbeat;&amp;quot;;             // will result in &amp;quot;mainmenu_heartbeat&amp;quot;, &amp;quot;;&amp;quot; and &amp;quot;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;log&amp;quot; command only works on MainMenu guis, and only if the executable has been built with the cvar &amp;quot;tdm_debug_mainmenu&amp;quot; set to &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.iddevnet.com/doom3/guis.php Introduction to Doom3 GUIs]&lt;br /&gt;
* [https://modwiki.dhewm3.org/GUI_scripting GUI Scripting] on modwiki&lt;br /&gt;
* [https://modwiki.dhewm3.org/Set_(GUI_command) The &amp;quot;set&amp;quot; command] on modiwki&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=GUI_Scripting:_Parsing_of_Set_%27Cmd%27&amp;diff=26422</id>
		<title>GUI Scripting: Parsing of Set &#039;Cmd&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=GUI_Scripting:_Parsing_of_Set_%27Cmd%27&amp;diff=26422"/>
		<updated>2020-06-27T18:05:23Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GUI commands ==&lt;br /&gt;
&lt;br /&gt;
Commands in the main menu GUI with &amp;quot;cmd&amp;quot; as first parameter&lt;br /&gt;
&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mycommand argument1 argument2;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
are handled in &amp;lt;tt&amp;gt;idGameLocal::HandleMainMenuCommands()&amp;lt;/tt&amp;gt; in &#039;&#039;game/game_local.cpp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each of the parts &amp;quot;mycommand&amp;quot;, &amp;quot;argument1&amp;quot;, &amp;quot;argument2&amp;quot; and sometimes the final &amp;quot;;&amp;quot;, the routine is called again. &lt;br /&gt;
&lt;br /&gt;
One special case is just using &amp;quot;set&amp;quot; &amp;quot;cmd&amp;quot; &amp;quot;mycommand&amp;quot;, this will call &amp;lt;tt&amp;gt;HandleMainMenuCommands()&amp;lt;/tt&amp;gt; twice, once with &amp;quot;mycommand&amp;quot; and once with &amp;quot;;&amp;quot; as the &#039;&#039;menuCommand&#039;&#039; parameter. &lt;br /&gt;
&lt;br /&gt;
Commands like &amp;quot;play&amp;quot; or &amp;quot;music&amp;quot; are special cases, too, only the first part (&amp;quot;play&amp;quot; or &amp;quot;music&amp;quot;) is relayed to the routine, but the argument is not. Thus it seems impossible to recover what sound shader is to be played.&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
The routine there fore predicts how much arguments the current command takes, accumulates them on a stack. And when it has seen enough arguments, handles the command and clears the stack before returning. &lt;br /&gt;
&lt;br /&gt;
Any stray &amp;quot;;&amp;quot; as command is silently skipped.&lt;br /&gt;
&lt;br /&gt;
The routine will also complain if you give not enough arguments to a command.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;play sound/meta/menu/mnu_hover&amp;quot;;  // will result in &amp;quot;play&amp;quot;, and potentially &amp;quot;;&amp;quot;&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;log &#039;Some text here&#039;;&amp;quot;;           // will result in &amp;quot;log&amp;quot;, &amp;quot;Some text here&amp;quot; and &amp;quot;;&amp;quot; - written to the console&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mainmenu_heartbeat&amp;quot;;              // will result in &amp;quot;mainmenu_heartbeat&amp;quot; and &amp;quot;;&amp;quot;&lt;br /&gt;
 set &amp;quot;cmd&amp;quot; &amp;quot;mainmenu_heartbeat;&amp;quot;;             // will result in &amp;quot;mainmenu_heartbeat&amp;quot;, &amp;quot;;&amp;quot; and &amp;quot;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.iddevnet.com/doom3/guis.php Introduction to Doom3 GUIs]&lt;br /&gt;
* [https://modwiki.dhewm3.org/GUI_scripting GUI Scripting] on modwiki&lt;br /&gt;
* [https://modwiki.dhewm3.org/Set_(GUI_command) The &amp;quot;set&amp;quot; command] on modiwki&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=26125</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=26125"/>
		<updated>2020-02-23T19:50:59Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Known bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Patrol Sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targeting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
==Sleep Location==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleep_location 0&#039;&#039; - sleep on the floor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleep_location 1&#039;&#039; - sleep on a bed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleep_location 2&#039;&#039; - sleep on a chair (further details below)&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Direction===&lt;br /&gt;
&lt;br /&gt;
If you want the AI to start from the left side of the bed (as you look towards the head of the bed)  then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
===Sleeping position in the bed===&lt;br /&gt;
&lt;br /&gt;
====Head to Toe====&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed facing away from it and about half way between the head and the foot; adjust as needed towards the head or foot direction of the bed.&lt;br /&gt;
&lt;br /&gt;
====Sideways====&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Monster clip the bed or not?==&lt;br /&gt;
&lt;br /&gt;
Yes, monster clip should not directly affect the sleep animation and the bed should normally be monsterclipped anyway. The only way it might affect it is if the clip sticks out too far and stops the AI getting near enough. In that case reduce the clip close to the bed edge and/or adjust the slide value (see [[#Sleeping position in the bed]])&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays wrong way head to foot===&lt;br /&gt;
&lt;br /&gt;
If the AI is laying the wrong way with his head at the foot of the bed and his feet at the head then see [[#Direction]]&lt;br /&gt;
&lt;br /&gt;
==Sleeping While Sitting==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;The following pertains to TDM versions 2.05 or earlier. See below for 2.06 and later behavior.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also possible to put an AI to sleep on a chair. This requires a more elaborate setup than the regular sleeping while lying down, as the animations of the sleeping behaviour have to be exchanged. In order to achieve this, a dummy entity is required. Up to now, this entity is not part of the core mod, so the following has to be copy/pasted into a def file, that then has to be put into the folder &amp;quot;def&amp;quot; of the mod or the FM that uses it:&lt;br /&gt;
&lt;br /&gt;
 entityDef atdm:animation_sleep_sit {&lt;br /&gt;
     &amp;quot;inherit&amp;quot;        &amp;quot;atdm:prop_base&amp;quot;&lt;br /&gt;
     &amp;quot;editor_usage&amp;quot;    &amp;quot;Used to make AI sleep in a sitting position instead of laying down&amp;quot;&lt;br /&gt;
     &amp;quot;model&amp;quot;            &amp;quot;models/darkmod/misc/system/empty.lwo&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;            &amp;quot;RightHand&amp;quot;&lt;br /&gt;
     &lt;br /&gt;
     &amp;quot;replace_anim_sit_2_sleep_lft&amp;quot;    &amp;quot;sit_2_sleep_on_chair&amp;quot;&lt;br /&gt;
     &amp;quot;replace_anim_sit_2_sleep_rgt&amp;quot;    &amp;quot;sit_2_sleep_on_chair&amp;quot;&lt;br /&gt;
     &amp;quot;replace_anim_sleep_idle_lft&amp;quot;    &amp;quot;sit_sleep_idle&amp;quot;&lt;br /&gt;
     &amp;quot;replace_anim_sleep_idle_rgt&amp;quot;    &amp;quot;sit_sleep_idle&amp;quot;&lt;br /&gt;
     &amp;quot;replace_anim_sleep_2_sit_lft&amp;quot;    &amp;quot;sleep_2_sit_on_chair&amp;quot;&lt;br /&gt;
     &amp;quot;replace_anim_sleep_2_sit_rgt&amp;quot;    &amp;quot;sleep_2_sit_on_chair&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     &amp;quot;origin&amp;quot;         &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
     &amp;quot;angles&amp;quot;         &amp;quot;0 0 0&amp;quot;&lt;br /&gt;
     &amp;quot;remove&amp;quot;         &amp;quot;0&amp;quot;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
The AI has to get the following spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;def_attach5&amp;quot; &amp;quot;atdm:animation_sleep_sit&amp;quot;&lt;br /&gt;
 &amp;quot;pos_attach5&amp;quot; &amp;quot;hand_r&amp;quot;&lt;br /&gt;
 &amp;quot;lay_down_slide_dist&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The first two spawnargs attach the dummy entity to the AI, while the third spawnarg prevents the AI from sliding into the chair. This method works with both patrol sleepers as well as non-patroling AI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PLEASE NOTE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This method replaces the &amp;quot;sleeping on a bed&amp;quot; behaviour. This means that the spawnarg &amp;quot;sleep_location&amp;quot; has to be set to &amp;quot;1&amp;quot;. Setting it to 0 will still lead to the AI sleeping on the ground. The AI will only be able to sleep in a sitting position as long as the entity &amp;quot;atdm:animation_sleep_sit&amp;quot; is attached to it. Removing the entity will revert the sleeping behaviour, so the AI will sleep on a bed again.&lt;br /&gt;
&lt;br /&gt;
The AI sitting down is part of the sleeping behaviour, much like it is part of &amp;quot;sleeping on the bed&amp;quot;. This means, with this method the AI will sit down and immedaitely go to sleep. It is &#039;&#039;NOT&#039;&#039; possible to play other sitting animations in between.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;The following pertains to TDM versions 2.06 or later&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use this sequence of path nodes if you want a patrolling AI to sit and take a nap for a while, then resume his patrol:&lt;br /&gt;
&lt;br /&gt;
* path_corner (AI walks to this)&lt;br /&gt;
* path_sit (&#039;angle&#039; provides the sitting angle)&lt;br /&gt;
* path_sleep (&#039;sleep_location&#039; &#039;2&#039; tells the AI to fall asleep after sitting)&lt;br /&gt;
* path_wait (&#039;wait&#039; and &#039;wait_max&#039; determine how long the AI sleeps; he will wake up and stand up when finished)&lt;br /&gt;
* path_corner (AI walks to this)&lt;br /&gt;
&lt;br /&gt;
Use this sequence of path nodes if you want the AI to stay seated after he wakes up:&lt;br /&gt;
&lt;br /&gt;
* path_corner (AI walks to this)&lt;br /&gt;
* path_sit (&#039;angle&#039; provides the sitting angle)&lt;br /&gt;
* path_sleep (&#039;sleep_location&#039; &#039;2&#039; tells the AI to fall asleep after sitting)&lt;br /&gt;
* path_wait (&#039;wait&#039; and &#039;wait_max&#039; determine how long the AI sleeps)&lt;br /&gt;
* path_wakeup (he will wake up and not stand up)&lt;br /&gt;
&lt;br /&gt;
Use these spawnargs on an AI who will start a mission sitting and sleeping, and will stay that way until roused:&lt;br /&gt;
&lt;br /&gt;
* &#039;sleep_location&#039; &#039;2&#039;&lt;br /&gt;
* &#039;sleeping&#039; &#039;1&#039;&lt;br /&gt;
&lt;br /&gt;
In contrast to the system used in version 2.05 and earlier, it is possible to interrupt other sitting behaviour like reading or writing with the sleeping behaviour. The earlier versions only allowed for an AI to directly sit down and sleep, then wake up and stand up again.&lt;br /&gt;
&lt;br /&gt;
== Sleeping Warnings ==&lt;br /&gt;
&lt;br /&gt;
In TDM 2.08, warnings have been added when an AI tries to play a sleeping animation in the wrong place. The warning looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;WARNING: &amp;lt;AI name&amp;gt; (x y z) can&#039;t sleep: too far from sleeping location &amp;lt;name of path_corner&amp;gt; (x y z)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The first x/y/z vector is the AI&#039;s origin, and the second is the location of the path_corner where sleeping is supposed to take place. If the AI starts the mission sleeping (using the &amp;quot;sleeping&amp;quot; spawnarg), then no path_corner is involved, and no name will be given.&lt;br /&gt;
&lt;br /&gt;
To correct this problem, examine the spot where the AI is supposed to sleep. Ill-used monster_clip is usually the problem.&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sitting_Behaviour_for_AI&amp;diff=26124</id>
		<title>Sitting Behaviour for AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sitting_Behaviour_for_AI&amp;diff=26124"/>
		<updated>2020-02-23T19:46:55Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Sitting Angles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are two different ways to get AI to sit in your map; pick the one that best suits your needs.&lt;br /&gt;
&lt;br /&gt;
==Sitting at Map Start==&lt;br /&gt;
The easier of the two options. Just set the spawnarg &amp;quot;sitting&amp;quot; &amp;quot;1&amp;quot; on the AI, and the AI will sit down immediately at map start. They will stay this way until alerted to the point of searching, at which point they will get up.  After calming down, they will go back and sit again.  &lt;br /&gt;
&lt;br /&gt;
You must place the AI next to the chair, facing away from the direction you want him to sit (or use angles, see below).&lt;br /&gt;
&lt;br /&gt;
The code does not detect the surface the AI sits on, so he will sit on thin air if there is no stool or chair there.&lt;br /&gt;
&lt;br /&gt;
2.03 -- if you put &amp;quot;sitting&amp;quot; &amp;quot;1&amp;quot; on an AI and then target him at pathnodes that have an &amp;quot;alert_idle_only&amp;quot; &amp;quot;1&amp;quot; spawnarg on them, the AI will sit as long as he is not alert, but will start patrolling (and will no longer sit) once he is alerted.  I&#039;m not exactly sure why this works and the AI doesn&#039;t sit down at the new pathnodes he walks to, but this method seems to work well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sitting During Patrol==&lt;br /&gt;
It is now possible to have the AI sitting down and getting up during patrolling, using a &#039;&#039;&#039;path_sit&#039;&#039;&#039; entity.  You can place the path_sit anywhere, angled away from the direction you want him to sit. The path_sit should be preceded by a path_corner, which is where you want him to stand when he begins the sitting animation.&lt;br /&gt;
&lt;br /&gt;
You can set &amp;quot;wait&amp;quot; and/or &amp;quot;wait_max&amp;quot; to let the AI wait and get up after that time.  &amp;quot;Wait&amp;quot; is a minimum wait time, so if you set &amp;quot;wait&amp;quot; to 5 seconds and &amp;quot;wait_max&amp;quot; to 10 seconds, the AI will wait between 5 and 10 seconds every time. If you only set &amp;quot;wait&amp;quot;, the AI will always wait exactly 5 seconds. If you only set &amp;quot;wait_max&amp;quot;, the AI will wait between 0 and 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t set either one, the AI will stay seated and you can also do path_anims and path_waits for example (they&#039;ll play that animation on the torso channel while sitting).&lt;br /&gt;
&lt;br /&gt;
The AI will get up if alerted to searching state or if it has to move to another position.&lt;br /&gt;
&lt;br /&gt;
Example: If you want an AI to sit, and then play a warm hands after 20 seconds, you would use a path_sit without a wait spawnarg (AI sits down, the path_sit task is terminated and the AI stays seated), then a path_wait for 20 seconds, then a path_anim, then another path_wait, and then a path_corner or something (AI gets up and walks to path_corner).&lt;br /&gt;
&lt;br /&gt;
If you have any path problems, eg, with AI clipping into Monsterclip on chair, then make the chair a moveable and add frobable 0 and notPushable 1 and remove the monsterclip. It is effectively static but the AI will path it correctly without monsterclip.&lt;br /&gt;
&lt;br /&gt;
== Sitting Angles ==&lt;br /&gt;
&lt;br /&gt;
Mappers may want more control over where AI face after sitting down.  By default, AI stand directly in front of the chair when sitting or standing.  This doesn&#039;t work well if you want AI to sit close to a table, however.  The solution is to use a &amp;quot;sit_down_angle&amp;quot; spawnarg on the AI (if AI has &#039;sitting&#039; spawnarg but on the path_sit if that is used.)  This will cause the AI to spin in the chair after sitting until they face the direction listed.  They will turn back when it is time to stand up.&lt;br /&gt;
&lt;br /&gt;
Note that the angles are relative to the world, not the AI.&lt;br /&gt;
&lt;br /&gt;
Other sitting spawnargs include:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sit_down_slide_dist&amp;quot;, which is currently 8; controls how far AI slide back onto the chair when sitting down.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sitting_turn_pivot&amp;quot;			&amp;quot;The offset of the pivot for turning while seated.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Sitting Warnings ==&lt;br /&gt;
&lt;br /&gt;
In TDM 2.08, warnings have been added when an AI tries to play a sitting animation in the wrong place. The warning looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;WARNING: &amp;lt;AI name&amp;gt; (x y z) can&#039;t sit: too far from sitting location &amp;lt;name of path_corner&amp;gt; (x y z)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The first x/y/z vector is the AI&#039;s origin, and the second is the location of the path_corner where sitting is supposed to take place. If the AI starts the mission sitting (using the &amp;quot;sitting&amp;quot; spawnarg), then no path_corner is involved, and no name will be given.&lt;br /&gt;
&lt;br /&gt;
To correct this problem, examine the spot where the AI is supposed to sit. Ill-used monster_clip is usually the problem.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sitting_Behaviour_for_AI&amp;diff=26117</id>
		<title>Sitting Behaviour for AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sitting_Behaviour_for_AI&amp;diff=26117"/>
		<updated>2020-02-17T13:45:40Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Sitting During Patrol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are two different ways to get AI to sit in your map; pick the one that best suits your needs.&lt;br /&gt;
&lt;br /&gt;
==Sitting at Map Start==&lt;br /&gt;
The easier of the two options. Just set the spawnarg &amp;quot;sitting&amp;quot; &amp;quot;1&amp;quot; on the AI, and the AI will sit down immediately at map start. They will stay this way until alerted to the point of searching, at which point they will get up.  After calming down, they will go back and sit again.  &lt;br /&gt;
&lt;br /&gt;
You must place the AI next to the chair, facing away from the direction you want him to sit (or use angles, see below).&lt;br /&gt;
&lt;br /&gt;
The code does not detect the surface the AI sits on, so he will sit on thin air if there is no stool or chair there.&lt;br /&gt;
&lt;br /&gt;
2.03 -- if you put &amp;quot;sitting&amp;quot; &amp;quot;1&amp;quot; on an AI and then target him at pathnodes that have an &amp;quot;alert_idle_only&amp;quot; &amp;quot;1&amp;quot; spawnarg on them, the AI will sit as long as he is not alert, but will start patrolling (and will no longer sit) once he is alerted.  I&#039;m not exactly sure why this works and the AI doesn&#039;t sit down at the new pathnodes he walks to, but this method seems to work well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sitting During Patrol==&lt;br /&gt;
It is now possible to have the AI sitting down and getting up during patrolling, using a &#039;&#039;&#039;path_sit&#039;&#039;&#039; entity.  You can place the path_sit anywhere, angled away from the direction you want him to sit. The path_sit should be preceded by a path_corner, which is where you want him to stand when he begins the sitting animation.&lt;br /&gt;
&lt;br /&gt;
You can set &amp;quot;wait&amp;quot; and/or &amp;quot;wait_max&amp;quot; to let the AI wait and get up after that time.  &amp;quot;Wait&amp;quot; is a minimum wait time, so if you set &amp;quot;wait&amp;quot; to 5 seconds and &amp;quot;wait_max&amp;quot; to 10 seconds, the AI will wait between 5 and 10 seconds every time. If you only set &amp;quot;wait&amp;quot;, the AI will always wait exactly 5 seconds. If you only set &amp;quot;wait_max&amp;quot;, the AI will wait between 0 and 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t set either one, the AI will stay seated and you can also do path_anims and path_waits for example (they&#039;ll play that animation on the torso channel while sitting).&lt;br /&gt;
&lt;br /&gt;
The AI will get up if alerted to searching state or if it has to move to another position.&lt;br /&gt;
&lt;br /&gt;
Example: If you want an AI to sit, and then play a warm hands after 20 seconds, you would use a path_sit without a wait spawnarg (AI sits down, the path_sit task is terminated and the AI stays seated), then a path_wait for 20 seconds, then a path_anim, then another path_wait, and then a path_corner or something (AI gets up and walks to path_corner).&lt;br /&gt;
&lt;br /&gt;
If you have any path problems, eg, with AI clipping into Monsterclip on chair, then make the chair a moveable and add frobable 0 and notPushable 1 and remove the monsterclip. It is effectively static but the AI will path it correctly without monsterclip.&lt;br /&gt;
&lt;br /&gt;
== Sitting Angles ==&lt;br /&gt;
&lt;br /&gt;
Mappers may want more control over where AI face after sitting down.  By default, AI stand directly in front of the chair when sitting or standing.  This doesn&#039;t work well if you want AI to sit close to a table, however.  The solution is to use a &amp;quot;sit_down_angle&amp;quot; spawnarg on the AI (if AI has &#039;sitting&#039; spawnarg but on the path_sit if that is used.)  This will cause the AI to spin in the chair after sitting until they face the direction listed.  They will turn back when it is time to stand up.&lt;br /&gt;
&lt;br /&gt;
Note that the angles are relative to the world, not the AI.&lt;br /&gt;
&lt;br /&gt;
Other sitting spawnargs include:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sit_down_slide_dist&amp;quot;, which is currently 8; controls how far AI slide back onto the chair when sitting down.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sitting_turn_pivot&amp;quot;			&amp;quot;The offset of the pivot for turning while seated.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26087</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=26087"/>
		<updated>2020-01-01T15:41:52Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seeking Lady Leicester&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2020&lt;br /&gt;
|2020-01-01&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2020&lt;br /&gt;
|2018-10-15&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum &amp;amp; The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2020&lt;br /&gt;
|2019-10-20&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2020&lt;br /&gt;
|2019-10-20&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=25545</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=25545"/>
		<updated>2019-10-20T19:31:31Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-10-15&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum &amp;amp; The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2020&lt;br /&gt;
|2019-10-20&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2020&lt;br /&gt;
|2019-10-20&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Alert_%26_Suspicion_Triggers&amp;diff=25528</id>
		<title>Alert &amp; Suspicion Triggers</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Alert_%26_Suspicion_Triggers&amp;diff=25528"/>
		<updated>2019-09-25T14:10:11Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Suspicious Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO PLACEHOLDER&lt;br /&gt;
&lt;br /&gt;
AI will alert if they see or hear the player but alerts and suspicion (low alert) can be triggered by the AI noticing suspicious or missing objects and other situations. This article describes how to control this.&lt;br /&gt;
&lt;br /&gt;
==Controlled Alerts==&lt;br /&gt;
&lt;br /&gt;
Alarms etc.&lt;br /&gt;
&lt;br /&gt;
For atdm:alarm_sound, alert_volume_mod ranges from -60 (no sounds at all) to positive 10.&lt;br /&gt;
&lt;br /&gt;
One thing I&#039;d like to know is how to start AI off (at map start) at an elevated alert level rather than their default, casual state.&lt;br /&gt;
&lt;br /&gt;
alert_initial is the spawnarg you need. This is a floating point value.&lt;br /&gt;
&lt;br /&gt;
These are the thresholds.&lt;br /&gt;
&lt;br /&gt;
idle: 0 ... 1.5 &lt;br /&gt;
observant: 1.5 ... 6&lt;br /&gt;
suspicious: 6 ... 8&lt;br /&gt;
searching: 8 ... 18&lt;br /&gt;
agitated searching: 18 ... 23&lt;br /&gt;
combat: &amp;gt;23 (but alert_initial doesn&#039;t work in this case, AI need an enemy to go into combat)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;edit:  These were changed in 2.0 so that suspicious wasn&#039;t so tiny, but I forget the new values.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which number is the one they go to after having spotted the player? The one where they go back to their regular patrols but keep their weapon out? &lt;br /&gt;
&lt;br /&gt;
	This is still idle &amp;lt; 1.5. &lt;br /&gt;
&lt;br /&gt;
The code switches to a different AlertIdle state when the AI has encountered an enemy before. There&#039;s no difference in terms of the numbers.&lt;br /&gt;
&lt;br /&gt;
==Suspicious Objects==&lt;br /&gt;
TO DO&lt;br /&gt;
noisemaker arrow on floor&lt;br /&gt;
&lt;br /&gt;
CHECK OUT &lt;br /&gt;
AIUSE_&lt;br /&gt;
STIM_VISUAL&lt;br /&gt;
&lt;br /&gt;
That&#039;s what is issued by STIM_VISUAL on arrows, doors and AI by default. The AI code reacts to those stims based on the AI_USE spawnarg.&lt;br /&gt;
&lt;br /&gt;
NOTES PASTED FOR REF TO REWRITE. SOME OF THIS MAY BE OBOSOLETE OR IRRELEVANT FOR THE MAPPER - I&#039;VE GOT TO FIGURE IT OUT YET...&lt;br /&gt;
&lt;br /&gt;
script function for responding to STIM_VISUAL in ai_darkmod_base, and made some tweaks to the visibility tests in the dll (not in the pk4 yet). By adding a visual stim to the arrow and arrow result defs, I&#039;ve got the AI reacting to arrows that it sees (only the first time it sees each one, using the ResponseIgnore script function.)&lt;br /&gt;
&lt;br /&gt;
However, I&#039;d like to have the AI react differently to different sorts of objects.&lt;br /&gt;
&lt;br /&gt;
variable to classify the response to stim_visual:&lt;br /&gt;
IMO, I think it&#039;s easier to just create different stims for these different cases, with the functionality in the response. E.g., stim_body, stim_suspicious_item, stim_missing_item, etc.&lt;br /&gt;
&lt;br /&gt;
Ok, I&#039;ve implemented a bunch of .def variables that contain what I need. I have them all documented in a file that is intended to be included by scriptors that I will check in with the source.&lt;br /&gt;
&lt;br /&gt;
Here are the contents that I&#039;ve added so far&lt;br /&gt;
&lt;br /&gt;
// This is the key name for the AIUse spawn arg&lt;br /&gt;
#define AIUSE_KEY &amp;quot;AIUse&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// And below are values in use&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_WEAPON &amp;quot;AIUSE_WEAPON&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_LIGHTSOURCE &amp;quot;AIUSE_LIGHTSOURCE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_BLOOD_EVIDENCE &amp;quot;AIUSE_BLOOD_EVIDENCE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_SEAT &amp;quot;AIUSE_SEAT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_COOK &amp;quot;AIUSE_COOK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_EAT &amp;quot;AIUSE_EAT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_PET &amp;quot;AIUSE_PET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_CATTLE &amp;quot;AIUSE_CATTLE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_PERSON &amp;quot;AIUSE_PERSON&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_PEST &amp;quot;AIUSE_PEST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define AIUSE_DRINK &amp;quot;AIUSE_DRINK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
All the FOLLOWING are in effect are strings. The AI scripts look to see what strings are attached as spawnargs under the specified keys, and use those to decide what &amp;quot;type&amp;quot; of entity it is. So if its a noble, they can adress it as a noble. If its a rat, they can address it as a pest.&lt;br /&gt;
&lt;br /&gt;
// The following strings define classes of person, these are used if AIUse is AIUSE_PERSON &lt;br /&gt;
&lt;br /&gt;
// This is the key value&lt;br /&gt;
#define PERSONTYPE_KEY &amp;quot;personType&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// And these are values in use, add to this list as needed&lt;br /&gt;
#define PERSONTYPE_GENERIC &amp;quot;PERSONTYPE_GENERIC&amp;quot;&lt;br /&gt;
#define PERSONTYPE_NOBLE &amp;quot;PERSONTYPE_NOBLE&amp;quot;&lt;br /&gt;
#define PERSONTYPE_CITYWATCH &amp;quot;PERSONTYPE_CITYWATCH&amp;quot;&lt;br /&gt;
#define PERSONTYPE_MERC_PROGUARD &amp;quot;PERSONTYPE_MERC_PROGUARD&amp;quot;&lt;br /&gt;
#define PERSONTYPE_BUILDER &amp;quot;PERSONTYPE_BUILDER&amp;quot;&lt;br /&gt;
#define PERSONTYPE_PAGAN &amp;quot;PERSONTYPE_PAGAN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------------------&lt;br /&gt;
// The following strings define genders of person, these are used if AIUse is AIUSE_PERSON &lt;br /&gt;
// I don&#039;t want to get into the politics of gender identity here, this is just because the recorded&lt;br /&gt;
// voices will likely be in gendered languages. As such, I&#039;m just including the categories&lt;br /&gt;
// that are involved in word gender selection in many languages.&lt;br /&gt;
#define PERSONGENDER_KEY &amp;quot;personGender&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define PERSONGENDER_MALE &amp;quot;PERSONGENDER_MALE&amp;quot;&lt;br /&gt;
#define PERSONGENDER_FEMALE &amp;quot;PERSONGENDER_FEMALE&amp;quot;&lt;br /&gt;
#define PERSONGENDER_UNKNOWN &amp;quot;PERSONGENDER_UNKNOWN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------------------&lt;br /&gt;
// The following key and values are used for identifying types of lights&lt;br /&gt;
#define AIUSE_LIGHTTYPE_KEY &amp;quot;lightType&amp;quot;&lt;br /&gt;
#define AIUSE_LIGHTTYPE_TORCH &amp;quot;AIUSE_LIGHTTYPE_TORCH&amp;quot;&lt;br /&gt;
#define AIUSE_LIGHTTYPE_GASLAMP &amp;quot;AIUSE_LIGHTTYPE_GASLAMP&amp;quot;&lt;br /&gt;
#define AIUSE_LIGHTTYPE_ELECTRIC &amp;quot;AIUSE_LIGHTTYPE_ELECTRIC&amp;quot;&lt;br /&gt;
#define AIUSE_LIGHTTYPE_MAGIC &amp;quot;AIUSE_LIGHTTYPE_MAGIC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------------------&lt;br /&gt;
// The following defines a key that should be non-0 if the device should be on&lt;br /&gt;
#define AIUSE_SHOULDBEON_KEY &amp;quot;shouldBeOn&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------------------&lt;br /&gt;
// The following defines a key that should be non-0 if the device should be closed&lt;br /&gt;
#define AIUSE_SHOULDBECLOSED_KEY &amp;quot;shouldBeClosed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
torch and candle flames turning on a visual stimulus if they are marked as supposed to be on and get doused. The stimulus turns off if it is relit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m adding the following spawn args. Note that they are spawn args, not variables, so they can&#039;t be changed other than in a .def file.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;canLightTorches&amp;quot; : &amp;gt; 0.0 indicates the AI can light torches&lt;br /&gt;
&amp;quot;canOperateSwitchLights&amp;quot; : &amp;gt; 0.0 indicates AI can turn on switched lights&lt;br /&gt;
&lt;br /&gt;
&amp;quot;chanceNoticeWeapon&amp;quot;: 0.0 to 1.0, probability of noticing a seeable weapon not belonging to a friend&lt;br /&gt;
&amp;quot;chanceNoticePerson&amp;quot;: 0.0 to 1.0, probability of noticing (reacting to) a seeable person be it friend, foe or enemy. &lt;br /&gt;
&amp;quot;chanceNoticeBlood&amp;quot;: 0.0 to 1.0, probability of noticing a see-able patch of blood.&lt;br /&gt;
&amp;quot;chanceNoticeLight&amp;quot;: 0.0 to 1.0, probability of noticing a visible light source that is in the wrong state&lt;br /&gt;
&amp;quot;chanceNoticeMissingItem&amp;quot;: 0.0 to 1.0, probability of noticing a visible missing item&lt;br /&gt;
&amp;quot;chanceNoticeDoor&amp;quot;: 0.0 to 1.0, probability of noticing a visible open door that should be closed&lt;br /&gt;
&lt;br /&gt;
New values&lt;br /&gt;
&amp;quot;AIUSE_MONSTER&amp;quot;&lt;br /&gt;
&amp;quot;AIUSE_UNDEAD&amp;quot;&lt;br /&gt;
&amp;quot;PERSONTYPE_THIEF&amp;quot;&lt;br /&gt;
&lt;br /&gt;
They are in the .def files. The defintions of the tags are in the AIUseValues.script file for inclusion in scripts.&lt;br /&gt;
&lt;br /&gt;
==Suspicious Changes==&lt;br /&gt;
&lt;br /&gt;
TO DO&lt;br /&gt;
&lt;br /&gt;
Doors ajar, torches extinguished&lt;br /&gt;
&lt;br /&gt;
Q: If an AI is looking at a torch and the player shoots it out, will the AI react to it with more suspicion than just a general &#039;when did this go out?&#039;?&lt;br /&gt;
&lt;br /&gt;
A: If the AI is close enough to catch some spray from the water arrow then he alerts but not otherwise.&lt;br /&gt;
&lt;br /&gt;
==Missing or Moved Objects, Absence Markers==&lt;br /&gt;
&lt;br /&gt;
By default AI will take no notice if loot or other objects are missing or moved so it is up to the mapper to judge whether any prominent items ought to be noticed by their absence. The contents of a jewellery box or just a broom moved in a cupboard need not be a cause for attention whereas a guard protecting a precious artifact on a plinth in the middle of a hall should react if it is stolen or even moved off the pedestal onto the floor.&lt;br /&gt;
&lt;br /&gt;
===Making AI Notice a Missing Object===&lt;br /&gt;
&lt;br /&gt;
To make AI notice, become suspicious or alert if an object is missing or moved add to any kind of moveable entity including loot, corpses, any moveable object you think the AI should notice is missing, the following property and values:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;absence_noticeability&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
...with a decimal fraction anywhere in the range from 0 to 1. The closer to 1 then the more likely the AI will notice. Examples:&lt;br /&gt;
&lt;br /&gt;
* 1 means the AI will always notice the object is missing 100% of the time&lt;br /&gt;
* 0.5  means the AI will only notice the object is missing 50% of the time&lt;br /&gt;
* 0  means the AI will never notice the object is missing (default)&lt;br /&gt;
&lt;br /&gt;
It works this way: If the object is moved or taken away then an absence marker is created at the original location (at the center of the bounds) which emits a visual stim. When the item is put back at its original location (within the original bounds of the entity), the absence marker is destroyed again.&lt;br /&gt;
&lt;br /&gt;
Currently the AI will notice at a range of 500 units. Check later if this is changed. It may even become a spawnarg you can adjust to AI do not alert too far away if a tiny ring is missing 25 metres away.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: The object must be illuminated well enough for the AI to see. If the AI do not notice then this is the first thing to check. It must also of course, not be obscured.&lt;br /&gt;
&lt;br /&gt;
The marker also may physically impede the player (in one instance, blocked jumping and forced crouching beneath).&lt;br /&gt;
&lt;br /&gt;
===How Far Can the Object can be Moved Without Suspicion?===&lt;br /&gt;
&lt;br /&gt;
By default  the player can move an object (with the &#039;&#039;absence_noticeability&#039;&#039; property) within the original boundaries of the entity&#039;s start position without arousing suspicion. So a crate that is only pushed a foot or so to one side will not arouse suspicion. If it is pushed further than half its own width then it will. But this can be controlled:&lt;br /&gt;
&lt;br /&gt;
You can add to the object the property:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;absence_bounds_tolerance&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
...with any value in doom units and this will be added to the boundaries of the entity&#039;s start position. So a crate sized 30 units cube even without this property can be pushed one foot and still clip its original boundaries and so not be noticed. But set this spawnarg to 100 and now it can be moved an extra 100 units in any direction without being noticed.&lt;br /&gt;
&lt;br /&gt;
If you want it to be moveable anywhere within a set area, eg, anywhere on a table top, then see next section....&lt;br /&gt;
&lt;br /&gt;
===Moving within a Location or to a New Location Without Suspicion===&lt;br /&gt;
&lt;br /&gt;
What if you want the player to be able to move a vase anywhere on a table top or to a separate location completely - to another table or another room - without arousing suspicion? You can define the location: Do the following:&lt;br /&gt;
&lt;br /&gt;
* Create a brush entity to cover the table top and at least the height of the vase.&lt;br /&gt;
* Texture the brush with clip texture, convert it to func_static, then give it a suitable name, eg &#039;vase_area&#039;. &lt;br /&gt;
* To the original vase add the property &#039;&#039;&#039;&#039;&#039;absence_location_1&#039;&#039;&#039;&#039;&#039; and give it the name of the brush, eg, &#039;vase_area&#039;.&lt;br /&gt;
&lt;br /&gt;
So long as the vase is partly within that brush then the AI will not be concerned it has been moved about (eg, by a servant for cleaning.)&lt;br /&gt;
&lt;br /&gt;
And you can put the location brush elsewhere too so the vase can be given the property &#039;&#039;absence_bounds_tolerance&#039;&#039; (see above) to extend its coverage around its original location plus the new location brush might be placed on another table or in the kitchen sink if you want.&lt;br /&gt;
&lt;br /&gt;
It is planned to enable multiple alternate locations where it is OK for the object to be (eg, the cleaner put the vase on the next table.) Check at a later time if you can use absence_location_2, 3, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricting Alerts to one Type(team) of AI==&lt;br /&gt;
&lt;br /&gt;
Normally all AI will respond to an absence marker. If you only want one AI team to react then give the object the &#039;&#039;&#039;&#039;&#039;team&#039;&#039;&#039;&#039;&#039; property with the value of the team type (see [[AI Relations (Editing)#AI Types (Teams)|teams]].) Missing objects without this property may be noticed by all AI on all teams.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Controlling AI Reactions to Missing Objects==&lt;br /&gt;
&lt;br /&gt;
The reaction of AI on noticing an object is missing can be controlled from slight suspicion up to full alert. Add this property to the object:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;absence_alert&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
And give it a value 0 to 23. This value will be added to the AI&#039;s current state in the range:&lt;br /&gt;
&lt;br /&gt;
* 0 to 1.5 = idle&lt;br /&gt;
* 1.5 to 6 = observant&lt;br /&gt;
* 6 to 8 = suspicious&lt;br /&gt;
* 8 to 18 = searching&lt;br /&gt;
* 18 to 23 = agitated searching&lt;br /&gt;
&lt;br /&gt;
So if the AI is already suspicious (say 7) then notices an object missing which had &#039;&#039;absence_alert 4&#039;&#039; on it then the AI state will now be 11 and it will start searching.&lt;br /&gt;
 &lt;br /&gt;
If this property is not set then the AI&#039;s alert level will be set to a default of just below agitated searching.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Model_Scaling&amp;diff=25420</id>
		<title>Model Scaling</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Model_Scaling&amp;diff=25420"/>
		<updated>2019-07-03T02:43:50Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Alternative Techniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page Title: Rescaling Models with Dark Radiant&#039;s “Model Scaler”&lt;br /&gt;
&lt;br /&gt;
[This page is a draft. Please help make it better. Geep]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Operation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Model Scaler&amp;quot; button, on the left side of the DR screen, is the best way to resize a model symmetrically. As its name implies, it works with models, NOT entities, brushes, patches, or AI.&lt;br /&gt;
&lt;br /&gt;
After creating or selecting a model instance in the grid, pressing “Model Scaler” encloses it in a rectangular box. Drag any of the box vertices (blue dots) with a mouse to enlarge or shrink it. The vertex movement may not stay aligned perfectly with the mouse cursor movement, so you may need to interrupt the drag and reposition.&lt;br /&gt;
&lt;br /&gt;
Scaling by a Fixed Amount&lt;br /&gt;
&lt;br /&gt;
Usually the scaling is simply done by eye.  But if it is important to scale up or down by an (approximately) fixed factor:&lt;br /&gt;
•	Select a relatively fine grid size, so Model Scaler handles move more fluidly.&lt;br /&gt;
•	Before scaling, note the size of some dimension (e.g., x width) in a DR orthogonal view&lt;br /&gt;
•	Calculate what that “target dimension” should be once the factor is applied.&lt;br /&gt;
•	As you resize with Model Scaler, keep an eye on the target dimension.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the Model Scaler Works ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using the Model Scaler clones the original distributed model, resizes it by changing all the edge lengths, and saves the result as a new file in the models/map_specific folder/scaled/ folder of your FM.  So if you create a grammaphone instance by picking…&lt;br /&gt;
	darkmod/musical/grammo3.ase&lt;br /&gt;
…and use Model Scaler, the result in the Entity Viewer for “model” might be:&lt;br /&gt;
	models/map_specific/scaled/grammo3_scaled1.ase&lt;br /&gt;
If you create multiple objects with different scale factors, multiple files are created, with trailing number bumped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative Techniques ==&lt;br /&gt;
If you want to scale in one dimension only, do the following:&lt;br /&gt;
&lt;br /&gt;
1. Select the model.&lt;br /&gt;
&lt;br /&gt;
2. Delete any &amp;quot;rotation&amp;quot; spawnarg on the model.&lt;br /&gt;
&lt;br /&gt;
3. Click the model scaler button.&lt;br /&gt;
&lt;br /&gt;
4. Click and hold on the box corner that you&#039;re going to move.&lt;br /&gt;
&lt;br /&gt;
5. Hold down the shift key.&lt;br /&gt;
&lt;br /&gt;
6. Drag the cursor in the desired direction. If you drag in the x direction, for example, both the y and z model dimensions will remain the same.&lt;br /&gt;
&lt;br /&gt;
7. Leave the model scaler.&lt;br /&gt;
&lt;br /&gt;
8. Save the map. This sets the new scaled model as the one to be used.&lt;br /&gt;
&lt;br /&gt;
9. Rotate the new scaled model back to where it originally was before you deleted the &amp;quot;rotation&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
== Outside Dark Radiant ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The most obvious alternative is to do model scaling outside of DR, e.g., in Blender. The appeal of this roundtripping may vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Matrix Editing ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As for DR-only methods, generally, with a model, if you try the DR’s top menu “Modify/Rotate and scale…”, the Scale controls are grayed out. This is to discourage you from making scaling changes to the transformation matrix.  The TDM/Doom 3 engine has significant runtime shortcomings in using the transformation (aka “rotation”) matrix for scaling. This includes problems with lighting, rendering, and collisions. If you REALLY need to use this older technique by hand-editing the matrix, see [Rescaling,_Resizing,_Models_in_Dark_Radiant] and [Resizing_Models].&lt;br /&gt;
&lt;br /&gt;
Remaining use cases for this older problematic technique might be:&lt;br /&gt;
•	For non-symmetric scaling (in which case you use different factors for X, Y, and Z matrix entries).&lt;br /&gt;
•	When you can’t use Modify Scaler because, say, you don’t have a model available, only an Entity (e.g., turnip stub).&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Model_Scaling&amp;diff=25419</id>
		<title>Model Scaling</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Model_Scaling&amp;diff=25419"/>
		<updated>2019-07-03T02:37:40Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Alternative Techniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page Title: Rescaling Models with Dark Radiant&#039;s “Model Scaler”&lt;br /&gt;
&lt;br /&gt;
[This page is a draft. Please help make it better. Geep]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Operation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Model Scaler&amp;quot; button, on the left side of the DR screen, is the best way to resize a model symmetrically. As its name implies, it works with models, NOT entities, brushes, patches, or AI.&lt;br /&gt;
&lt;br /&gt;
After creating or selecting a model instance in the grid, pressing “Model Scaler” encloses it in a rectangular box. Drag any of the box vertices (blue dots) with a mouse to enlarge or shrink it. The vertex movement may not stay aligned perfectly with the mouse cursor movement, so you may need to interrupt the drag and reposition.&lt;br /&gt;
&lt;br /&gt;
Scaling by a Fixed Amount&lt;br /&gt;
&lt;br /&gt;
Usually the scaling is simply done by eye.  But if it is important to scale up or down by an (approximately) fixed factor:&lt;br /&gt;
•	Select a relatively fine grid size, so Model Scaler handles move more fluidly.&lt;br /&gt;
•	Before scaling, note the size of some dimension (e.g., x width) in a DR orthogonal view&lt;br /&gt;
•	Calculate what that “target dimension” should be once the factor is applied.&lt;br /&gt;
•	As you resize with Model Scaler, keep an eye on the target dimension.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the Model Scaler Works ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using the Model Scaler clones the original distributed model, resizes it by changing all the edge lengths, and saves the result as a new file in the models/map_specific folder/scaled/ folder of your FM.  So if you create a grammaphone instance by picking…&lt;br /&gt;
	darkmod/musical/grammo3.ase&lt;br /&gt;
…and use Model Scaler, the result in the Entity Viewer for “model” might be:&lt;br /&gt;
	models/map_specific/scaled/grammo3_scaled1.ase&lt;br /&gt;
If you create multiple objects with different scale factors, multiple files are created, with trailing number bumped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative Techniques ==&lt;br /&gt;
If you want to scale in one dimension only, then do the following:&lt;br /&gt;
&lt;br /&gt;
1. Delete any &amp;quot;rotation&amp;quot; spawnarg on the model.&lt;br /&gt;
2. Click and hold on the box corner that you&#039;re going to move.&lt;br /&gt;
3. Hold down the shift key.&lt;br /&gt;
4. Drag the cursor in the desired direction. If you drag in the x direction, for example, both the y and z model dimensions will remain the same.&lt;br /&gt;
5. Leave the model scaler.&lt;br /&gt;
6. Save the map. This sets the new scaled model as the one in use.&lt;br /&gt;
7. Rotate the new scaled model back to where it originally was before you deleted the &amp;quot;rotation&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
== Outside Dark Radiant ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The most obvious alternative is to do model scaling outside of DR, e.g., in Blender. The appeal of this roundtripping may vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Matrix Editing ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As for DR-only methods, generally, with a model, if you try the DR’s top menu “Modify/Rotate and scale…”, the Scale controls are grayed out. This is to discourage you from making scaling changes to the transformation matrix.  The TDM/Doom 3 engine has significant runtime shortcomings in using the transformation (aka “rotation”) matrix for scaling. This includes problems with lighting, rendering, and collisions. If you REALLY need to use this older technique by hand-editing the matrix, see [Rescaling,_Resizing,_Models_in_Dark_Radiant] and [Resizing_Models].&lt;br /&gt;
&lt;br /&gt;
Remaining use cases for this older problematic technique might be:&lt;br /&gt;
•	For non-symmetric scaling (in which case you use different factors for X, Y, and Z matrix entries).&lt;br /&gt;
•	When you can’t use Modify Scaler because, say, you don’t have a model available, only an Entity (e.g., turnip stub).&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Atdm:campaign_info&amp;diff=25412</id>
		<title>Atdm:campaign info</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Atdm:campaign_info&amp;diff=25412"/>
		<updated>2019-05-29T18:35:46Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Weapon Limits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The campaign info entity can be placed once in a mission to control the amount of inventory items and weapons that are carried over to the next mission in a campaign. It&#039;s possible to define more than one rule on such an entity, see below for a description of the spawnarg and their syntax.&lt;br /&gt;
&lt;br /&gt;
Because it&#039;s possible to define many rules on one entity, it doesn&#039;t make much sense to place more than one atdm:campaign_info entity in your map.&lt;br /&gt;
&lt;br /&gt;
The rules will be enforced after the &amp;quot;Mission Complete&amp;quot; event when the map is still active, i.e. it&#039;s &amp;quot;filtering&amp;quot; outgoing items. Each map can have its own campaign info entity to define its own set of rules.&lt;br /&gt;
&lt;br /&gt;
= Syntax =&lt;br /&gt;
While weapons and &amp;quot;regular&amp;quot; items such as the lantern, keys or health potions are all located in the player&#039;s inventory, there are two different sets of spawnargs for defining the carry-over rules after Mission Complete.&lt;br /&gt;
&lt;br /&gt;
For both types of spawnargs it&#039;s possible to define a &amp;quot;general&amp;quot; rule (which is applied to all difficulty levels) and optionally a difficulty-specific rule. If provided, the difficulty-specific rule will always override the general one. The difficulty-specific spawnargs have the same syntax as the general ones except for the &amp;lt;tt&amp;gt;diff_N&amp;lt;/tt&amp;gt; prefix (with N being the difficulty level ranging from 0 to 2 - &amp;quot;Easy&amp;quot; is 0).&lt;br /&gt;
&lt;br /&gt;
A limit value of -1 will always imply &amp;quot;no limit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note: when adding an atdm:campaign_info entity to your map, it will inherit a set of default spawnargs from the entityDef. These default values &#039;&#039;&#039;don&#039;t apply any limits&#039;&#039;&#039; to the player&#039;s inventory they&#039;re just there for easy reference when ticking the &amp;quot;Show inherited&amp;quot; checkbox in DarkRadiant&#039;s Entity Inspector, to save you some typing.&lt;br /&gt;
&lt;br /&gt;
== Weapon Limits ==&lt;br /&gt;
The general syntax is lie this:&lt;br /&gt;
 &amp;quot;weapon_limit_WEAPONNAME&amp;quot; &amp;quot;X&amp;quot;&lt;br /&gt;
with WEAPONNAME being a placeholder for the actual weapon names. The weapon name is a unique identifier found on the weapon items and their ammo. The value &amp;quot;X&amp;quot; is an integer number defining the maximum amount of ammo that is allowed to be carried over to the next mission (for ammo-based weapons like the Water Arrow). For melee weapons without ammo (Shortsword, Blackjack) values greater than &amp;quot;1&amp;quot; won&#039;t make any difference and will be treated like a &amp;quot;1&amp;quot; (which is equivalent to &amp;quot;will be kept&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;weapon_limit_X&amp;quot; spawnarg affects all difficulty levels, but it&#039;s possible to override that one by adding spawnargs with a &amp;quot;diff_N_&amp;quot; prefix, e.g. &amp;quot;diff_0_weapon_limit_waterarrow&amp;quot; which will trump the &amp;quot;weapon_limit_waterarrow&amp;quot; without prefix. (The &amp;quot;diff_0&amp;quot; prefix applies to Easy difficulty.)&lt;br /&gt;
&lt;br /&gt;
A limit value of &amp;quot;-1&amp;quot; always means &amp;quot;no limit&amp;quot;, e.g. there is no carry-over limit applied to this weapon. &lt;br /&gt;
&lt;br /&gt;
Working examples for a few weapon limits are:&lt;br /&gt;
 &amp;quot;weapon_limit_gasarrow&amp;quot;                        &amp;quot;1&amp;quot;	// Max. 1 gas arrow on all difficulties&lt;br /&gt;
 &amp;quot;diff_0_weapon_limit_blackjack&amp;quot;                &amp;quot;0&amp;quot;	// &amp;quot;0&amp;quot; means: no blackjack on easy&lt;br /&gt;
 &amp;quot;diff_0_weapon_limit_sword&amp;quot;                    &amp;quot;1&amp;quot;	// &amp;quot;1&amp;quot; means: the sword will be kept (&amp;quot;-1&amp;quot; works as well) on easy&lt;br /&gt;
 &amp;quot;diff_0_weapon_limit_waterarrow&amp;quot;               &amp;quot;20&amp;quot;	// keep no more than 20 water arrows on easy&lt;br /&gt;
 &amp;quot;diff_0_weapon_limit_firearrow&amp;quot;                &amp;quot;-1&amp;quot;	// &amp;quot;-1&amp;quot; means: no limit on easy&lt;br /&gt;
&lt;br /&gt;
For quick reference, possible weapon IDs for vanilla TDM are (you can look them up in the tdm_weapon_....def files in the tdm_defs01.pk4):&lt;br /&gt;
 shortsword&lt;br /&gt;
 blackjack&lt;br /&gt;
 broadhead&lt;br /&gt;
 waterarrow&lt;br /&gt;
 firearrow&lt;br /&gt;
 ropearrow&lt;br /&gt;
 gasarrow&lt;br /&gt;
 mossarrow&lt;br /&gt;
 noisemaker&lt;br /&gt;
 vinearrow&lt;br /&gt;
 unarmed (for completeness&#039; sake)&lt;br /&gt;
&lt;br /&gt;
Note: while &amp;quot;unarmed&amp;quot; is a valid weaponname it&#039;s not necessary or recommended to apply a limit to that one. I doubt that any desired effect could be achieved by applying any rules to this type.&lt;br /&gt;
&lt;br /&gt;
== Inventory Item Limits ==&lt;br /&gt;
Inventory item limits apply to all non-weapon items in the player&#039;s inventory. The rules defined by these spawnargs are referencing the items by their inventory name (the one defined by the &amp;quot;inv_name&amp;quot; spawnarg). &lt;br /&gt;
&lt;br /&gt;
Each inventory item limit rule consists of two spawnargs carrying the same number. &lt;br /&gt;
 &amp;quot;item_N&amp;quot;     &amp;quot;INV_NAME&amp;quot;&lt;br /&gt;
 &amp;quot;limit_N&amp;quot;    &amp;quot;LIMIT&amp;quot;&lt;br /&gt;
Here, N is an index used by the game code to distinguish the various rules from each other. INV_NAME is the placeholder for the item&#039;s name, e.g. &amp;quot;Health Potion&amp;quot;. LIMIT is an integer value which can either be &amp;quot;-1&amp;quot; (no limit) or any number between &amp;quot;0&amp;quot; and about 2 billion, e.g. &amp;quot;4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following example&lt;br /&gt;
 &amp;quot;item_1&amp;quot;     &amp;quot;Breath Potion&amp;quot;&lt;br /&gt;
 &amp;quot;limit_1&amp;quot;    &amp;quot;4&amp;quot;&lt;br /&gt;
will limit the amount of Breath Potions that are allowed to be taken to the next mission to a maximum of 4. This rule will apply to all difficulty levels (unless they&#039;re overridden, see below).&lt;br /&gt;
&lt;br /&gt;
Like the weapon limits it&#039;s possible to override the general rule by providing a difficulty-specific rule, one with a &amp;lt;tt&amp;gt;diff_N_&amp;lt;/tt&amp;gt; prefix (with N ranging from 0 (easy) to 2 (hard)). Example:&lt;br /&gt;
&lt;br /&gt;
 // Keep max. 3 holy waters on all levels, but keep unlimited amount on easy (override)&lt;br /&gt;
 &amp;quot;item_2&amp;quot;               &amp;quot;Holy Water&amp;quot;&lt;br /&gt;
 &amp;quot;limit_2&amp;quot;              &amp;quot;3&amp;quot;&lt;br /&gt;
 &amp;quot;diff_0_limit_2&amp;quot;       &amp;quot;-1&amp;quot;&lt;br /&gt;
Note 1: It&#039;s not necessary to specify &amp;quot;diff_0_item_2&amp;quot; spawnarg, it&#039;s enough to override the limit spawnarg only: &amp;lt;tt&amp;gt;diff_0_limit_2&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Note 2: This rule example has the number 2 because I&#039;ve been assuming there is a rule with number 1 already defined on the entity (the Breath Potion example above).&lt;br /&gt;
&lt;br /&gt;
{{editing}}&lt;br /&gt;
[[Category:Campaigns]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Visual_scan&amp;diff=24648</id>
		<title>Visual scan</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Visual_scan&amp;diff=24648"/>
		<updated>2019-04-12T13:48:09Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the routine used to detect whether the AI can see the player, and to alert it if this is the case. &lt;br /&gt;
&lt;br /&gt;
Each frame, a probability check depending on lightgem brightness, player distance and the AI&#039;s visual acuity is used to detect whether the AI has spotted the player.&lt;br /&gt;
&lt;br /&gt;
The base probability, &#039;&#039;&#039;clampVal&#039;&#039;&#039; is calculated from the light gem value itself. The value should represent the probability to be seen within half a second (so with a clampVal of 0.1, you would be spotted approximately once in 5 seconds).&lt;br /&gt;
I used a polynomial function for this, since the AI were not sensitive enough with a linear increase. &lt;br /&gt;
Here is it (for the other math freaks):&lt;br /&gt;
&lt;br /&gt;
clampVal = -0.03 + 0.03 * lgem + 1 * 10^-3 * lgem^2 + 1.3 * 10^-4 * lgem^3 - 1.1 * 10^-5 * lgem^4 + 1.892 * 10^-7 * lgem^5&lt;br /&gt;
&lt;br /&gt;
(The grey curve shows the probability before tweaking.)&lt;br /&gt;
&lt;br /&gt;
[[Image:clamp.jpg]]&lt;br /&gt;
&lt;br /&gt;
The clampVal is scaled with the AI&#039;s visual acuity.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;&#039;clampDistance&#039;&#039;&#039;, the probability stays constant, and it decreases linearly towards zero at the &#039;&#039;&#039;safeDistance&#039;&#039;&#039;. Both distances are scaled with the clampVal, so that you have to be really close to the AI in ambient light to be spotted at all. The maximum values for full brightness are given by the Cvars &amp;quot;tdm_ai_sightmin&amp;quot; (default: 11 meters) and &amp;quot;tdm_ai_sightmax&amp;quot; (default: 60 m).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;returnVal&#039;&#039;&#039; is the resulting probability depending on the player distance. With this probability, a random check is performed each frame whether the AI has spotted the player. If this succeeds, the AI has caught a glance of the player and becomes alerted.&lt;br /&gt;
&lt;br /&gt;
The alert increase also depends on lightgem brightness, player distance and acuity and is currently between 4 and 13 units (currently hard coded, but will become a spawnarg soon). This means, that an idle AI should go to observant for a single low alert, but into searching if the player was spotted in bright light.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For debugging, you can use the [[Cvars|Cvar]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tdm_ai_visdist_show 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ai}} {{sdk}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=24640</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=24640"/>
		<updated>2019-04-10T22:07:12Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-10-15&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2019-02-09&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=24639</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=24639"/>
		<updated>2019-04-10T22:05:57Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [[#Editing_this_table|below]].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;3%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|129|William Steele 5: Commerce Bank}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19957-fan-mission-commerce-bank-by-grayman-2019410/}}&lt;br /&gt;
|2019-04-10&lt;br /&gt;
|30&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|Mansion&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|135|Marsh of Rahena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19951-fan-mission-marsh-of-rahena-by-erh-201945}}&lt;br /&gt;
|2019-04-05&lt;br /&gt;
|60.3&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress, Horror &lt;br /&gt;
|Undead, Spiders, Horror Themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|134|Shadows of Northdale ACT 2}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19936-fan-mission-shadows-of-northdale-act-ii-by-goldwell-20190320/}} [https://www.youtube.com/watch?v=KO-eIOX9nqI Briefing]&lt;br /&gt;
|2019-03-20&lt;br /&gt;
|417&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|133|Cleaning Up the Neighbourhood}}&lt;br /&gt;
|some1stoleit and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19898-fan-mission-cleaning-up-the-neighbourhood-by-some1stoleitbikerdude-20190219/}}&lt;br /&gt;
|2019-02-18&lt;br /&gt;
|34.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|132|Hidden Hands: Initiation}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19796-hidden-hands-initiation-27122018/}}&lt;br /&gt;
|2018-12-27&lt;br /&gt;
|92.5&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt;Ship&lt;br /&gt;
|Spiders, Extra-natural entities&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|131|The Night of Reluctant Benefaction}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19787-fan-mission-the-night-of-reluctant-benefaction/}}&lt;br /&gt;
|2018-12-24&lt;br /&gt;
|11.9&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|130|Mission of Mercy}}&lt;br /&gt;
|joebarnin&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19642-fan-mission-mission-of-mercy-by-joebarnin-20180914/}}&lt;br /&gt;
|2018-09-14&lt;br /&gt;
|10.1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|129|William Steele 4: The Warrens}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19618-fan-mission-the-warrens-by-grayman-201891/}}&lt;br /&gt;
|2018-09-01&lt;br /&gt;
|53&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|Yes&lt;br /&gt;
|CoS1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}} [https://www.youtube.com/watch?v=p4nP3lYd6wg Briefing]&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Custom &amp;lt;br&amp;gt;(not EFX)&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; In memoriam of Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude and Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}} [https://www.youtube.com/watch?v=KfElYZs-FaE Briefing]&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}} [https://www.youtube.com/watch?v=SRRCRVFHruc Briefing]&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}} [https://www.youtube.com/watch?v=Tk9DtOT4kjc Briefing]&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}} [https://www.youtube.com/watch?v=BZnSuLVatYM Trailer] [https://www.youtube.com/watch?v=CPlu8fEzyGM Briefing]&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan Mission Series#Corbin series|Corbin]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta 1: Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}} [https://www.youtube.com/watch?v=xeuIO_GcYjQ Briefing] &amp;lt;br&amp;gt; [https://www.youtube.com/watch?v=w6e_SJ0_JOM Gameplay trailer] &lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|359&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Crucible of Omens series|Crucible of Omens]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]] (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}} [https://www.youtube.com/watch?v=JzPpmDK9Fxw Briefing] &lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}} [https://www.youtube.com/watch?v=f5NuTJEZ8VE Trailer]&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|Horror themes &amp;lt;br&amp;gt; Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}} [https://www.youtube.com/watch?v=e3rdZfq4Omc Trailer]&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}} [https://www.youtube.com/watch?v=vYSZY7VzFEo Briefing]&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}} [https://www.youtube.com/watch?v=WmPfCfbeWvg Trailer]&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking Out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Inn/Tavern &amp;lt;br&amp;gt; City Streets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Sewers &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}} [https://www.youtube.com/watch?v=kcIe2Ucojqw Briefing]&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Lost Civilizations &amp;lt;br&amp;gt; Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Museum Heists&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Horror &lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]] (Winner)&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] (Winner) &amp;lt;br&amp;gt; T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap As You Sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Daylight &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] &lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] (Winner) &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Platforming/Jumping &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]] (Winner)&lt;br /&gt;
|Castle/Fortress &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Church/Cathedral; City Missions; Outdoor/Pagan, Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] / Baltona 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No &amp;lt;br&amp;gt; [https://www.moddb.com/mods/the-dark-mod/addons/unofficial-thieves-efx  Unofficial EFX Build]&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Training &amp;lt;br&amp;gt; Platforming/Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}} [https://www.youtube.com/watch?v=yrGxoi3LSGg Briefing]&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions, please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
== Table notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mission Type Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bear in mind that individual FMs can have combinations of two or three of these overarching genres/themes, rather than just a single one.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Bank Jobs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside a local banking institution. Will often contain the outsmarting of security systems, gaining access to a safe and cracking its code.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Castle/Fortress&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside or outside a castle or fortress, either one that serves as a military garrison, or as someone&#039;s private residence. Frequently involves background characters from the nobility. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;City Missions&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission that is set mainly in the streets and public spaces of an urban area, such as a town or city. Though the player is most often out on the streets, these missions tend to also involve some degree of exploration and infiltration into private and public buildings alike.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Church/Cathedral&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in and around religious buildings and institutions, such as churches, monasteries, cathedrals, church bureaus, church workshops, etc. Frequently involves [[Clergy/Builder_Characters|ecclesiastical characters]] from the TDM setting&#039;s [[Builders|Builder Church]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Experimental&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves some creative design or gameplay element that isn&#039;t typical for the vast majority of TDM missions. FMs set in highly unusual environments, or with a puzzle-like nature, can fit under this label.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Inn/Tavern&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set mostly in and around an inn, tavern or shanty. Usually focused on robbing some rich guest, acquiring an item stored by the guest at the inn, or gathering intel at the inn.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Jail/Prison&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving an escape from a prison (by the imprisoned player character), infiltration of a prison to gather intel from inmates or help an inmate escape the prison, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Lost Civilizations&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focused on the exploration of ancient ruins, whether above ground or in deep subterranean caverns. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Horror&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission with an overt horror theme. Depending on the author&#039;s approach and intentions, it can focus on psychological horror, or horror based on danger from supernatural threats, or varying combinations of both. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Mansion/Estate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside someone&#039;s private residence (a fancy house, a manor house) and its surrounding grounds. Frequently involves background characters from the nobility or the more affluent townsmen or citizens. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Museum Heists&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on a heist in a museum, art gallery or other institution storing priceless artefacts, artworks, gemstone collections, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Caves&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, but involving the exploration of natural caves and caverns.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Daylight&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly outdoor environment, during the daytime (in contrast to the usual TDM missions, set at night time or early dusk).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Pagan&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, involving some presence of [[Pagans|pagan tribes]] from TDM&#039;s setting. Perhaps even pagan camps and settlements.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Pirate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the presence of characters engaging in piracy or smuggling, and various related piratical themes. Can overlap with the &#039;&#039;Ship&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Platforming/Jumping&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on testing the player&#039;s movement, jumping and climbing skills, with or without equipment. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Sewers&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves the use of the city sewers or others sewers in some way, often as a stealthy means of entry or escape.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Ship&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place aboard a vessel, in port or at sea, or otherwise involves ships to a great degree. Can overlap with the &#039;&#039;Pirate&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Thieves&#039; Highway / Rooftop&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a lot of movement and travel on the rooftops of a town or city (colloquially &amp;quot;The Thieves&#039; Highway&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the exploration of old tombs, catacombs and crypts, often for the purposes of treasure and artefact hunting. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Lost Civilizations&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Training&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission label that is wholly unique to the official Training Mission, an open-ended tutorial mission where players can practice and test their TDM gameplay skills at their own leisure.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Warehouse&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place in and around a warehouse, usually in some industrial area of a city, or at a port. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contest Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09: [[Fan_Mission_Contests#2009 Grand Christmas Contest|Grand Christmas Contest 2009]]&lt;br /&gt;
&lt;br /&gt;
SVC 10: [[Fan_Mission_Contests#2010 Summer Vertical Contest|Summer Vertical Contest 2010]]&lt;br /&gt;
&lt;br /&gt;
CSC 11: [[Fan_Mission_Contests#2011 Community Seasons Contest|Community Seasons Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
HSC 11: [[Fan_Mission_Contests#2011 Halloween Speed-build Contest|Halloween Speed-Build Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
CBC 12: [[Fan_Mission_Contests#2012 Community Beginner Contest|Community Beginner Contest 2012]]&lt;br /&gt;
&lt;br /&gt;
CUC 13: [[Fan_Mission_Contests#2013 Community Unusual Contest|Community Unusual Contest 2013]]&lt;br /&gt;
&lt;br /&gt;
HSC 14: [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|Halloween Speed-Build Contest 2014]]&lt;br /&gt;
&lt;br /&gt;
HSC 15: [[Fan_Mission_Contests#2015 Halloween Speed-build Contest|Halloween Speed-Build Contest 2015]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Editing this table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Fan Mission Series]] - An overview of all currently known series or campaigns of fan missions interconnected by their stories or characters. There are already plenty in TDM, and have been since its early days as an expandable game.&lt;br /&gt;
* [[Mission recommendation discussions]] - An overview of past discussions on what FMs the community recommends to players looking for various challenges (difficulty, size, theme, setting, objectives, etc.).&lt;br /&gt;
* [[Fan Mission Contests]] - An overview of past and present contests in Fan Mission creation, by members of the TDM community.&lt;br /&gt;
* [[Upcoming Fan Missions]] - An overview of Fan Missions in development or tentatively planned. (&#039;&#039;Do not&#039;&#039; edit the overview.)&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;br /&gt;
[[Category:Official FMs| ]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Setting_Reverb_Data_of_Rooms_(EAX)&amp;diff=23769</id>
		<title>Setting Reverb Data of Rooms (EAX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Setting_Reverb_Data_of_Rooms_(EAX)&amp;diff=23769"/>
		<updated>2019-03-08T19:29:31Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This document will attempt to explain how to set the new EFX settings in your rooms when mapping.&lt;br /&gt;
&lt;br /&gt;
Previously these settings were known as EAX settings, and required EAX 4.0-compatible sound card.&lt;br /&gt;
In TDM 2.06, EAX technology was completely replaced with OpenAL EFX, which is now processed in software (by [https://github.com/kcat/openal-soft openal-soft]) without any requirements on sound card.&lt;br /&gt;
&lt;br /&gt;
= General =&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
The EFX info for a map should be stored in the file &amp;quot;&amp;lt;tt&amp;gt;efxs/&amp;lt;mapname&amp;gt;.efx&amp;lt;/tt&amp;gt;&amp;quot;, where &amp;lt;mapname&amp;gt; is the name of your .map file (without extension).&lt;br /&gt;
&lt;br /&gt;
In order to check that you have put the file into right location, start your mission in game.&lt;br /&gt;
If TDM manages to load your efx file, then you will see the following message in console:&lt;br /&gt;
 sound: found efxs/&amp;lt;mapname&amp;gt;.efx&lt;br /&gt;
If you failed something, then you will see a bit different message there:&lt;br /&gt;
 sound: missing efxs/&amp;lt;mapname&amp;gt;.efx&lt;br /&gt;
In both cases some additional diagnostic messages can be present nearby.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you must enable &amp;quot;&amp;lt;tt&amp;gt;OpenAL EFX&amp;lt;/tt&amp;gt;&amp;quot; in sound settings in the main menu, otherwise TDM won&#039;t even try to load the efx file.&lt;br /&gt;
&lt;br /&gt;
== EFX file ==&lt;br /&gt;
&lt;br /&gt;
It is a plain text file, so you can open it up in your text editor of choice.&lt;br /&gt;
&lt;br /&gt;
Any EFX file must start with a header which specifies its &#039;&#039;&#039;version&#039;&#039;&#039;:&lt;br /&gt;
 Version 2&lt;br /&gt;
If you forget this line, then your EFX file will &#039;&#039;&#039;not&#039;&#039;&#039; be loaded.&lt;br /&gt;
The following versions are supported:&lt;br /&gt;
* &amp;lt;tt&amp;gt;Version 1&amp;lt;/tt&amp;gt; was supported by TDM from the very beginning. It uses some non-standard terms and quantities, which makes it hard to work with.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Version 2&amp;lt;/tt&amp;gt; was added in TDM 2.07. It uses the parameters from OpenAL EFX and supports a lot of presets. &#039;&#039;&#039;Recommended for all new missions.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The rest of the file consists of separate blocks, one for each &amp;quot;reverb zone&amp;quot;.&lt;br /&gt;
Each block must start with &amp;lt;tt&amp;gt;reverb&amp;lt;/tt&amp;gt; keyword for Version 1 definitions, and &amp;lt;tt&amp;gt;eaxreverb&amp;lt;/tt&amp;gt; keyword for Version 2 definitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is an example of such block from mars_city1.efx of the original Doom 3 game (Version 1):&lt;br /&gt;
&lt;br /&gt;
 // reverb maintenance&lt;br /&gt;
 reverb &amp;quot;maintenance&amp;quot; {&lt;br /&gt;
  &amp;quot;environment&amp;quot; 26&lt;br /&gt;
  &amp;quot;environment size&amp;quot; 5.0670&lt;br /&gt;
  &amp;quot;environment diffusion&amp;quot; 0.6030&lt;br /&gt;
  &amp;quot;room&amp;quot; -411&lt;br /&gt;
  &amp;quot;room hf&amp;quot; -685&lt;br /&gt;
  &amp;quot;room lf&amp;quot; 0&lt;br /&gt;
  &amp;quot;decay time&amp;quot; 1.7360&lt;br /&gt;
  &amp;quot;decay hf ratio&amp;quot; 0.8030&lt;br /&gt;
  &amp;quot;decay lf ratio&amp;quot; 1.0000&lt;br /&gt;
  &amp;quot;reflections&amp;quot; 96&lt;br /&gt;
  &amp;quot;reflections delay&amp;quot; 0.0080&lt;br /&gt;
  &amp;quot;reflections pan&amp;quot; 0.0000 0.0000 0.0000&lt;br /&gt;
  &amp;quot;reverb&amp;quot; 27&lt;br /&gt;
  &amp;quot;reverb delay&amp;quot; 0.0050&lt;br /&gt;
  &amp;quot;reverb pan&amp;quot; 0.0000 0.0000 0.0000&lt;br /&gt;
  &amp;quot;echo time&amp;quot; 0.0750&lt;br /&gt;
  &amp;quot;echo depth&amp;quot; 1.0000&lt;br /&gt;
  &amp;quot;modulation time&amp;quot; 0.2500&lt;br /&gt;
  &amp;quot;modulation depth&amp;quot; 0.0000&lt;br /&gt;
  &amp;quot;air absorption hf&amp;quot; -5.0000&lt;br /&gt;
  &amp;quot;hf reference&amp;quot; 5000.0000&lt;br /&gt;
  &amp;quot;lf reference&amp;quot; 250.0000&lt;br /&gt;
  &amp;quot;room rolloff factor&amp;quot; 0.0000&lt;br /&gt;
  &amp;quot;flags&amp;quot; 56&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
And here is an artificial example of Version 2 definitions:&lt;br /&gt;
&lt;br /&gt;
  eaxreverb &amp;quot;myweirdstreets&amp;quot; {&lt;br /&gt;
    reflections_gain 0.5&lt;br /&gt;
    reflections_delay 0.0050&lt;br /&gt;
    late_reverb_gain 2.5&lt;br /&gt;
    late_reverb_delay 0.050&lt;br /&gt;
    echo_time 0.25&lt;br /&gt;
    echo_depth 0.9000&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
What does all this mean? &lt;br /&gt;
&lt;br /&gt;
There is a lot of sound design stuff that one could make guesses at if you&#039;ve ever used a reverb plugin in any sort of sound editing program. hf = high frequency, lf = low frequency, etc.&lt;br /&gt;
&lt;br /&gt;
A proper explanation of the parameters is given below.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
Each reverb zone definition starts with a line which specifies to which location it must be applied:&lt;br /&gt;
&lt;br /&gt;
 reverb &amp;quot;&amp;lt;name of the location area you want to apply this to&amp;gt;&amp;quot;&lt;br /&gt;
 {&lt;br /&gt;
     //... (settings)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Information about locations and how to set them up is available in another article: [[Location Settings#The Location Entities]].&lt;br /&gt;
Reverb zones use exactly the same locations as the ones which are used to specify per-area ambient sounds.&lt;br /&gt;
You should name every info_location entity, i.e. provide a &amp;quot;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&amp;quot; spawnarg for it. This is the name used in reverb zone definitions.&lt;br /&gt;
&lt;br /&gt;
As of TDM 2.06, you can&#039;t use capital letters in the name of your location entity or reverb zone. This may or may not change in the future.&lt;br /&gt;
&lt;br /&gt;
Here is an example of an entity which defines &amp;quot;canal_tunnel&amp;quot; location:&lt;br /&gt;
&lt;br /&gt;
 //======================= from volta_v1.map ====================&lt;br /&gt;
 // entity 3532&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;classname&amp;quot; &amp;quot;info_location&amp;quot;&lt;br /&gt;
   &amp;quot;name&amp;quot; &amp;quot;canal_tunnel&amp;quot;             //this is the name used&lt;br /&gt;
   &amp;quot;ambient&amp;quot; &amp;quot;snd_streets&amp;quot;&lt;br /&gt;
   &amp;quot;ambient_light&amp;quot; &amp;quot;0.04 0.03 0.02&amp;quot;&lt;br /&gt;
   &amp;quot;ambient_light_dynamic&amp;quot; &amp;quot;0.01 0.01 0.01&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
And this is the EFX effect (reverb zone) for it:&lt;br /&gt;
&lt;br /&gt;
 //======================= from volta_v1.efx ====================&lt;br /&gt;
 reverb &amp;quot;canal_tunnel&amp;quot; {             //name put to here&lt;br /&gt;
   &amp;quot;environment&amp;quot; 22&lt;br /&gt;
   &amp;quot;environment size&amp;quot; 1.8000&lt;br /&gt;
   &amp;quot;environment diffusion&amp;quot; 1.0000&lt;br /&gt;
   &amp;quot;room&amp;quot; -1000&lt;br /&gt;
   &amp;quot;room hf&amp;quot; -4000&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
During playing, the engine prints a message whenever the player&#039;s location changes.&lt;br /&gt;
It allows you to check if you have set up locations properly.&lt;br /&gt;
For instance, here are console messages showing a proper EFX location change:&lt;br /&gt;
&lt;br /&gt;
 Switching to EFX &#039;canal_tunnel&#039; (#295)&lt;br /&gt;
 Changed location from &#039;canal_streets&#039; to &#039;canal_tunnel&#039;.&lt;br /&gt;
&lt;br /&gt;
It is also possible to specify portal-area number instead of location name in the reverb zone definition.&lt;br /&gt;
The portal-area number is listed in the .proc file, which is created in the dmap process, in the format of &amp;lt;tt&amp;gt;_area&amp;lt;num&amp;gt;&amp;lt;/tt&amp;gt; (where &amp;lt;num&amp;gt; is the portal area number), e.g. &amp;lt;tt&amp;gt;_area15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&#039;&#039;&#039;Beware:&#039;&#039;&#039; this functionality exists for fast hacking only! Do not release a mission with portal-area numbers in .efx file!&lt;br /&gt;
The main reason to avoid it is that portal-area numbers are auto-generated, so minor changes in your mission can change all of them.&lt;br /&gt;
&lt;br /&gt;
Finally, there is a &amp;quot;default&amp;quot; reverb environment which is used for any area in the map which does not have reverb information specified.&lt;br /&gt;
&lt;br /&gt;
The order that the sound system checks for reverb data is: area number -&amp;gt; location name -&amp;gt; default.&lt;br /&gt;
&lt;br /&gt;
== Changes during playing ==&lt;br /&gt;
Type &amp;quot;&amp;lt;tt&amp;gt;reloadSounds&amp;lt;/tt&amp;gt;&amp;quot; command into game console in order to reload EFX definitions.&lt;br /&gt;
&lt;br /&gt;
So when you experiment with EFX, execute this command after each tweak to EFX file to hear the difference immediately.&lt;br /&gt;
&lt;br /&gt;
== Suppress effect ==&lt;br /&gt;
Sometimes you want to disable EFX effect on a specific sound.&lt;br /&gt;
A typical example is when you have a voice in player&#039;s head, which must not depend on player&#039;s physical environment.&lt;br /&gt;
Another case is when some sound already has reverb baked in, so you don&#039;t what to double-reverb it. Although the best practice is to use sound samples without embedded reverb, combined with proper EFX definitions.&lt;br /&gt;
&lt;br /&gt;
You can disable all EFX effects on one specific sound shader by adding &amp;quot;&amp;lt;tt&amp;gt;no_efx&amp;lt;/tt&amp;gt;&amp;quot; keyword to its body.&lt;br /&gt;
For instance, here is how non-EFX version of blackjack unsheathing looks like:&lt;br /&gt;
 blackjack_unsheath&lt;br /&gt;
 {&lt;br /&gt;
   description &amp;quot;Made by pakmannen&amp;quot;&lt;br /&gt;
   sound/sfx/tools/melee/blackjack_unsheath.ogg&lt;br /&gt;
   no_efx                       //do NOT apply EFX to this sound&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note that if you change sound shaders, writing &amp;quot;&amp;lt;tt&amp;gt;reloadDecls&amp;lt;/tt&amp;gt;&amp;quot; in TDM game console is enough to reload them.&lt;br /&gt;
&lt;br /&gt;
There are a lot of stock sounds in TDM which should not be affected by EFX effects.&lt;br /&gt;
Starting from TDM 2.07, the corresponding core sounds are marked with &amp;quot;&amp;lt;tt&amp;gt;no_efx&amp;lt;/tt&amp;gt;&amp;quot; keyword (see issue [http://bugs.thedarkmod.com/view.php?id=4688 4688]).&lt;br /&gt;
If you discover any core sound which is affected by EFX while you believe it should not, start a discussion on forums.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Environment properties=&lt;br /&gt;
&lt;br /&gt;
== New properties (Version 2) ==&lt;br /&gt;
&lt;br /&gt;
With Version 2 of EFX file, the set of supported properties exactly matches the set of properties defined in OpenAL EFX for the &amp;quot;EAX Reverb&amp;quot; effect.&lt;br /&gt;
Note that EFX defines several types of effects, including &amp;quot;EAX Reverb&amp;quot;, &amp;quot;Standard Reverb&amp;quot;, &amp;quot;Chorus&amp;quot;, &amp;quot;Distortion&amp;quot;, &amp;quot;Echo&amp;quot;, &amp;quot;Flanger&amp;quot;, etc.&lt;br /&gt;
Only the first one is important, ignore all the rest (including the so-called &amp;quot;Standard Reverb&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The detailed description of all the properties is given in &amp;quot;Appendix 1 – Effect property descriptions&amp;quot; of the [https://kcat.strangesoft.net/misc-downloads/Effects%20Extension%20Guide.pdf OpenAL Effects Extension Guide](pages 95-101).&lt;br /&gt;
The short list is also available in a table on page 66 of the guide:&lt;br /&gt;
&lt;br /&gt;
[[File:Eaxreverb_properties_screenshot.png|500px]]&lt;br /&gt;
&lt;br /&gt;
The only difference is that the property names in the guide have the &amp;lt;tt&amp;gt;AL_EAXREVERB_&amp;lt;/tt&amp;gt; prefix, while in TDM definitions this prefix is removed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Presets (Version 2) ==&lt;br /&gt;
&lt;br /&gt;
There is one special property &amp;lt;tt&amp;gt;PRESET&amp;lt;/tt&amp;gt;, which is not present in the EFX guide.&lt;br /&gt;
This property accepts the name of the preset which you want to use:&lt;br /&gt;
&lt;br /&gt;
 eaxreverb &amp;quot;myclassroom&amp;quot; {&lt;br /&gt;
   preset auditorium&lt;br /&gt;
 }&lt;br /&gt;
 eaxreverb &amp;quot;mycave&amp;quot; {&lt;br /&gt;
   preset cave&lt;br /&gt;
 }&lt;br /&gt;
 eaxreverb &amp;quot;mycorridor&amp;quot; {&lt;br /&gt;
   preset hallway&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you specify the preset like this, the values for all the reverb properties will be taken from the specified preset.&lt;br /&gt;
Additionally, you can override values of some properties if you define them manually &#039;&#039;&#039;after&#039;&#039;&#039; defining the preset.&lt;br /&gt;
&lt;br /&gt;
The preset property also accepts index of preset. Don&#039;t use indices for anything except experimentation, since they may change in future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The presets were taken from OpenAL-Soft implementation which TDM uses.&lt;br /&gt;
Here is the full list of preset names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;height:350px; overflow:scroll;&amp;quot;&amp;gt;&lt;br /&gt;
GENERIC                                     &lt;br /&gt;
PADDEDCELL                                  &lt;br /&gt;
ROOM                                        &lt;br /&gt;
BATHROOM                                    &lt;br /&gt;
LIVINGROOM                                  &lt;br /&gt;
STONEROOM                                   &lt;br /&gt;
AUDITORIUM                                  &lt;br /&gt;
CONCERTHALL                                 &lt;br /&gt;
CAVE                                        &lt;br /&gt;
ARENA                                       &lt;br /&gt;
HANGAR                                      &lt;br /&gt;
CARPETEDHALLWAY                             &lt;br /&gt;
HALLWAY                                     &lt;br /&gt;
STONECORRIDOR                               &lt;br /&gt;
ALLEY                                       &lt;br /&gt;
FOREST                                      &lt;br /&gt;
CITY                                        &lt;br /&gt;
MOUNTAINS                                   &lt;br /&gt;
QUARRY                                      &lt;br /&gt;
PLAIN                                       &lt;br /&gt;
PARKINGLOT                                  &lt;br /&gt;
SEWERPIPE                                   &lt;br /&gt;
UNDERWATER                                  &lt;br /&gt;
DRUGGED                                     &lt;br /&gt;
DIZZY                                       &lt;br /&gt;
PSYCHOTIC                                   &lt;br /&gt;
CASTLE_SMALLROOM                            &lt;br /&gt;
CASTLE_SHORTPASSAGE                         &lt;br /&gt;
CASTLE_MEDIUMROOM                           &lt;br /&gt;
CASTLE_LARGEROOM                            &lt;br /&gt;
CASTLE_LONGPASSAGE                          &lt;br /&gt;
CASTLE_HALL                                 &lt;br /&gt;
CASTLE_CUPBOARD                             &lt;br /&gt;
CASTLE_COURTYARD                            &lt;br /&gt;
CASTLE_ALCOVE                               &lt;br /&gt;
FACTORY_SMALLROOM                           &lt;br /&gt;
FACTORY_SHORTPASSAGE                        &lt;br /&gt;
FACTORY_MEDIUMROOM                          &lt;br /&gt;
FACTORY_LARGEROOM                           &lt;br /&gt;
FACTORY_LONGPASSAGE                         &lt;br /&gt;
FACTORY_HALL                                &lt;br /&gt;
FACTORY_CUPBOARD                            &lt;br /&gt;
FACTORY_COURTYARD                           &lt;br /&gt;
FACTORY_ALCOVE                              &lt;br /&gt;
ICEPALACE_SMALLROOM                         &lt;br /&gt;
ICEPALACE_SHORTPASSAGE                      &lt;br /&gt;
ICEPALACE_MEDIUMROOM                        &lt;br /&gt;
ICEPALACE_LARGEROOM                         &lt;br /&gt;
ICEPALACE_LONGPASSAGE                       &lt;br /&gt;
ICEPALACE_HALL                              &lt;br /&gt;
ICEPALACE_CUPBOARD                          &lt;br /&gt;
ICEPALACE_COURTYARD                         &lt;br /&gt;
ICEPALACE_ALCOVE                            &lt;br /&gt;
SPACESTATION_SMALLROOM                      &lt;br /&gt;
SPACESTATION_SHORTPASSAGE                   &lt;br /&gt;
SPACESTATION_MEDIUMROOM                     &lt;br /&gt;
SPACESTATION_LARGEROOM                      &lt;br /&gt;
SPACESTATION_LONGPASSAGE                    &lt;br /&gt;
SPACESTATION_HALL                           &lt;br /&gt;
SPACESTATION_CUPBOARD                       &lt;br /&gt;
SPACESTATION_ALCOVE                         &lt;br /&gt;
WOODEN_SMALLROOM                            &lt;br /&gt;
WOODEN_SHORTPASSAGE                         &lt;br /&gt;
WOODEN_MEDIUMROOM                           &lt;br /&gt;
WOODEN_LARGEROOM                            &lt;br /&gt;
WOODEN_LONGPASSAGE                          &lt;br /&gt;
WOODEN_HALL                                 &lt;br /&gt;
WOODEN_CUPBOARD                             &lt;br /&gt;
WOODEN_COURTYARD                            &lt;br /&gt;
WOODEN_ALCOVE                               &lt;br /&gt;
SPORT_EMPTYSTADIUM                          &lt;br /&gt;
SPORT_SQUASHCOURT                           &lt;br /&gt;
SPORT_SMALLSWIMMINGPOOL                     &lt;br /&gt;
SPORT_LARGESWIMMINGPOOL                     &lt;br /&gt;
SPORT_GYMNASIUM                             &lt;br /&gt;
SPORT_FULLSTADIUM                           &lt;br /&gt;
SPORT_STADIUMTANNOY                         &lt;br /&gt;
PREFAB_WORKSHOP                             &lt;br /&gt;
PREFAB_SCHOOLROOM                           &lt;br /&gt;
PREFAB_PRACTISEROOM                         &lt;br /&gt;
PREFAB_OUTHOUSE                             &lt;br /&gt;
PREFAB_CARAVAN                              &lt;br /&gt;
DOME_TOMB                                   &lt;br /&gt;
PIPE_SMALL                                  &lt;br /&gt;
DOME_SAINTPAULS                             &lt;br /&gt;
PIPE_LONGTHIN                               &lt;br /&gt;
PIPE_LARGE                                  &lt;br /&gt;
PIPE_RESONANT                               &lt;br /&gt;
OUTDOORS_BACKYARD                           &lt;br /&gt;
OUTDOORS_ROLLINGPLAINS                      &lt;br /&gt;
OUTDOORS_DEEPCANYON                         &lt;br /&gt;
OUTDOORS_CREEK                              &lt;br /&gt;
OUTDOORS_VALLEY                             &lt;br /&gt;
MOOD_HEAVEN                                 &lt;br /&gt;
MOOD_HELL                                   &lt;br /&gt;
MOOD_MEMORY                                 &lt;br /&gt;
DRIVING_COMMENTATOR                         &lt;br /&gt;
DRIVING_PITGARAGE                           &lt;br /&gt;
DRIVING_INCAR_RACER                         &lt;br /&gt;
DRIVING_INCAR_SPORTS                        &lt;br /&gt;
DRIVING_INCAR_LUXURY                        &lt;br /&gt;
DRIVING_FULLGRANDSTAND                      &lt;br /&gt;
DRIVING_EMPTYGRANDSTAND                     &lt;br /&gt;
DRIVING_TUNNEL                              &lt;br /&gt;
CITY_STREETS                                &lt;br /&gt;
CITY_SUBWAY                                 &lt;br /&gt;
CITY_MUSEUM                                 &lt;br /&gt;
CITY_LIBRARY                                &lt;br /&gt;
CITY_UNDERPASS                              &lt;br /&gt;
CITY_ABANDONED                              &lt;br /&gt;
DUSTYROOM                                   &lt;br /&gt;
CHAPEL                                      &lt;br /&gt;
SMALLWATERROOM                              &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Their definitions can be seen in [https://github.com/kcat/openal-soft/blob/master/include/AL/efx-presets.h efx-presets.h] from OpenAL-Soft source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Legacy info (Version 1) ==&lt;br /&gt;
&lt;br /&gt;
This information is from the old official EAX 2.0 documentation, although some properties may have changed in scope and focus from EAX 2.0 to EAX 4.0. One can assume that the properties serve the same general purpose and that each property&#039;s value bounds are approximately the same.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;environment&#039;&#039;&#039; - Unknown. Likely sets the room to one of an unknown number of environment presets.&lt;br /&gt;
* &#039;&#039;&#039;environment size&#039;&#039;&#039; - The Environment Size property sets the apparent size of the surrounding “room.” The value of Environment Size can be considered a characteristic dimension of the room expressed in meters. Scaling Environment Size is equivalent to scaling all dimensions of the room by the same factor. Value type is FLOAT; value range is 1.0 to 100.0, expressed in linear meters.&lt;br /&gt;
* &#039;&#039;&#039;environment diffusion&#039;&#039;&#039; - The Environment Diffusion property controls the echo density in the reverberation decay. Reducing diffusion gives the reverberation a more “grainy” character that is especially noticeable with percussive sound sources. If you set a diffusion value of 0.0, the later reverberation sounds like a succession of distinct echoes. Value type is FLOAT; value range is 0.0 to 1.0, expressed in a linear multiplier value.&lt;br /&gt;
* &#039;&#039;&#039;room&#039;&#039;&#039; - The Room property is the master volume control for the reflected sound (both early reflections and reverberation) that EAX adds to all sound sources. It sets the maximum amount of reflections and reverberation added to the sound mix in the primary buffer (the listener). Value is LONG; value range is -10000 to 0, expressed in hundredths of one decibel (-100 dB to 0 dB).&lt;br /&gt;
* &#039;&#039;&#039;room hf&#039;&#039;&#039; - The Room HF property further tweaks reflected sound by attenuating it at high frequencies. It controls a low-pass filter that applies globally to the reflected sound of all sound sources. The exact qualities of this low-pass filter -- its frequency and its bandwidth (Q) -- are unknown. Value type is LONG; value range is -10000 to 0, expressed in hundredths of one decibel (-100 dB to 0 dB).&lt;br /&gt;
* &#039;&#039;&#039;room lf&#039;&#039;&#039; - Undocumented. Assumably, the Room LF property applies a high-pass to reflected sound in much the same way as Room HF applies low-pass. The value type and range is unknown, but is likely LONG, must be between -10000 and 0 and is expressed in hundredths of one decibel.&lt;br /&gt;
* &#039;&#039;&#039;decay time&#039;&#039;&#039; - The Decay Time property sets the reverberation decay time, or the time in which reverberation is diminished. It ranges from 0.1 (typically a small room with very dead surfaces) to 20.0 (typically a large room with very live surfaces). Value is FLOAT; value range is 0.1 to 20.0, expressed in seconds.&lt;br /&gt;
* &#039;&#039;&#039;decay hf ratio&#039;&#039;&#039; - The Decay HF Ratio property sets the spectral quality of the Decay Time parameter. It is the ratio of high-frequency decay time relative to the time set by Decay Time. The Decay HF Ratio value 1.0 is neutral: the decay time is equal for all frequencies. As Decay HF Ratio increases above 1.0, the high-frequency decay time increases so it’s longer than the decay time at low frequencies. You hear a more brilliant reverberation with a longer decay at high frequencies. As the Decay HF Ratio value decreases below 1.0, the high-frequency decay time decreases so it’s shorter than the decay time of the low frequencies. You hear a more natural reverberation. Value is FLOAT; value range is 0.1 to 20.0, expressed in a linear multiplier variable.&lt;br /&gt;
* &#039;&#039;&#039;decay lf ratio&#039;&#039;&#039; - Undocumented. It&#039;s likely best to leave the value at 1.0, though the value&#039;s type and range is probably the same as the Decay HF Ratio property.&lt;br /&gt;
* &#039;&#039;&#039;reflections&#039;&#039;&#039; - The Reflections property controls the overall amount of initial reflections relative to the Room property. The value of Reflections ranges from a maximum of 10 dB to a minimum of -100 dB (no initial reflections at all), and is corrected by the value of the Room property. The Reflections property does not affect the subsequent reverberation decay. You can increase the amount of initial reflections to simulate a more narrow space or closer walls, especially effective if you associate the initial reflections increase with a reduction in reflections delays by lowering the value of the Reflection Delay property. To simulate open or semi-open environments, you can maintain the amount of early reflections while reducing the value of the Reverb property, which controls later reflections. Value type is LONG; value range is -10000 to 1000, expressed in hundredths of one decibel (-100 dB to -10 dB).&lt;br /&gt;
* &#039;&#039;&#039;reflections delay&#039;&#039;&#039; - The Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source. It ranges from 0 to 300 milliseconds. You can reduce or increase Reflections Delay to simulate closer or more distant reflective surfaces—and therefore control the perceived size of the room. Value is FLOAT; value range is 0.0 to 0.3, expressed in seconds (0 to 300 milliseconds).&lt;br /&gt;
* &#039;&#039;&#039;reflections pan&#039;&#039;&#039; - Undocumented. Three values are specified which may correspond to a generic &amp;quot;front&amp;quot;, &amp;quot;side&amp;quot; and &amp;quot;back/rear&amp;quot; configuration to control the directivity of early reflections in a 7.1 surround matrix. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;reverb&#039;&#039;&#039; - The Reverb property controls the overall amount of later reverberation relative to the Room property. (The Room property sets the overall amount of both initial reflections and later reverberation.) The value of Reverb ranges from a maximum of 20 dB to a minimum of -100 dB (no late reverberation at all). Value is LONG; value range is -10000 to 2000, expressed in hundredths of a decibel (-100 dB to 20 dB).&lt;br /&gt;
* &#039;&#039;&#039;reverb delay&#039;&#039;&#039; - The Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection (the first of the early reflections). It ranges from 0 to 100 milliseconds. Reducing or increasing Reverb Delay is useful for simulating a smaller or larger room. Value is FLOAT; value range is 0.0 to 0.1, expressed in seconds (0 to 100 milliseconds).&lt;br /&gt;
* &#039;&#039;&#039;reverb pan&#039;&#039;&#039; - Undocumented. Three values are specified which may correspond to a generic &amp;quot;front&amp;quot;, &amp;quot;side&amp;quot; and &amp;quot;back/rear&amp;quot; configuration to control the directivity of reverberation in a 7.1 surround matrix. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;echo time&#039;&#039;&#039; - Undocumented. Likely controls the decay time of echoes, or late reflections. A value of 0.1 likely presents a natural amount of echo, while increasing the value likely causes a &amp;quot;Grand Canyon&amp;quot; effect. Value type is likely FLOAT; value range is likely between 0.075 and 0.25, expressed in seconds.&lt;br /&gt;
* &#039;&#039;&#039;echo depth&#039;&#039;&#039; - Undocumented. May control directionality or tonal qualities of echoes arriving at the listener. Probably best to leave at 1.0. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;modulation time&#039;&#039;&#039; - Undocumented. Unknown purpose. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;modulation depth&#039;&#039;&#039; - Undocumented. Unknown purpose. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;air absorption hf&#039;&#039;&#039; - The Air Absorption HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium. It applies to both the direct path and reflected sound. You can use Air Absorption HF to simulate sound transmission through foggy air, dry air, smoky atmosphere, and so on. The default value is -0.05 dB per meter, which roughly corresponds to typical condition of atmospheric humidity, temperature, and so on. Lowering the value simulates a more absorbent medium (more humidity in the air, for example); raising the value simulates a less absorbent medium (dry desert air, for example). Value is FLOAT; value range is -100.0 to 0.0, expressed in hundredths of one decibel per meter (-1 dB to 0 dB). Default value is -5.0, which corresponds to -0.05 dB per meter attenuation.&lt;br /&gt;
* &#039;&#039;&#039;hf reference&#039;&#039;&#039; - Likely defines the frequency used for low-pass filters. Value is likely LONG; value range is likely between 0.0 and 20000.0, expressed in Hz. This value is probably best left at 5000.0.&lt;br /&gt;
* &#039;&#039;&#039;lf reference&#039;&#039;&#039; - Likely defines the frequency used for high-pass filters. Value is likely LONG; value range is likely between 0.0 and 20000.0, expressed in Hz. This value is probably best left at 250.0.&lt;br /&gt;
* &#039;&#039;&#039;room rolloff factor&#039;&#039;&#039; - The Room Rolloff property is one of two methods available in EAX to attenuate the reflected sound (containing both reflections, reverberation and echoes) according to source-listener distance. Value type is FLOAT; value range is 0.0 to 10.0, expressed in a linear multiplier value. It&#039;s recommended that users use 0.0, as id Software did not deviate from this value with Doom 3.&lt;br /&gt;
* &#039;&#039;&#039;flags&#039;&#039;&#039; - The Flags property is intended to control the relationship of high-level EAX properties to low-level properties. If certain EAX flags are set by setting the Flags property to a particular value, the setting of high-level properties is supposed to control the values of low-level properties based upon a defined scale, overriding specified values. In EAX 2.0, the value type is DWORD, whereas in Doom 3, it appears to be INT or some other type commonly used to store numeric values. In Doom 3, common values are 0, 2, 15, 31, 32, 56 and 63, but no documentation details what these values correspond to. If users wish to experiment with the Flags property, it is recommended that they choose from one of the above values. For reference, here is a table with the counts for each flag value as used in Doom 3:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;margin: 0.5em; margin-left: 2em; border: 1px solid #a0a0a0; text-align: right; border-collapse: collapse;&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Flag decimal&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Flag binary&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Count&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|00000000&lt;br /&gt;
|497&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|00000010&lt;br /&gt;
|6&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|00001110&lt;br /&gt;
|15&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|00001111&lt;br /&gt;
|94&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|31&lt;br /&gt;
|00011111&lt;br /&gt;
|511&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|32&lt;br /&gt;
|00100000&lt;br /&gt;
|247&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|56&lt;br /&gt;
|00111000&lt;br /&gt;
|59&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|63&lt;br /&gt;
|00111111&lt;br /&gt;
|168&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Design.&#039;&#039;&#039;&lt;br /&gt;
In terms of the actual sound design for the values you put into these variables, here is a general tutorial on reverb from FruityLoops (NOTE: This is for a music production plugin, some of these don&#039;t apply, it&#039;s just to give a general idea on what certain variables do):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Cut&#039;&#039;&#039; Adjusts the low cutoff frequency. Use this to remove low frequencies from the input signal before reverb is added. For example, if you are adding reverb to, say a drum track, you might want to remove some of the &#039;rumble&#039; from the bass drum by attenuating the bass frequencies. Setting this parameter to the minimum value will bypass the Low Cut filter, displaying OFF in the value field.&lt;br /&gt;
* &#039;&#039;&#039;High Cut&#039;&#039;&#039; - Similar to the Low Cut, this adjusts the high cutoff frequency. Use this to remove high frequencies from the input signal.&lt;br /&gt;
* &#039;&#039;&#039;Predelay&#039;&#039;&#039; - Controls the delay time between the direct input signal and the first reverb reflection. This should be set to modest values for small rooms, and can be increased in relation to increases in room size. &#039;&#039;&#039;Predelay&#039;&#039;&#039; creates a slap-back echo effect that can both add atmosphere and muffle the signal, so use it wisely.&lt;br /&gt;
* &#039;&#039;&#039;Room Size&#039;&#039;&#039; - Use this to set the size of the virtual room where the reverb is created. The Room Size should be adjusted according to the decay time. Small rooms sound better with a short decay time, large rooms sound better with longer reverb times.&lt;br /&gt;
* &#039;&#039;&#039;Diffusion&#039;&#039;&#039; - Controls the density of the reflections bouncing off the walls of the virtual room. A low diffusion setting makes the reflections sound more distinct, like closely spaced echoes. A high diffusion setting creates reflections so close they sound more like noise, where no echoes can be distinguished.&lt;br /&gt;
* &#039;&#039;&#039;Color&#039;&#039;&#039; - The Color parameter is used for adjusting the decay time of the bass frequencies of the signal. This allows you to change the overall perceived mood or &#039;sound&#039; of the virtual room. A bright room has a low bass response, while warm rooms have a higher bass response. In a flat room, the response of the bass is equal to the general frequency response. Color has five settings: Brighter, Bright, Flat, Warm, Warmer.&lt;br /&gt;
* &#039;&#039;&#039;Decay&#039;&#039;&#039; - Controls the decay time of the reverb, the time it takes for the signal to decay to -60dB (1/1000 of the maximum amplitude). Use low decay times for small rooms or boxes, and long decay times for large rooms, halls or churches. You should also make sure that the Room Size parameter has an appropriate value.&lt;br /&gt;
* &#039;&#039;&#039;High Damping&#039;&#039;&#039; - This parameter allows you to adjust damping of the high frequencies in the reverb signal over time. Damping refers to the high frequencies being attenuated and dying out. This causes the sound to become gradually muffled and warm like it is being absorbed in the room. Setting this parameter to the maximum value will bypass the High Damping, displaying OFF in the value field.&lt;br /&gt;
* &#039;&#039;&#039;Dry&#039;&#039;&#039; - Sets the relative dry output level.&lt;br /&gt;
* &#039;&#039;&#039;Reverb&#039;&#039;&#039; - Sets the relative reverb (wet) signal level.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
There are some released FMs with EFX settings:&lt;br /&gt;
&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016 Volta and the Stone]. While Kingsal says EAX settings are unsupported, TDM loads them properly.&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/10125-fan-mission-patently-dangerous-20091031 Patently Dangerous]. Probably the first map with EFX settings, but they don&#039;t load now.&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/?hl=%20behind%20%20closed%20%20doors Crucible of Omens : Behind Closed Doors]. Seems to have many EFX definitions and locations cover most of the map.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
The Version 2 definitions were implemented due to [http://bugs.thedarkmod.com/view.php?id=4815 issue 4815], it has some brief explanation.&lt;br /&gt;
&lt;br /&gt;
A tutorial based around EFX can be found [http://forums.thedarkmod.com/topic/19205-getting-started-with-the-efx-room-reverb-system-wip/ here]&lt;br /&gt;
&lt;br /&gt;
An old demonstration map of EAX in TDM is included [http://forums.thedarkmod.com/topic/11045-environmental-audio-extensions-eax-in-tdm/ here]&lt;br /&gt;
&lt;br /&gt;
A discussion about no_efx is [http://forums.thedarkmod.com/topic/19213-efx-discussion here]&lt;br /&gt;
&lt;br /&gt;
The first version of this article was written by Ishtvan at [http://forums.thedarkmod.com/topic/2071 http://forums.thedarkmod.com/topic/2071]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sound]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=23161</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=23161"/>
		<updated>2019-02-10T00:23:36Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-10-15&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Cleaning Up the Neighbourhood&lt;br /&gt;
|some1stoleit&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry418523}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Order of Thieves: Qualifying Examination (Working Title) &lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry419272}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-16&lt;br /&gt;
|unknown&lt;br /&gt;
|The Order of Thieves&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 5 - Commerce Bank]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2019-02-09&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2019-02-09&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=23160</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=23160"/>
		<updated>2019-02-10T00:22:12Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-10-15&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Cleaning Up the Neighbourhood&lt;br /&gt;
|some1stoleit&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry418523}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Order of Thieves: Qualifying Examination (Working Title) &lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry419272}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-16&lt;br /&gt;
|unknown&lt;br /&gt;
|The Order of Thieves&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 5 - Commerce Bank]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2019-09-02&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Baleford Museum]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-09-02&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=CMultiStateMover&amp;diff=22297</id>
		<title>CMultiStateMover</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=CMultiStateMover&amp;diff=22297"/>
		<updated>2018-12-01T15:42:14Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Spawnargs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CMultiStateMover ==&lt;br /&gt;
The corresponding entityDefs are &#039;&#039;&#039;atdm:mover_multistate&#039;&#039;&#039; and &#039;&#039;&#039;atdm:mover_elevator&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This mover supports several target positions. The primary &amp;quot;clients&amp;quot; of this class are elevators, of course.&lt;br /&gt;
&lt;br /&gt;
The positions are defined by so-called [[CMultiStateMoverPosition]] entities, which are placed by the mapper. It also takes care of triggering/activating the [[func_aas_obstacle]] entities, which are needed for the AI to pathfind on elevator stations.&lt;br /&gt;
&lt;br /&gt;
The triggering (&amp;quot;activating&amp;quot;) entity needs to carry a &amp;quot;position&amp;quot; spawnarg so that the elevator knows where to move to.&lt;br /&gt;
&lt;br /&gt;
=== Spawnargs ===&lt;br /&gt;
* &#039;&#039;&#039;forward_direction&#039;&#039;&#039; (vector) This defines the &amp;quot;forward direction&amp;quot; of this elevator (default is &#039;0 0 1&#039;, i.e. upwards). This is needed to control the gear direction of any attached movers.&lt;br /&gt;
* &#039;&#039;&#039;control_gear_direction&#039;&#039;&#039; (1/0) Set this to 1 to let this mover control the direction of targetted rotaters, depending on whether the mover is moving forward/backwards.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;trigger_on_reached&#039;&#039;&#039; (1/0) Set to 1 if the mover should trigger its targets when a position is reached.&lt;br /&gt;
* &#039;&#039;&#039;trigger_on_leave&#039;&#039;&#039; (1/0) Set to 1 if the mover should trigger its targets when leaving from a position.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;move_speed&#039;&#039;&#039; (float) is inherited from idMover. Defines the world units per second to move between floors.&lt;br /&gt;
* &#039;&#039;&#039;move_time&#039;&#039;&#039; (float) is inherited from idMover. Don&#039;t use this, it makes the mover slower when it&#039;s nearer to its goal.&lt;br /&gt;
&lt;br /&gt;
=== Script Events ===&lt;br /&gt;
* &amp;lt;no special event&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ Methods and Events ===&lt;br /&gt;
The CMultiStateMover works closely together with the [[CMultiStateMoverPosition]] and [[CMultiStateMoverButton]] classes. There is a lot of communication going on between these, to handle the AAS obstacle stuff and to let AI know which buttons to use at which elevator station.&lt;br /&gt;
&lt;br /&gt;
{{sdk}} {{editing}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=21347</id>
		<title>Location Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=21347"/>
		<updated>2018-10-29T03:42:30Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Example script to turn entities on/off when player enters a location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to setup &#039;&#039;&#039;locations&#039;&#039;&#039; (also called &amp;quot;location zones&amp;quot; or &amp;quot;zones&amp;quot;) in your level, and then use these to:&lt;br /&gt;
&lt;br /&gt;
* fade to different ambient &#039;&#039;&#039;light levels&#039;&#039;&#039; for each zone&lt;br /&gt;
* fade between different ambient &#039;&#039;&#039;sounds&#039;&#039;&#039; in each zone&lt;br /&gt;
* run &#039;&#039;&#039;scripts&#039;&#039;&#039; automatically when the player enters or exits a zone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to use four types of entities in your map: &lt;br /&gt;
&lt;br /&gt;
* a special global entity (e.g. add only one, the position does not matter): &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
* a special global light entity named &#039;&#039;&#039;ambient_world&#039;&#039;&#039; &lt;br /&gt;
* multiple &#039;&#039;&#039;info_location&#039;&#039;&#039; and &#039;&#039;&#039;info_locationseparation&#039;&#039;&#039; entities&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
:Note:  Two alternative ways to get ambient sounds in your map are using speakers ([[Adding ambient Sounds to your Map]]), and using triggers ([[Ambient Sounds - Zone (using triggers)]]).  Speakers are good if you only want your ambient to cover a definite radius and have a very simple setup.  Triggers are basically obsoleted by the method in this tutorial.  The only time you might still want to use a trigger-system is if you want a ambient sound to begin at a place where for some reason you can&#039;t create a portal to mark the zone boundary, but you can still have a trigger brush.  There are some issues with a trigger system, too (f.i. their CPU and memory usage and more importantly they are not failsafe like locations are), that make the method in this tutorial superior.  &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The atdm:location_settings entity ==&lt;br /&gt;
&lt;br /&gt;
Create a &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity in your blueroom (i.e., a room off to the side the player will never enter) or somewhere else in your map:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Default values ===&lt;br /&gt;
&lt;br /&gt;
The location_settings entity takes a few &#039;&#039;default&#039;&#039; spawnargs related to the ambient light settings:&lt;br /&gt;
&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_time&amp;quot;|&amp;quot;ambient_light_fade_time&amp;quot;]]&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_delay&amp;quot;|&amp;quot;ambient_light_fade_delay&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
For their meaning and values, please refer to their sections.&lt;br /&gt;
&lt;br /&gt;
=== update_period ===&lt;br /&gt;
&lt;br /&gt;
The spawnarg &#039;&#039;&#039;update_period&#039;&#039;&#039; specifies the time in seconds between updates. A good value is 0.2, e.g. 5 times per second. That avoids to run the script too often, and still allows seamless transitions.&lt;br /&gt;
&lt;br /&gt;
=== Sound Shaders ===&lt;br /&gt;
&lt;br /&gt;
In the entity&#039;s spawnargs, put the names of all the ambient sounds you want to play in your map.  (This pre-loads the sounds into the speaker so there isn&#039;t a pause when they start playing.)  Put it in one of these property/value forms (without the quote marks):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_streets&amp;quot; &amp;quot;city_night01_loop_z&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_mansion&amp;quot; &amp;quot;sound/ambient/ambience/mansion_tense01a.ogg&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The left hand spawnarg should have a &amp;quot;snd_&amp;quot; prefix, and any name, but most useful is probably the name of the area it is for.  You&#039;ll use this name again when you place the location markers or if you use the override system.  &lt;br /&gt;
&lt;br /&gt;
The right hand value points to the actual sound file that will play.  You can enter either the soundshader name, or the address where the sound file is (but see footnote).  You can see the soundshader names of ambient-ready sounds in the sub-folder &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot;.   You can find the address of the sound files in &amp;quot;Darkmod/sound/ambient/ambience&amp;quot; (remember to start the address with &amp;quot;sound&amp;quot; in the spawnarg).  You can also listen to the sounds at that location.  They are are in .ogg format. But it&#039;s easier to just create a speaker (left-click&amp;gt;speaker) and it will give you a sound directory where can play sound files and find the names. No searching through sound folders outside of DR (thanks to Badcog for that tip).&lt;br /&gt;
&lt;br /&gt;
:Note that it is very easy to add custom ambients with this system.  Just create a folder in your .pk4 (a .zip file renamed to .pk4) and name the folder &amp;quot;sound&amp;quot;, with another folder inside it named after your FM or an abbreviation.  Put your custom sound inside that second folder.  (E.g., I have a custom ambient named Frozen.ogg, and my FM&#039;s name is Patently Dangerous.  So in my .pk4 was &amp;quot;sound/patent/frozen.ogg&amp;quot;.  Note that ambients must be in either .ogg or .wav format. Now in your speaker_zone_ambient, just put the sound&#039;s address in the spawnarg (but see footnote).  In my case, I have &amp;quot;snd_warehouse&amp;quot; &amp;quot;sound/patent/frozen.ogg&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
It is worth noting that one special &amp;quot;sound&amp;quot; is already loaded by default.  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_silence&amp;quot; &amp;quot;silence&amp;quot;&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
You can see it if you check &amp;quot;Show Inherited Properties&amp;quot;.  This is the sound you use to turn &amp;quot;off&amp;quot; the ambient sounds playing, so there is silence in the zone.&lt;br /&gt;
&lt;br /&gt;
=== On Shader Names ===&lt;br /&gt;
&lt;br /&gt;
One footnote on the sound shader names. The &#039;&#039;shader tdm_ambient_ambience_zoned.sndshd&#039;&#039; has a special command (&amp;quot;leadin&amp;quot;) for its sounds that begins the ambient with a short pause.  This is to pre-empt a possible *pop* of sound for loud ambients which can occur when the player&#039;s system slows down (and only occasionally, at that), so the player never hears the pop.  (It&#039;s a quirk of how Doom3 does fade-ins; when you start a new sound, you have to rapidly fade it out first, like .001 seconds, then slowly fade back in.  But if the system slows and the ambient starts loud, it might stretch that .001 to something audible.)&lt;br /&gt;
 Edit:Baddcog- These seem to now have been appended with a _z if you look at sound names in speaker dialog.&lt;br /&gt;
&lt;br /&gt;
If you alternatively use the address or the shader name from &amp;quot;Darkmod/sound/tdm_ambient_ambience.sndshd&amp;quot; (which lack the &amp;quot;leadin&amp;quot; property) it will otherwise work fine, but you won&#039;t be protected from that occasional little pop (at least until we find another fix).  For ambients that start quietly or areas that won&#039;t slow the system down, it will probably never even be a problem and the player will never hear it, so using the address is fine, or using the tdm_ambient_ambience shader name if you don&#039;t want the tiny pause for whatever reason.  But if you want to control it, use the tdm_ambient_ambience_zoned name, and for a custom sound, to pre-empt the pop you&#039;ll need to use a custom shader with the &amp;quot;leadin&amp;quot; line.  Use the &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot; as a template to do that, and name the custom shader file something like YourFMsName.sndshd, and put it in the &amp;quot;sound&amp;quot; folder in your .pk4.&lt;br /&gt;
&lt;br /&gt;
=== Sound Properties ===&lt;br /&gt;
&lt;br /&gt;
Regarding properties, the speaker (the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity is a speaker in disguise :) has by default the properties &amp;quot;omni&amp;quot;, &amp;quot;global&amp;quot;, and &amp;quot;looping&amp;quot; already turned on, so that all sounds played are heard everywhere, from no direction, and will loop.  If you change these properties (e.g., for one ambient) the change will apply to all ambients on the speaker.  So you probably don&#039;t want to turn these properties off.  &lt;br /&gt;
&lt;br /&gt;
Another spawnarg worth noting is &amp;quot;s_volume&amp;quot;.  Since the location_settings also acts as a speaker, this will work to change volume (0=full volume, -10=half volume, -60=silence), again globally on all the ambients playing on it.  Unless you have a very good reason for doing so however (e.g., you want all your ambients much louder or quieter) you probably don&#039;t want to use the s_volume spawnarg.  If you want to change the volume of a specific ambient, you can do so on the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity with the &amp;quot;volume&amp;quot; spawnarg as described below (note some of the issues involved with volume changes there as well), not the location_settings entity (or directly in the sound&#039;s soundshader).  &lt;br /&gt;
&lt;br /&gt;
Your entity will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Speaker4.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sound Override ===&lt;br /&gt;
&lt;br /&gt;
From version 2.04, an &amp;quot;override&amp;quot; property for sounds has been added to the location settings entity. The purpose is to allow a mapper to easily override the location ambient to play their own sound, such as an ambient when a discovery is made, to build tension, action music when the player is seen, or for reading a book, etc., and then return to the location sounds when it&#039;s done. &lt;br /&gt;
&lt;br /&gt;
The default value for &amp;quot;override&amp;quot; is &amp;quot;0&amp;quot;, meaning override is turned off, so the location ambients play as normal. Although it looks boolean, the data type is a string, so it takes any characters. If at any time in-game you dynamically change &amp;quot;override&amp;quot; to any non-zero value (I&#039;ll explain how below), it will override the location ambients to allow you to play your own sound as long as it is non-zero. To turn location ambient sounds back on, you change &amp;quot;override&amp;quot; back to &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you change &amp;quot;override&amp;quot; to one of the pre-cached sound names (that is, a name with the &amp;quot;snd_&amp;quot; prefix mentioned above, such as &amp;quot;snd_alert&amp;quot;), then the location system will fade out the location ambient and play the ambient sound you registered under that name as an override ambient. If you open the console, it will report that the override ambient is playing. The override ambient will continue to play until override is changed back to zero or to another override ambient. This means if you just want to play a one-shot ambient, you need to use a script with a wait function that waits the duration of the ambient then turns override off to restore the location ambient, otherwise it will loop. Using the function sys.waitFor( $[speaker_name]); after running the speaker is supposed to automatically wait the duration, but this needs to be tested.  &lt;br /&gt;
&lt;br /&gt;
If you change the override property to another value (not a sound name) such as &amp;quot;1&amp;quot;, it will simply turn the system off, allowing the mapper to play a speaker in the silence if they prefer. &lt;br /&gt;
&lt;br /&gt;
There are two basic ways to change the &amp;quot;override&amp;quot; property dynamically, calling a script and triggering a target_setKeyVal entity in-game. &lt;br /&gt;
&lt;br /&gt;
1. Script. The script function to change a property on an entity is $tdm_location_settings_1.setKey( &amp;quot;override&amp;quot;, &amp;quot;[snd_name]&amp;quot;); to turn on an override sound and $[tls_1].setKey( &amp;quot;override&amp;quot;, &amp;quot;0&amp;quot;);  to turn the location ambients back on. Note because it&#039;s a string data type, you need to put zero in quote marks/inverted commas. Also be sure to use the right name for the location settings entity. It may not have a &amp;quot;_1&amp;quot; suffix. &lt;br /&gt;
&lt;br /&gt;
2. Target_setKeyVal. At the bottom of the entity list is target_setKeyVal (note it&#039;s not with other target entities). Create one of these entities and have it target the location settings entity (e.g., enter a property/key &amp;quot;target&amp;quot; &amp;quot;tdm_location_settings_1&amp;quot;). Now add the property/key &amp;quot;keyval&amp;quot; &amp;quot;override;snd_name&amp;quot; to turn on the override sound. Note you separate the propery and key with a semicolon and no space. Now when you trigger that entity with a trigger brush, button, or anything else, it will change the propery and your override ambient will fade in.  You can have another target_setkeyval entity with &amp;quot;keyval&amp;quot; &amp;quot;override;0&amp;quot; to turn override off and turn the location based ambients back on. &lt;br /&gt;
&lt;br /&gt;
The tdm_location_settings entity has also got new properties for fading behavior. Thus, the mapper can make the override ambient fade in as normal, or have it blast in with no fade-in if they want. These properties are the same &#039;fading&#039; type spawnargs as are on the info_location settings described below, and work in the same way, except they are on the location settings entity and only apply to override ambients. (Volume is not included however. You&#039;d just use the speaker property &amp;quot;s_volume&amp;quot; directly, but you&#039;d need to restore it after the override is over if you don&#039;t want the change applying to all sounds.) You can change them dynamically in the same way as override. If you have multiple overrides, some with fading and some without, and want to revert to the default fading without looking it up, you can enter &amp;quot;-1&amp;quot; as the value of a property and it uses the default value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are finished with the ambient sound part now.&lt;br /&gt;
&lt;br /&gt;
== The Ambient Light ==&lt;br /&gt;
&lt;br /&gt;
You need to create an ambient light in your level. This will cover the entire level, and provide a minimum default light for when there is no other light covering a surface:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;{{RMB}} -&amp;gt; Create light&#039;&#039;&#039;&lt;br /&gt;
# Move the light&#039;s origin to the center of your map, and drag its size so that it covers your entire map, and then some more. Remember to increase the size of that light when you build more area into your map!&lt;br /&gt;
# Open the light inspector (default shortcut {{key|L}}) and set the light texture to &#039;&#039;&#039;lights/ambientlightnfo&#039;&#039;&#039;&lt;br /&gt;
# Set the color of the light to a reasonable default, f.i. &amp;quot;.08 .08 .08&amp;quot; This value will be used when a zone has no other ambient light settings&lt;br /&gt;
# Open the entity inspector (default shortcut {{key|N}}) and set the name of the light to &#039;&#039;&#039;ambient_world&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The last step is important!&lt;br /&gt;
&lt;br /&gt;
You are done now with the global ambient light.&lt;br /&gt;
&lt;br /&gt;
== The Location Entities ==&lt;br /&gt;
&lt;br /&gt;
Now you need to set up the location system so the game knows where the zones are, and their boundaries where changes will happen.  A location is basically any area that&#039;s closed in by brushes and marked portals and contains an info_location entity. Unlike a vis-portaled area (which is one area between [[vis_portals]], a.k.a. a &amp;quot;leaf&amp;quot;), a zone can cover more than one portaled area (&amp;quot;leaves&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
As an aside, locations are also used for setting the EAX properties in the area (e.g., the echo-y-ness of a big hall or cave, or the dullness of a small carpeted room).  So you have a good reason to have them even in addition to handling ambient sounds and lights.  &lt;br /&gt;
&lt;br /&gt;
=== info_locationseparator ===&lt;br /&gt;
&lt;br /&gt;
As I suggested above, you have to mark all the portals leading in and out of a zone by hand.  You do this with an entity called a &#039;&#039;&#039;info_locationseparator&#039;&#039;&#039;.  Create one so it touches or pierces the portal you want as a boundary, and it will mark that portal as a location boundary. (Note, you only make one separator per portal. In the photo example below, the one separator is piercing the portal.) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_locationseparator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t touch a portal with this entity, than it will not register in the game as the boundary to a new zone, and the zone will continue into the area on the other side of the portal.  This happens even if you have a second info_location (described below) on the other side (the game will just pick one and use that for the whole zone).  This can be a good thing because, say you have a mansion with 30 portals inside.  You can cover the whole area inside it by just marking the 2 or 3 portals leading into the mansion area through the doors and open windows, and everything inside that marked area will be counted as one location (just don&#039;t miss marking an exit, or have an un-portaled gap to the outside between brushes, or the location will leak outside.  It has to be hermetically sealed).  &lt;br /&gt;
&lt;br /&gt;
I have read discussion that a door touching a portal marks it as a location boundary, but in my experiments the door did not create a new location and I still had to use a info_locationseparator over the portal to register it as a boundary.&lt;br /&gt;
&lt;br /&gt;
=== info_location ===&lt;br /&gt;
&lt;br /&gt;
Now, inside the zone you want to have, create an &#039;&#039;&#039;info_location&#039;&#039;&#039; entity:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_location&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Anywhere in the space of the zone is fine.  Name it the name of the zone you want (to make it easy to find when you push {{key|J}}).&lt;br /&gt;
&lt;br /&gt;
== Settings per location/zone ==&lt;br /&gt;
&lt;br /&gt;
On each info_location, you can set multiple spawnargs that adjust the light or sound for that location, as well&lt;br /&gt;
as run scripts. We cover them next:&lt;br /&gt;
&lt;br /&gt;
=== Ambient sound ===&lt;br /&gt;
&lt;br /&gt;
Now create a spawnarg property of &amp;quot;ambient&amp;quot; with the value being the speaker-name of the sound you used in the location_settings entity above (NOT the soundshader name or file name).  For example, &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;ambient&amp;quot;    &amp;quot;snd_streets&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will send a command to the location_settings (in its speaker capacity) to play the ambient it has registered under &amp;quot;snd_streets&amp;quot; that you entered.  When you enter a new zone, in turn, the new info_location sends a command to the speaker to turn off that ambient and start a new one.  &lt;br /&gt;
&lt;br /&gt;
If you wanted to have no ambient playing in the zone (and turn off any ambient started from another zone), you would use &amp;quot;snd_silence&amp;quot; as the value to command the speaker to turn off.  Also, if you have an info_location with no &amp;quot;ambient&amp;quot; value at all, it will also turn off the ambient (in the present version of this system).  That means if you make a new location but want the same ambient playing in it as the location next to it, you still need to add the ambient name for the already-playing ambient for it to continue playing into the new zone; otherwise it will turn off.  &lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Here are two info_locations on two sides of a portal, with one info_locationseparator touching the portal (actually piercing it), and with each info_location containing the name of the ambient that will play in its respective zone.&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_streets.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_silence.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it.  The ambients will now turn on when you enter a zone and turn off when you enter a new zone, turning on the new ambient in that new zone (unless it&#039;s the same ambient, then it just keeps playing, useful e.g., if you want 2 different EAX but 1 ambient playing).  If you open up the console, you should see a message saying that a new ambient is now playing in your current location, naming the ambient and location.&lt;br /&gt;
&lt;br /&gt;
=== Sound Fading ===&lt;br /&gt;
&lt;br /&gt;
Finally, there are a few other spawnargs on the info_locations that you usually don&#039;t have to worry about (with the possible exception of &amp;quot;volume&amp;quot;), but you can use them if you like, so I will mention them.  They concern the properties of the ambient fading.  Check the &amp;quot;Show Inhereted Properties&amp;quot; to see their default values.  Entering a new value will over-write the default value, but only for that one object.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Info_loc.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
==== fiduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in duration&amp;quot;.  This is the length of time in seconds it takes for the in-coming ambient (the one for this zone) to completely fade-in.  The default value is 4 seconds.  You can, e.g., make the fade last much longer with a larger value.  &lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want your ambient to fade in at all, but start immediately at full volume, change this value to &amp;quot;.001&amp;quot; (NOT zero). &lt;br /&gt;
&lt;br /&gt;
==== foduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out duration&amp;quot;.  This is the length of time in seconds it takes for the out-going ambient (the one from the zone you&#039;re leaving) to completely fade-out.  Again, if you want it to cut right off without fading, use a value of &amp;quot;.001&amp;quot;.   &lt;br /&gt;
&lt;br /&gt;
==== fidelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in Delay&amp;quot;.  You can delay the beginning of the in-coming ambient&#039;s fade-in after you enter the new area.  You might want to do this, for example, if you want the out-going ambient to completely fade out before you begin fading in the new ambient.  So you would set fidelay to the same time as the foduration.  By default it is set to .001 so that there is no delay and the fade in starts immediately.  If the out-going fade-out also starts immediately (which happens by default), then they blend together in a nice transition fade.  &lt;br /&gt;
&lt;br /&gt;
==== fodelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out Delay&amp;quot;.  Similarly you can delay the beginning of the out-going ambient&#039;s fade out.  You might want to do this if you wanted the in-coming ambient to completely fade in before you started the fade out of the old ambient.  Then you would set it to fiduration.  Like fidelay, it is set to .001 so there is no delay and the fade out starts immediately.  &lt;br /&gt;
&lt;br /&gt;
==== fovolume ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out volume&amp;quot;.  This sets the volume to which the out-going ambient fades to.  -60 turns it off, which is the default (0 means no decrease in volume at all).  If you go any higher than -60, than it will leave the old ambient still playing at a lower volume under the new ambient (at least until you enter a 3rd new zone).  Not sure why you&#039;d ever want to do that, so you probably don&#039;t want to change it.  &lt;br /&gt;
&lt;br /&gt;
==== volume ====&lt;br /&gt;
&lt;br /&gt;
This allows the mapper to override the volume of the ambient sound once it has fully faded in, and uses the same decibel scale as the &#039;&#039;&#039;s_volume&#039;&#039;&#039; speaker parameter.  Note, though, that it uses the spanwarg &amp;quot;volume&amp;quot; instead.  I found a decibel-loudness calculator here: http://www.sengpielaudio.com/calculator-levelchange.htm that lets you compute the decibel number for relative loudness.  According to it, &amp;quot;0&amp;quot; is the native volume of the sound (the default), &amp;quot;-60&amp;quot; is silence, &amp;quot;-4&amp;quot; is 3/4 (.75) of the volume, &amp;quot;-10&amp;quot; is half (.5) the volume, &amp;quot;-17&amp;quot; is 0.3 of the volume, and it goes quickly down from there.  &amp;quot;10&amp;quot; is double, but be warned there may be problems with positive numbers (e.g., volume clipping) and you should keep it not far above 0 if at all.  See [[Setting Up Speakers#volume/ s_volume|&amp;quot;Volume / S_Volume&amp;quot;]] &amp;amp; [[Volume Issues]] for more detailed discussion of the volume parameter.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not override ambient volumes unless strictly necessary&#039;&#039;&#039;. Maps with wildly different ambient volume settings result in a poor experience for players, and limit the ability of the Dark Mod team to respond to volume-related issues by changing default volumes in sound shader declarations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These last two (&#039;&#039;&#039;foduration_2foip&#039;&#039;&#039; and &#039;&#039;&#039;fiduration_2foip&#039;&#039;&#039;) are pretty obscure situations, so you probably don&#039;t need to ever mess with them unless you want to completely get rid of ambient fades (then you can set them to .001 like the other &#039;fade duration&#039; properties).&lt;br /&gt;
&lt;br /&gt;
==== foduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-out duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  This provides a shorter fade-out duration (in seconds) for when the player quickly runs into a 3rd location, such that the 1st and 2nd ambients from areas the player just left are still fading out (hence the 2 fade-outs). But the quickend-fade-out only applies to the 1st ambient fading out. (i.e., not of the ambient you just left, but the one you left just before that -- unless you&#039;re backtracking, then it just fades the prev-prev ambient back in).  Fading out that prev-prev ambient more quickly in turn quickens the time the new fade-in can start (because you can&#039;t have 3 sounds on at the same time on the zone speaker, only 2).  So it in effect reduces the gap of quiet that happens before the newest ambient fully fades-in by enabling it to start its fade-in faster.  The default is 1 second.  &lt;br /&gt;
&lt;br /&gt;
==== fiduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-in duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  Like its counterpart, this sets a shorter duration of a fade-in of a new ambient (in seconds) when you run into a 3rd location, while the ambients from the 1st and 2nd locations are fading out.  Again, because so many ambients are fading out, it can leave a gap of silence for a bit until the new 3rd ambient fades in.  So setting a shorter duration than usual for the newest ambient to fully fade in helps shorten the quiet space.  The default is 2 seconds (as opposed to a normal default fade-in duration of 4 seconds).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Example of Location with No Fading Transition ====&lt;br /&gt;
&lt;br /&gt;
As mentioned above, if you wanted a set-up that turned off all fades so that the out-going ambient shut directly off and the in-coming ambient turns directly on, you&#039;d change all the duration properties to .001, like the following image.  (Note that this modifies the transition only for entering this one location.  All the other info_locations maintain their default values unless you also change them by hand.)  &lt;br /&gt;
&lt;br /&gt;
[[image: Fade_duration.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=== Ambient light settings ===&lt;br /&gt;
&lt;br /&gt;
These spawnargs can be set on &#039;&#039;&#039;atdm:info_location&#039;&#039;&#039; entities and apply to the current zone then:&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This spawnarg specifies the ambient light color for this zone. Setting it f.i. to &amp;quot;0.10 0.02 0.02&amp;quot; would fade the ambient light to a slightly reddish color. This can be useful for a lava cave. Other examples are slightly blue light for moonlit outsides, greenish cast for caves or underwater areas etc.&lt;br /&gt;
&lt;br /&gt;
If you do not set this on an info_location entity, the default value of the global &amp;quot;ambient_world&amp;quot; entity will be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*You need to set the color values as fractions between 0 and 1, e.g. &#039;&#039;&#039;&amp;quot;0.08 0.08 0.02&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;NOT&#039;&#039;&#039; as integers like &amp;quot;8 8 2&amp;quot;, or it will not work.&lt;br /&gt;
&lt;br /&gt;
:*If the color change between two zones is too big, the fading and change can become obvious to the player and spoil the subtlety. This can happen for instance if you zoom from a bluish-lit outside directly to a reddish-glowing cave inside. To help the transition, consider adding an intermediate zone with a light color that is either between the two, or a more neutral grey. Making it not possible to look from one zone to the other also helps; this way the player can&#039;t see that f.i. the outside ground suddenly also glows reddish when looking back from the cave entrance to the outside.&lt;br /&gt;
&lt;br /&gt;
:*There&#039;s a bug with setting ambient_light to 0 0 0 (to be fixed in 2.05), so use 0.004 0.004 0.004 if you want to remove ambient light from a location.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_time&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds it will take to fade from the current ambient light color to the one specified for this location. A slower fade means more gradual light changes, so they don&#039;t become too obvious to the player. Use at least 3, better 5 or 7 seconds.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_delay&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds the fading will be delayed when the player changes location.&lt;br /&gt;
&lt;br /&gt;
Useful to prevent fades toggling back and forth when the player stands in a doorway and goes a nudge forward/backwards. A good value is at least 1 second.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is a factor&#039;&#039;&#039;, all lights in the current area will be summed together and scaled by this value.&lt;br /&gt;
&lt;br /&gt;
If set to a value other than &amp;quot;0 0 0&amp;quot;, the lights in the current zone will be all summed together and then&lt;br /&gt;
added to the current base ambient light. This happens with the frequency of &#039;&#039;&#039;update_period&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The basic effect is that a roaring fire also slightly makes the walls flicker, and extinguishing all lights in a room would decrease the ambient light slightly.&lt;br /&gt;
&lt;br /&gt;
The factor should be set up so that for large and dark rooms (e.g. caves) the dynamic part is small, while for small, bright rooms (white walls) the dynamic part is bigger. Examples are: &amp;quot;0.05 0.05 0.05&amp;quot; and &amp;quot;0.1 0.1 0.1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that setting the dynamic factor to high can result in the player being busted by lights that are turned on in the room even when the player is in the shadow.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic_cap&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Used to cap the dynamic ambient light part. If set to 0, will be ignored, so to have a very very small&lt;br /&gt;
cap, set to &amp;quot;0.01&amp;quot;, e.g. if you want only the red part to be dynamic, set it f.i. &amp;quot;0.15 0.01 0.01&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_falloff&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
&lt;br /&gt;
* -1 on info_location: use the value from the atdm:location_settings entity&lt;br /&gt;
* 0 - no dynamic falloff&lt;br /&gt;
* 0.5 - small, based on square root of distance&lt;br /&gt;
* 1 - medium, linear dynamic falloff (should be used as it looks best)&lt;br /&gt;
* 2 - high, square of distance based falloff&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dist_scale&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
A factor to scale the distance before applying a dynamic light falloff. Only used then &#039;&#039;&#039;ambient_light_dynamic_falloff&#039;&#039;&#039; is not 0. Good valuesa are around 1.0.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
=== Script calls ===&lt;br /&gt;
&lt;br /&gt;
The next four spawnargs all specify scripts to call when the player enters or exits a zone. Note that the very first zone is also &amp;quot;entered&amp;quot; by the player when the map starts. That means &amp;quot;call_once_on_entry&amp;quot; for the start zone should be called at start-time.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is left by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is entered by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player leaves that zone.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player enters that zone.&lt;br /&gt;
&lt;br /&gt;
==== Example scripts ====&lt;br /&gt;
&lt;br /&gt;
Here is an example script that spawns an object where the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity is for the zone the player just left. You can call this script by setting:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;call_once_on_exit&amp;quot; &amp;quot;spawn_pear&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
on your info_location entity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void spawn_pear( entity old_zone )&lt;br /&gt;
  {&lt;br /&gt;
  // Get the name of the location that the player just left:&lt;br /&gt;
  string location_name = old_zone.getName();&lt;br /&gt;
  // and display it on the console for debugging&lt;br /&gt;
  sys.print (&amp;quot;Spawning pear after leaving &amp;quot; + location_name + &amp;quot;\n&amp;quot;);&lt;br /&gt;
  // spawn the pear entity&lt;br /&gt;
  entity pear = sys.spawn(&amp;quot;atdm:moveable_food_pear&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // and now get the position of the old location entity:&lt;br /&gt;
  vector origin = old_zone.getOrigin();&lt;br /&gt;
  // finally move the pear to the point of the info_location&lt;br /&gt;
  pear.setOrigin( origin );&lt;br /&gt;
  // so once the player exits this location, ONE pear will spawn and fall down&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example script to turn entities on/off when player enters a location ====&lt;br /&gt;
The basic problem with normal TDM entity work is the difficulty of turning something deliberately and reliably on or off. You never turn something on or off, but instead you send toggles to the entities. Let&#039;s say you have a omni sound (a sound which is heard everywhere) which you need to shut off when the player goes to a certain location. Trigger_multiples trigger targets when the player stands on their volume, which may result in a completely wrong situation depending how long the player stands on the trigger.&lt;br /&gt;
&lt;br /&gt;
Location entity scripting can be of great help here. This kind of scripting can generally solve any kind of problem where the mapper wants something to be switched specifically on and off when the player moves to a specific location. Here is an example, which was used to switch off a global thunder sound when the player moves to a location where the rumbling cannot be heard.&lt;br /&gt;
&lt;br /&gt;
Set up location setting as described above. Put a location separator on the visportal you want to be the point which switches your target on/off. Give the info_location-entity spawnargs &lt;br /&gt;
*call_on_entry yourscript&lt;br /&gt;
*call_on_exit yourscript&lt;br /&gt;
&lt;br /&gt;
Then go and create in your /maps folder a file yourmapname.script. Put in the following data there:&lt;br /&gt;
&lt;br /&gt;
 void yourscript(entity old_zone)&lt;br /&gt;
 {&lt;br /&gt;
 sys.println(&amp;quot;script yourscript running..&amp;quot;);&lt;br /&gt;
 sys.trigger( $entity_name );&lt;br /&gt;
 }&lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*yourscript is the name of your script you call.&lt;br /&gt;
*sys.println is a debug feature which gives the text in console when the script is triggered. You can leave it for testing and remove it before releasing your map.&lt;br /&gt;
*sys.trigger ($entity_name) replace the entity_name with the entity which you want to be triggered.&lt;br /&gt;
&lt;br /&gt;
Now your system works like this: &lt;br /&gt;
*When the player is outside the location everything is normal. Ie sound off, light off, etc.&lt;br /&gt;
*When the player enters the location, entity_name gets triggered once. Ie sound on, light on, etc. (NOTE: When yourscript() is called via a call_on_entry, &#039;entity old_zone&#039; should actually be processed as &#039;entity new_zone&#039;, since you&#039;re provided the location entity of the location you&#039;re entering, NOT the location entity of the location you&#039;re leaving.)&lt;br /&gt;
*When the player leaves the location, entity_name gets triggered again. Ie sound off, light off, etc.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Adding ambient Sounds to your Map]]&lt;br /&gt;
* [[Dynamic ambient light]].&lt;br /&gt;
* [[Ambient Sounds - Zone (using triggers)]]&lt;br /&gt;
* [[Sound File Formats]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-sound}}&lt;br /&gt;
{{editing}}&lt;br /&gt;
{{tutorial-scripting}}&lt;br /&gt;
[[Category:Ambient Light]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=21303</id>
		<title>Location Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=21303"/>
		<updated>2018-10-28T09:05:57Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* &amp;quot;ambient_light&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to setup &#039;&#039;&#039;locations&#039;&#039;&#039; (also called &amp;quot;location zones&amp;quot; or &amp;quot;zones&amp;quot;) in your level, and then use these to:&lt;br /&gt;
&lt;br /&gt;
* fade to different ambient &#039;&#039;&#039;light levels&#039;&#039;&#039; for each zone&lt;br /&gt;
* fade between different ambient &#039;&#039;&#039;sounds&#039;&#039;&#039; in each zone&lt;br /&gt;
* run &#039;&#039;&#039;scripts&#039;&#039;&#039; automatically when the player enters or exits a zone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to use four types of entities in your map: &lt;br /&gt;
&lt;br /&gt;
* a special global entity (e.g. add only one, the position does not matter): &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
* a special global light entity named &#039;&#039;&#039;ambient_world&#039;&#039;&#039; &lt;br /&gt;
* multiple &#039;&#039;&#039;info_location&#039;&#039;&#039; and &#039;&#039;&#039;info_locationseparation&#039;&#039;&#039; entities&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
:Note:  Two alternative ways to get ambient sounds in your map are using speakers ([[Adding ambient Sounds to your Map]]), and using triggers ([[Ambient Sounds - Zone (using triggers)]]).  Speakers are good if you only want your ambient to cover a definite radius and have a very simple setup.  Triggers are basically obsoleted by the method in this tutorial.  The only time you might still want to use a trigger-system is if you want a ambient sound to begin at a place where for some reason you can&#039;t create a portal to mark the zone boundary, but you can still have a trigger brush.  There are some issues with a trigger system, too (f.i. their CPU and memory usage and more importantly they are not failsafe like locations are), that make the method in this tutorial superior.  &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The atdm:location_settings entity ==&lt;br /&gt;
&lt;br /&gt;
Create a &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity in your blueroom (i.e., a room off to the side the player will never enter) or somewhere else in your map:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Default values ===&lt;br /&gt;
&lt;br /&gt;
The location_settings entity takes a few &#039;&#039;default&#039;&#039; spawnargs related to the ambient light settings:&lt;br /&gt;
&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_time&amp;quot;|&amp;quot;ambient_light_fade_time&amp;quot;]]&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_delay&amp;quot;|&amp;quot;ambient_light_fade_delay&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
For their meaning and values, please refer to their sections.&lt;br /&gt;
&lt;br /&gt;
=== update_period ===&lt;br /&gt;
&lt;br /&gt;
The spawnarg &#039;&#039;&#039;update_period&#039;&#039;&#039; specifies the time in seconds between updates. A good value is 0.2, e.g. 5 times per second. That avoids to run the script too often, and still allows seamless transitions.&lt;br /&gt;
&lt;br /&gt;
=== Sound Shaders ===&lt;br /&gt;
&lt;br /&gt;
In the entity&#039;s spawnargs, put the names of all the ambient sounds you want to play in your map.  (This pre-loads the sounds into the speaker so there isn&#039;t a pause when they start playing.)  Put it in one of these property/value forms (without the quote marks):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_streets&amp;quot; &amp;quot;city_night01_loop_z&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_mansion&amp;quot; &amp;quot;sound/ambient/ambience/mansion_tense01a.ogg&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The left hand spawnarg should have a &amp;quot;snd_&amp;quot; prefix, and any name, but most useful is probably the name of the area it is for.  You&#039;ll use this name again when you place the location markers or if you use the override system.  &lt;br /&gt;
&lt;br /&gt;
The right hand value points to the actual sound file that will play.  You can enter either the soundshader name, or the address where the sound file is (but see footnote).  You can see the soundshader names of ambient-ready sounds in the sub-folder &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot;.   You can find the address of the sound files in &amp;quot;Darkmod/sound/ambient/ambience&amp;quot; (remember to start the address with &amp;quot;sound&amp;quot; in the spawnarg).  You can also listen to the sounds at that location.  They are are in .ogg format. But it&#039;s easier to just create a speaker (left-click&amp;gt;speaker) and it will give you a sound directory where can play sound files and find the names. No searching through sound folders outside of DR (thanks to Badcog for that tip).&lt;br /&gt;
&lt;br /&gt;
:Note that it is very easy to add custom ambients with this system.  Just create a folder in your .pk4 (a .zip file renamed to .pk4) and name the folder &amp;quot;sound&amp;quot;, with another folder inside it named after your FM or an abbreviation.  Put your custom sound inside that second folder.  (E.g., I have a custom ambient named Frozen.ogg, and my FM&#039;s name is Patently Dangerous.  So in my .pk4 was &amp;quot;sound/patent/frozen.ogg&amp;quot;.  Note that ambients must be in either .ogg or .wav format. Now in your speaker_zone_ambient, just put the sound&#039;s address in the spawnarg (but see footnote).  In my case, I have &amp;quot;snd_warehouse&amp;quot; &amp;quot;sound/patent/frozen.ogg&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
It is worth noting that one special &amp;quot;sound&amp;quot; is already loaded by default.  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_silence&amp;quot; &amp;quot;silence&amp;quot;&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
You can see it if you check &amp;quot;Show Inherited Properties&amp;quot;.  This is the sound you use to turn &amp;quot;off&amp;quot; the ambient sounds playing, so there is silence in the zone.&lt;br /&gt;
&lt;br /&gt;
=== On Shader Names ===&lt;br /&gt;
&lt;br /&gt;
One footnote on the sound shader names. The &#039;&#039;shader tdm_ambient_ambience_zoned.sndshd&#039;&#039; has a special command (&amp;quot;leadin&amp;quot;) for its sounds that begins the ambient with a short pause.  This is to pre-empt a possible *pop* of sound for loud ambients which can occur when the player&#039;s system slows down (and only occasionally, at that), so the player never hears the pop.  (It&#039;s a quirk of how Doom3 does fade-ins; when you start a new sound, you have to rapidly fade it out first, like .001 seconds, then slowly fade back in.  But if the system slows and the ambient starts loud, it might stretch that .001 to something audible.)&lt;br /&gt;
 Edit:Baddcog- These seem to now have been appended with a _z if you look at sound names in speaker dialog.&lt;br /&gt;
&lt;br /&gt;
If you alternatively use the address or the shader name from &amp;quot;Darkmod/sound/tdm_ambient_ambience.sndshd&amp;quot; (which lack the &amp;quot;leadin&amp;quot; property) it will otherwise work fine, but you won&#039;t be protected from that occasional little pop (at least until we find another fix).  For ambients that start quietly or areas that won&#039;t slow the system down, it will probably never even be a problem and the player will never hear it, so using the address is fine, or using the tdm_ambient_ambience shader name if you don&#039;t want the tiny pause for whatever reason.  But if you want to control it, use the tdm_ambient_ambience_zoned name, and for a custom sound, to pre-empt the pop you&#039;ll need to use a custom shader with the &amp;quot;leadin&amp;quot; line.  Use the &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot; as a template to do that, and name the custom shader file something like YourFMsName.sndshd, and put it in the &amp;quot;sound&amp;quot; folder in your .pk4.&lt;br /&gt;
&lt;br /&gt;
=== Sound Properties ===&lt;br /&gt;
&lt;br /&gt;
Regarding properties, the speaker (the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity is a speaker in disguise :) has by default the properties &amp;quot;omni&amp;quot;, &amp;quot;global&amp;quot;, and &amp;quot;looping&amp;quot; already turned on, so that all sounds played are heard everywhere, from no direction, and will loop.  If you change these properties (e.g., for one ambient) the change will apply to all ambients on the speaker.  So you probably don&#039;t want to turn these properties off.  &lt;br /&gt;
&lt;br /&gt;
Another spawnarg worth noting is &amp;quot;s_volume&amp;quot;.  Since the location_settings also acts as a speaker, this will work to change volume (0=full volume, -10=half volume, -60=silence), again globally on all the ambients playing on it.  Unless you have a very good reason for doing so however (e.g., you want all your ambients much louder or quieter) you probably don&#039;t want to use the s_volume spawnarg.  If you want to change the volume of a specific ambient, you can do so on the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity with the &amp;quot;volume&amp;quot; spawnarg as described below (note some of the issues involved with volume changes there as well), not the location_settings entity (or directly in the sound&#039;s soundshader).  &lt;br /&gt;
&lt;br /&gt;
Your entity will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Speaker4.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sound Override ===&lt;br /&gt;
&lt;br /&gt;
From version 2.04, an &amp;quot;override&amp;quot; property for sounds has been added to the location settings entity. The purpose is to allow a mapper to easily override the location ambient to play their own sound, such as an ambient when a discovery is made, to build tension, action music when the player is seen, or for reading a book, etc., and then return to the location sounds when it&#039;s done. &lt;br /&gt;
&lt;br /&gt;
The default value for &amp;quot;override&amp;quot; is &amp;quot;0&amp;quot;, meaning override is turned off, so the location ambients play as normal. Although it looks boolean, the data type is a string, so it takes any characters. If at any time in-game you dynamically change &amp;quot;override&amp;quot; to any non-zero value (I&#039;ll explain how below), it will override the location ambients to allow you to play your own sound as long as it is non-zero. To turn location ambient sounds back on, you change &amp;quot;override&amp;quot; back to &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you change &amp;quot;override&amp;quot; to one of the pre-cached sound names (that is, a name with the &amp;quot;snd_&amp;quot; prefix mentioned above, such as &amp;quot;snd_alert&amp;quot;), then the location system will fade out the location ambient and play the ambient sound you registered under that name as an override ambient. If you open the console, it will report that the override ambient is playing. The override ambient will continue to play until override is changed back to zero or to another override ambient. This means if you just want to play a one-shot ambient, you need to use a script with a wait function that waits the duration of the ambient then turns override off to restore the location ambient, otherwise it will loop. Using the function sys.waitFor( $[speaker_name]); after running the speaker is supposed to automatically wait the duration, but this needs to be tested.  &lt;br /&gt;
&lt;br /&gt;
If you change the override property to another value (not a sound name) such as &amp;quot;1&amp;quot;, it will simply turn the system off, allowing the mapper to play a speaker in the silence if they prefer. &lt;br /&gt;
&lt;br /&gt;
There are two basic ways to change the &amp;quot;override&amp;quot; property dynamically, calling a script and triggering a target_setKeyVal entity in-game. &lt;br /&gt;
&lt;br /&gt;
1. Script. The script function to change a property on an entity is $tdm_location_settings_1.setKey( &amp;quot;override&amp;quot;, &amp;quot;[snd_name]&amp;quot;); to turn on an override sound and $[tls_1].setKey( &amp;quot;override&amp;quot;, &amp;quot;0&amp;quot;);  to turn the location ambients back on. Note because it&#039;s a string data type, you need to put zero in quote marks/inverted commas. Also be sure to use the right name for the location settings entity. It may not have a &amp;quot;_1&amp;quot; suffix. &lt;br /&gt;
&lt;br /&gt;
2. Target_setKeyVal. At the bottom of the entity list is target_setKeyVal (note it&#039;s not with other target entities). Create one of these entities and have it target the location settings entity (e.g., enter a property/key &amp;quot;target&amp;quot; &amp;quot;tdm_location_settings_1&amp;quot;). Now add the property/key &amp;quot;keyval&amp;quot; &amp;quot;override;snd_name&amp;quot; to turn on the override sound. Note you separate the propery and key with a semicolon and no space. Now when you trigger that entity with a trigger brush, button, or anything else, it will change the propery and your override ambient will fade in.  You can have another target_setkeyval entity with &amp;quot;keyval&amp;quot; &amp;quot;override;0&amp;quot; to turn override off and turn the location based ambients back on. &lt;br /&gt;
&lt;br /&gt;
The tdm_location_settings entity has also got new properties for fading behavior. Thus, the mapper can make the override ambient fade in as normal, or have it blast in with no fade-in if they want. These properties are the same &#039;fading&#039; type spawnargs as are on the info_location settings described below, and work in the same way, except they are on the location settings entity and only apply to override ambients. (Volume is not included however. You&#039;d just use the speaker property &amp;quot;s_volume&amp;quot; directly, but you&#039;d need to restore it after the override is over if you don&#039;t want the change applying to all sounds.) You can change them dynamically in the same way as override. If you have multiple overrides, some with fading and some without, and want to revert to the default fading without looking it up, you can enter &amp;quot;-1&amp;quot; as the value of a property and it uses the default value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are finished with the ambient sound part now.&lt;br /&gt;
&lt;br /&gt;
== The Ambient Light ==&lt;br /&gt;
&lt;br /&gt;
You need to create an ambient light in your level. This will cover the entire level, and provide a minimum default light for when there is no other light covering a surface:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;{{RMB}} -&amp;gt; Create light&#039;&#039;&#039;&lt;br /&gt;
# Move the light&#039;s origin to the center of your map, and drag its size so that it covers your entire map, and then some more. Remember to increase the size of that light when you build more area into your map!&lt;br /&gt;
# Open the light inspector (default shortcut {{key|L}}) and set the light texture to &#039;&#039;&#039;lights/ambientlightnfo&#039;&#039;&#039;&lt;br /&gt;
# Set the color of the light to a reasonable default, f.i. &amp;quot;.08 .08 .08&amp;quot; This value will be used when a zone has no other ambient light settings&lt;br /&gt;
# Open the entity inspector (default shortcut {{key|N}}) and set the name of the light to &#039;&#039;&#039;ambient_world&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The last step is important!&lt;br /&gt;
&lt;br /&gt;
You are done now with the global ambient light.&lt;br /&gt;
&lt;br /&gt;
== The Location Entities ==&lt;br /&gt;
&lt;br /&gt;
Now you need to set up the location system so the game knows where the zones are, and their boundaries where changes will happen.  A location is basically any area that&#039;s closed in by brushes and marked portals and contains an info_location entity. Unlike a vis-portaled area (which is one area between [[vis_portals]], a.k.a. a &amp;quot;leaf&amp;quot;), a zone can cover more than one portaled area (&amp;quot;leaves&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
As an aside, locations are also used for setting the EAX properties in the area (e.g., the echo-y-ness of a big hall or cave, or the dullness of a small carpeted room).  So you have a good reason to have them even in addition to handling ambient sounds and lights.  &lt;br /&gt;
&lt;br /&gt;
=== info_locationseparator ===&lt;br /&gt;
&lt;br /&gt;
As I suggested above, you have to mark all the portals leading in and out of a zone by hand.  You do this with an entity called a &#039;&#039;&#039;info_locationseparator&#039;&#039;&#039;.  Create one so it touches or pierces the portal you want as a boundary, and it will mark that portal as a location boundary. (Note, you only make one separator per portal. In the photo example below, the one separator is piercing the portal.) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_locationseparator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t touch a portal with this entity, than it will not register in the game as the boundary to a new zone, and the zone will continue into the area on the other side of the portal.  This happens even if you have a second info_location (described below) on the other side (the game will just pick one and use that for the whole zone).  This can be a good thing because, say you have a mansion with 30 portals inside.  You can cover the whole area inside it by just marking the 2 or 3 portals leading into the mansion area through the doors and open windows, and everything inside that marked area will be counted as one location (just don&#039;t miss marking an exit, or have an un-portaled gap to the outside between brushes, or the location will leak outside.  It has to be hermetically sealed).  &lt;br /&gt;
&lt;br /&gt;
I have read discussion that a door touching a portal marks it as a location boundary, but in my experiments the door did not create a new location and I still had to use a info_locationseparator over the portal to register it as a boundary.&lt;br /&gt;
&lt;br /&gt;
=== info_location ===&lt;br /&gt;
&lt;br /&gt;
Now, inside the zone you want to have, create an &#039;&#039;&#039;info_location&#039;&#039;&#039; entity:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_location&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Anywhere in the space of the zone is fine.  Name it the name of the zone you want (to make it easy to find when you push {{key|J}}).&lt;br /&gt;
&lt;br /&gt;
== Settings per location/zone ==&lt;br /&gt;
&lt;br /&gt;
On each info_location, you can set multiple spawnargs that adjust the light or sound for that location, as well&lt;br /&gt;
as run scripts. We cover them next:&lt;br /&gt;
&lt;br /&gt;
=== Ambient sound ===&lt;br /&gt;
&lt;br /&gt;
Now create a spawnarg property of &amp;quot;ambient&amp;quot; with the value being the speaker-name of the sound you used in the location_settings entity above (NOT the soundshader name or file name).  For example, &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;ambient&amp;quot;    &amp;quot;snd_streets&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will send a command to the location_settings (in its speaker capacity) to play the ambient it has registered under &amp;quot;snd_streets&amp;quot; that you entered.  When you enter a new zone, in turn, the new info_location sends a command to the speaker to turn off that ambient and start a new one.  &lt;br /&gt;
&lt;br /&gt;
If you wanted to have no ambient playing in the zone (and turn off any ambient started from another zone), you would use &amp;quot;snd_silence&amp;quot; as the value to command the speaker to turn off.  Also, if you have an info_location with no &amp;quot;ambient&amp;quot; value at all, it will also turn off the ambient (in the present version of this system).  That means if you make a new location but want the same ambient playing in it as the location next to it, you still need to add the ambient name for the already-playing ambient for it to continue playing into the new zone; otherwise it will turn off.  &lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Here are two info_locations on two sides of a portal, with one info_locationseparator touching the portal (actually piercing it), and with each info_location containing the name of the ambient that will play in its respective zone.&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_streets.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_silence.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it.  The ambients will now turn on when you enter a zone and turn off when you enter a new zone, turning on the new ambient in that new zone (unless it&#039;s the same ambient, then it just keeps playing, useful e.g., if you want 2 different EAX but 1 ambient playing).  If you open up the console, you should see a message saying that a new ambient is now playing in your current location, naming the ambient and location.&lt;br /&gt;
&lt;br /&gt;
=== Sound Fading ===&lt;br /&gt;
&lt;br /&gt;
Finally, there are a few other spawnargs on the info_locations that you usually don&#039;t have to worry about (with the possible exception of &amp;quot;volume&amp;quot;), but you can use them if you like, so I will mention them.  They concern the properties of the ambient fading.  Check the &amp;quot;Show Inhereted Properties&amp;quot; to see their default values.  Entering a new value will over-write the default value, but only for that one object.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Info_loc.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
==== fiduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in duration&amp;quot;.  This is the length of time in seconds it takes for the in-coming ambient (the one for this zone) to completely fade-in.  The default value is 4 seconds.  You can, e.g., make the fade last much longer with a larger value.  &lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want your ambient to fade in at all, but start immediately at full volume, change this value to &amp;quot;.001&amp;quot; (NOT zero). &lt;br /&gt;
&lt;br /&gt;
==== foduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out duration&amp;quot;.  This is the length of time in seconds it takes for the out-going ambient (the one from the zone you&#039;re leaving) to completely fade-out.  Again, if you want it to cut right off without fading, use a value of &amp;quot;.001&amp;quot;.   &lt;br /&gt;
&lt;br /&gt;
==== fidelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in Delay&amp;quot;.  You can delay the beginning of the in-coming ambient&#039;s fade-in after you enter the new area.  You might want to do this, for example, if you want the out-going ambient to completely fade out before you begin fading in the new ambient.  So you would set fidelay to the same time as the foduration.  By default it is set to .001 so that there is no delay and the fade in starts immediately.  If the out-going fade-out also starts immediately (which happens by default), then they blend together in a nice transition fade.  &lt;br /&gt;
&lt;br /&gt;
==== fodelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out Delay&amp;quot;.  Similarly you can delay the beginning of the out-going ambient&#039;s fade out.  You might want to do this if you wanted the in-coming ambient to completely fade in before you started the fade out of the old ambient.  Then you would set it to fiduration.  Like fidelay, it is set to .001 so there is no delay and the fade out starts immediately.  &lt;br /&gt;
&lt;br /&gt;
==== fovolume ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out volume&amp;quot;.  This sets the volume to which the out-going ambient fades to.  -60 turns it off, which is the default (0 means no decrease in volume at all).  If you go any higher than -60, than it will leave the old ambient still playing at a lower volume under the new ambient (at least until you enter a 3rd new zone).  Not sure why you&#039;d ever want to do that, so you probably don&#039;t want to change it.  &lt;br /&gt;
&lt;br /&gt;
==== volume ====&lt;br /&gt;
&lt;br /&gt;
This allows the mapper to override the volume of the ambient sound once it has fully faded in, and uses the same decibel scale as the &#039;&#039;&#039;s_volume&#039;&#039;&#039; speaker parameter.  Note, though, that it uses the spanwarg &amp;quot;volume&amp;quot; instead.  I found a decibel-loudness calculator here: http://www.sengpielaudio.com/calculator-levelchange.htm that lets you compute the decibel number for relative loudness.  According to it, &amp;quot;0&amp;quot; is the native volume of the sound (the default), &amp;quot;-60&amp;quot; is silence, &amp;quot;-4&amp;quot; is 3/4 (.75) of the volume, &amp;quot;-10&amp;quot; is half (.5) the volume, &amp;quot;-17&amp;quot; is 0.3 of the volume, and it goes quickly down from there.  &amp;quot;10&amp;quot; is double, but be warned there may be problems with positive numbers (e.g., volume clipping) and you should keep it not far above 0 if at all.  See [[Setting Up Speakers#volume/ s_volume|&amp;quot;Volume / S_Volume&amp;quot;]] &amp;amp; [[Volume Issues]] for more detailed discussion of the volume parameter.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not override ambient volumes unless strictly necessary&#039;&#039;&#039;. Maps with wildly different ambient volume settings result in a poor experience for players, and limit the ability of the Dark Mod team to respond to volume-related issues by changing default volumes in sound shader declarations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These last two (&#039;&#039;&#039;foduration_2foip&#039;&#039;&#039; and &#039;&#039;&#039;fiduration_2foip&#039;&#039;&#039;) are pretty obscure situations, so you probably don&#039;t need to ever mess with them unless you want to completely get rid of ambient fades (then you can set them to .001 like the other &#039;fade duration&#039; properties).&lt;br /&gt;
&lt;br /&gt;
==== foduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-out duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  This provides a shorter fade-out duration (in seconds) for when the player quickly runs into a 3rd location, such that the 1st and 2nd ambients from areas the player just left are still fading out (hence the 2 fade-outs). But the quickend-fade-out only applies to the 1st ambient fading out. (i.e., not of the ambient you just left, but the one you left just before that -- unless you&#039;re backtracking, then it just fades the prev-prev ambient back in).  Fading out that prev-prev ambient more quickly in turn quickens the time the new fade-in can start (because you can&#039;t have 3 sounds on at the same time on the zone speaker, only 2).  So it in effect reduces the gap of quiet that happens before the newest ambient fully fades-in by enabling it to start its fade-in faster.  The default is 1 second.  &lt;br /&gt;
&lt;br /&gt;
==== fiduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-in duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  Like its counterpart, this sets a shorter duration of a fade-in of a new ambient (in seconds) when you run into a 3rd location, while the ambients from the 1st and 2nd locations are fading out.  Again, because so many ambients are fading out, it can leave a gap of silence for a bit until the new 3rd ambient fades in.  So setting a shorter duration than usual for the newest ambient to fully fade in helps shorten the quiet space.  The default is 2 seconds (as opposed to a normal default fade-in duration of 4 seconds).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Example of Location with No Fading Transition ====&lt;br /&gt;
&lt;br /&gt;
As mentioned above, if you wanted a set-up that turned off all fades so that the out-going ambient shut directly off and the in-coming ambient turns directly on, you&#039;d change all the duration properties to .001, like the following image.  (Note that this modifies the transition only for entering this one location.  All the other info_locations maintain their default values unless you also change them by hand.)  &lt;br /&gt;
&lt;br /&gt;
[[image: Fade_duration.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=== Ambient light settings ===&lt;br /&gt;
&lt;br /&gt;
These spawnargs can be set on &#039;&#039;&#039;atdm:info_location&#039;&#039;&#039; entities and apply to the current zone then:&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This spawnarg specifies the ambient light color for this zone. Setting it f.i. to &amp;quot;0.10 0.02 0.02&amp;quot; would fade the ambient light to a slightly reddish color. This can be useful for a lava cave. Other examples are slightly blue light for moonlit outsides, greenish cast for caves or underwater areas etc.&lt;br /&gt;
&lt;br /&gt;
If you do not set this on an info_location entity, the default value of the global &amp;quot;ambient_world&amp;quot; entity will be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*You need to set the color values as fractions between 0 and 1, e.g. &#039;&#039;&#039;&amp;quot;0.08 0.08 0.02&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;NOT&#039;&#039;&#039; as integers like &amp;quot;8 8 2&amp;quot;, or it will not work.&lt;br /&gt;
&lt;br /&gt;
:*If the color change between two zones is too big, the fading and change can become obvious to the player and spoil the subtlety. This can happen for instance if you zoom from a bluish-lit outside directly to a reddish-glowing cave inside. To help the transition, consider adding an intermediate zone with a light color that is either between the two, or a more neutral grey. Making it not possible to look from one zone to the other also helps; this way the player can&#039;t see that f.i. the outside ground suddenly also glows reddish when looking back from the cave entrance to the outside.&lt;br /&gt;
&lt;br /&gt;
:*There&#039;s a bug with setting ambient_light to 0 0 0 (to be fixed in 2.05), so use 0.004 0.004 0.004 if you want to remove ambient light from a location.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_time&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds it will take to fade from the current ambient light color to the one specified for this location. A slower fade means more gradual light changes, so they don&#039;t become too obvious to the player. Use at least 3, better 5 or 7 seconds.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_delay&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds the fading will be delayed when the player changes location.&lt;br /&gt;
&lt;br /&gt;
Useful to prevent fades toggling back and forth when the player stands in a doorway and goes a nudge forward/backwards. A good value is at least 1 second.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is a factor&#039;&#039;&#039;, all lights in the current area will be summed together and scaled by this value.&lt;br /&gt;
&lt;br /&gt;
If set to a value other than &amp;quot;0 0 0&amp;quot;, the lights in the current zone will be all summed together and then&lt;br /&gt;
added to the current base ambient light. This happens with the frequency of &#039;&#039;&#039;update_period&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The basic effect is that a roaring fire also slightly makes the walls flicker, and extinguishing all lights in a room would decrease the ambient light slightly.&lt;br /&gt;
&lt;br /&gt;
The factor should be set up so that for large and dark rooms (e.g. caves) the dynamic part is small, while for small, bright rooms (white walls) the dynamic part is bigger. Examples are: &amp;quot;0.05 0.05 0.05&amp;quot; and &amp;quot;0.1 0.1 0.1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that setting the dynamic factor to high can result in the player being busted by lights that are turned on in the room even when the player is in the shadow.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic_cap&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Used to cap the dynamic ambient light part. If set to 0, will be ignored, so to have a very very small&lt;br /&gt;
cap, set to &amp;quot;0.01&amp;quot;, e.g. if you want only the red part to be dynamic, set it f.i. &amp;quot;0.15 0.01 0.01&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_falloff&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
&lt;br /&gt;
* -1 on info_location: use the value from the atdm:location_settings entity&lt;br /&gt;
* 0 - no dynamic falloff&lt;br /&gt;
* 0.5 - small, based on square root of distance&lt;br /&gt;
* 1 - medium, linear dynamic falloff (should be used as it looks best)&lt;br /&gt;
* 2 - high, square of distance based falloff&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dist_scale&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
A factor to scale the distance before applying a dynamic light falloff. Only used then &#039;&#039;&#039;ambient_light_dynamic_falloff&#039;&#039;&#039; is not 0. Good valuesa are around 1.0.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
=== Script calls ===&lt;br /&gt;
&lt;br /&gt;
The next four spawnargs all specify scripts to call when the player enters or exits a zone. Note that the very first zone is also &amp;quot;entered&amp;quot; by the player when the map starts. That means &amp;quot;call_once_on_entry&amp;quot; for the start zone should be called at start-time.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is left by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is entered by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player leaves that zone.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player enters that zone.&lt;br /&gt;
&lt;br /&gt;
==== Example scripts ====&lt;br /&gt;
&lt;br /&gt;
Here is an example script that spawns an object where the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity is for the zone the player just left. You can call this script by setting:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;call_once_on_exit&amp;quot; &amp;quot;spawn_pear&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
on your info_location entity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void spawn_pear( entity old_zone )&lt;br /&gt;
  {&lt;br /&gt;
  // Get the name of the location that the player just left:&lt;br /&gt;
  string location_name = old_zone.getName();&lt;br /&gt;
  // and display it on the console for debugging&lt;br /&gt;
  sys.print (&amp;quot;Spawning pear after leaving &amp;quot; + location_name + &amp;quot;\n&amp;quot;);&lt;br /&gt;
  // spawn the pear entity&lt;br /&gt;
  entity pear = sys.spawn(&amp;quot;atdm:moveable_food_pear&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // and now get the position of the old location entity:&lt;br /&gt;
  vector origin = old_zone.getOrigin();&lt;br /&gt;
  // finally move the pear to the point of the info_location&lt;br /&gt;
  pear.setOrigin( origin );&lt;br /&gt;
  // so once the player exits this location, ONE pear will spawn and fall down&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example script to turn entities on/off when player enters a location ====&lt;br /&gt;
The basic problem with normal TDM entity work is the difficulty of turning something deliberately and reliably on or off. You never turn something on or off, but instead you send toggles to the entities. Let&#039;s say you have a omni sound (a sound which is heard everywhere) which you need to shut off when the player goes to a certain location. Trigger_multiples trigger targets when the player stands on their volume, which may result in a completely wrong situation depending how long the player stands on the trigger.&lt;br /&gt;
&lt;br /&gt;
Location entity scripting can be of great help here. This kind of scripting can generally solve any kind of problem where the mapper wants something to be switched specifically on and off when the player moves to a specific location. Here is an example, which was used to switch off a global thunder sound when the player moves to a location where the rumbling cannot be heard.&lt;br /&gt;
&lt;br /&gt;
Set up location setting as described above. Put a location separator on the visportal you want to be the point which switches your target on/off. Give the info_location-entity spawnargs &lt;br /&gt;
*call_on_entry yourscript&lt;br /&gt;
*call_on_exit yourscript&lt;br /&gt;
&lt;br /&gt;
Then go and create in your /maps folder a file yourmapname.script. Put in the following data there:&lt;br /&gt;
&lt;br /&gt;
 void yourscript(entity old_zone)&lt;br /&gt;
 {&lt;br /&gt;
 sys.println(&amp;quot;script yourscript running..&amp;quot;);&lt;br /&gt;
 sys.trigger( $entity_name );&lt;br /&gt;
 }&lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*yourscript is the name of your script you call.&lt;br /&gt;
*sys.println is a debug feature which gives the text in console when the script is triggered. You can leave it for testing and remove it before releasing your map.&lt;br /&gt;
*sys.trigger ($entity_name) replace the entity_name with the entity which you want to be triggered.&lt;br /&gt;
&lt;br /&gt;
Now your system works like this: &lt;br /&gt;
*When the player is outside the location everything is normal. Ie sound off, light off, etc.&lt;br /&gt;
*When the player enters the location, entity_name gets triggered once. Ie sound on, light on, etc.&lt;br /&gt;
*When the player leaves the location, entity_name gets triggered again. Ie sound off, light off, etc.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Adding ambient Sounds to your Map]]&lt;br /&gt;
* [[Dynamic ambient light]].&lt;br /&gt;
* [[Ambient Sounds - Zone (using triggers)]]&lt;br /&gt;
* [[Sound File Formats]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-sound}}&lt;br /&gt;
{{editing}}&lt;br /&gt;
{{tutorial-scripting}}&lt;br /&gt;
[[Category:Ambient Light]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Clocks_With_Chimes&amp;diff=20694</id>
		<title>Clocks With Chimes</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Clocks_With_Chimes&amp;diff=20694"/>
		<updated>2018-10-16T19:17:36Z</updated>

		<summary type="html">&lt;p&gt;Grayman: Created page with &amp;quot;&amp;#039;&amp;#039;Written by grayman, who started with a set of instructions for a non-chiming clock, written by Fidcal.&amp;#039;&amp;#039;    == Introduction ==  &amp;#039;&amp;#039;&amp;#039;SUMMARY: A TDM 2.07+ script and clock setu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Written by grayman, who started with a set of instructions for a non-chiming clock, written by Fidcal.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SUMMARY: A TDM 2.07+ script and clock setup that lets the clock chime on the quarter-hour and hour.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This assumes that the clock&#039;s hand movement is managed by the materials for the big and little hands.&lt;br /&gt;
&lt;br /&gt;
==The Clock==&lt;br /&gt;
A prefab grandfather clock with chime support is provided in prefabs/furniture/misc/grandfather_clock.pfb.&lt;br /&gt;
Place one in your map and look how it&#039;s set up.&lt;br /&gt;
By default, this clock is set to 2:00, which is where the hands will point at mission start. If you want to change the starting time, set these spawnargs:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;shaderparm7 H&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;shaderparm8 M&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
H = The hour&lt;br /&gt;
&lt;br /&gt;
M = The minute&lt;br /&gt;
&lt;br /&gt;
If you set M to anything but 0, you&#039;ll need to set H accordingly. For example, here are settings for starting at 2:15 ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;shaderparm7 2.25&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;shaderparm8 15&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The Clock Scripts==&lt;br /&gt;
&lt;br /&gt;
This is the script that keeps time and rotates the clock hands. See next section for how to set it up...&lt;br /&gt;
&lt;br /&gt;
  // ------------------------------- HOUSE TIME - CLOCK CHIMES --------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  #define START_HR	       2&lt;br /&gt;
  #define START_MIN	       0&lt;br /&gt;
  #define TIME_INTERVAL        15&lt;br /&gt;
  #define CHIME_PAUSE         1.9&lt;br /&gt;
  &lt;br /&gt;
  // Each clock targets speakers that handle the chimes.&lt;br /&gt;
  //&lt;br /&gt;
  // target0 is one of the speakers that handles the hour chime.&lt;br /&gt;
  // target1 is one of the speakers that handles the hour chime.&lt;br /&gt;
  // target2 is one of the speakers that handles the hour chime.&lt;br /&gt;
  // target3 is the speaker that handles the 15-min chime.&lt;br /&gt;
  // target4 is the speaker that handles the 30-min chime.&lt;br /&gt;
  // target5 is the speaker that handles the 45-min chime.&lt;br /&gt;
  // target6 is the speaker that handles the 60-min chime.&lt;br /&gt;
  &lt;br /&gt;
  void ChimeMinutes( entity clock, float minutes )&lt;br /&gt;
  {&lt;br /&gt;
  	entity speaker;&lt;br /&gt;
  	if ( minutes == TIME_INTERVAL )&lt;br /&gt;
  	{&lt;br /&gt;
  		speaker = clock.getTarget(3);&lt;br /&gt;
  	}&lt;br /&gt;
  	else if ( minutes == 2*TIME_INTERVAL )&lt;br /&gt;
  	{&lt;br /&gt;
  		speaker = clock.getTarget(4);&lt;br /&gt;
  	}&lt;br /&gt;
  	else // 3*TIME_INTERVAL&lt;br /&gt;
  	{&lt;br /&gt;
  		speaker = clock.getTarget(5);&lt;br /&gt;
  	}&lt;br /&gt;
  	speaker.activate($player1);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // Each clock targets three speakers that handle the individual&lt;br /&gt;
  // hour chimes. Having three rather than one allows us to&lt;br /&gt;
  // overlap the chimes. Three is the minimum number needed to&lt;br /&gt;
  // achieve a nice sequence of overlapped chimes.&lt;br /&gt;
  //&lt;br /&gt;
  // target6 is the speaker that handles the pre-chime sound.&lt;br /&gt;
  // target{0,1,2} are the speakers that handle the hour chimes.&lt;br /&gt;
  &lt;br /&gt;
  void ChimeHour( entity clock, float hour)&lt;br /&gt;
  {&lt;br /&gt;
  	clock.getTarget(6).activate($player1);&lt;br /&gt;
  	sys.wait(14.5); // let this chime nearly complete. there&#039;s a little blend in the last second or so.&lt;br /&gt;
  &lt;br /&gt;
  	entity speaker1 = clock.getTarget(0);&lt;br /&gt;
  &lt;br /&gt;
  	speaker1.activate($player1);&lt;br /&gt;
  	if ( hour &amp;gt; 1 )&lt;br /&gt;
  	{&lt;br /&gt;
  		sys.wait(CHIME_PAUSE);&lt;br /&gt;
  		entity speaker2 = clock.getTarget(1);&lt;br /&gt;
  		speaker2.activate($player1);&lt;br /&gt;
  		if ( hour &amp;gt; 2 )&lt;br /&gt;
  		{&lt;br /&gt;
  			sys.wait(CHIME_PAUSE);&lt;br /&gt;
  			entity speaker3 = clock.getTarget(2);&lt;br /&gt;
  			speaker3.activate($player1);&lt;br /&gt;
  			if ( hour &amp;gt; 3 )&lt;br /&gt;
  			{&lt;br /&gt;
  				sys.wait(CHIME_PAUSE);&lt;br /&gt;
  				speaker1.activate($player1);&lt;br /&gt;
  				if ( hour &amp;gt; 4 )&lt;br /&gt;
  				{&lt;br /&gt;
  					sys.wait(CHIME_PAUSE);&lt;br /&gt;
  					speaker2.activate($player1);&lt;br /&gt;
  					if ( hour &amp;gt; 5 )&lt;br /&gt;
  					{&lt;br /&gt;
  						sys.wait(CHIME_PAUSE);&lt;br /&gt;
  						speaker3.activate($player1);&lt;br /&gt;
  						if ( hour &amp;gt; 6 )&lt;br /&gt;
  						{&lt;br /&gt;
  							sys.wait(CHIME_PAUSE);&lt;br /&gt;
  							speaker1.activate($player1);&lt;br /&gt;
  							if ( hour &amp;gt; 7 )&lt;br /&gt;
  							{&lt;br /&gt;
  								sys.wait(CHIME_PAUSE);&lt;br /&gt;
  								speaker2.activate($player1);&lt;br /&gt;
  								if ( hour &amp;gt; 8 )&lt;br /&gt;
  								{&lt;br /&gt;
  									sys.wait(CHIME_PAUSE);&lt;br /&gt;
  									speaker3.activate($player1);&lt;br /&gt;
  									if ( hour &amp;gt; 9 )&lt;br /&gt;
  									{&lt;br /&gt;
  										sys.wait(CHIME_PAUSE);&lt;br /&gt;
  										speaker1.activate($player1);&lt;br /&gt;
  										if ( hour &amp;gt; 10 )&lt;br /&gt;
  										{&lt;br /&gt;
  											sys.wait(CHIME_PAUSE);&lt;br /&gt;
  											speaker2.activate($player1);&lt;br /&gt;
  											if ( hour &amp;gt; 11 )&lt;br /&gt;
  											{&lt;br /&gt;
  												sys.wait(CHIME_PAUSE);&lt;br /&gt;
  												speaker3.activate($player1);&lt;br /&gt;
  											}&lt;br /&gt;
  										}&lt;br /&gt;
  									}&lt;br /&gt;
  								}&lt;br /&gt;
  							}&lt;br /&gt;
  						}&lt;br /&gt;
  					}&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
  		}&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // HouseTime()&lt;br /&gt;
  //&lt;br /&gt;
  // - chimes the clocks every TIME_INTERVAL minutes&lt;br /&gt;
  // - chimes the clocks at the top of each hour, one chime for each hour&lt;br /&gt;
  &lt;br /&gt;
  void HouseTime()&lt;br /&gt;
  {&lt;br /&gt;
  	float timeHr  = START_HR;&lt;br /&gt;
  	float timeMin = START_MIN;&lt;br /&gt;
  &lt;br /&gt;
  	while ( 1 )&lt;br /&gt;
  	{&lt;br /&gt;
  		if ( timeMin != 4*TIME_INTERVAL )&lt;br /&gt;
  		{&lt;br /&gt;
  			// play minutes chime at each clock&lt;br /&gt;
  &lt;br /&gt;
  			thread ChimeMinutes( $Clock1, timeMin );&lt;br /&gt;
  			//thread ChimeMinutes( $Clock2, timeMin );&lt;br /&gt;
  		}&lt;br /&gt;
  		else&lt;br /&gt;
  		{&lt;br /&gt;
  			timeMin = 0; // top of the hour&lt;br /&gt;
  			timeHr = timeHr + 1;&lt;br /&gt;
  			if ( timeHr == 13 )&lt;br /&gt;
  			{&lt;br /&gt;
  				timeHr = 1;&lt;br /&gt;
  			}&lt;br /&gt;
  &lt;br /&gt;
  			// play hour chime at each clock&lt;br /&gt;
  &lt;br /&gt;
  			thread ChimeHour( $Clock1, timeHr );&lt;br /&gt;
  			//thread ChimeHour( $Clock2, timeHr );&lt;br /&gt;
  		}&lt;br /&gt;
  &lt;br /&gt;
  		sys.wait(TIME_INTERVAL*60); // sleep for TIME_INTERVAL minutes&lt;br /&gt;
  		timeMin = timeMin + TIME_INTERVAL;&lt;br /&gt;
  	}&lt;br /&gt;
  }  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Set Up the Scripts &amp;amp; Clock ==&lt;br /&gt;
&lt;br /&gt;
The clock scripts are listed in the previous section. This is how you set them up...&lt;br /&gt;
&lt;br /&gt;
* Copy the &#039;&#039;ChimeMinutes(), ChimeHour()&#039;&#039; and &#039;&#039;HouseTime()&#039;&#039; scripts from above.&lt;br /&gt;
* If you already have a script file for your map then paste these scripts into it (above the &#039;&#039;main()&#039;&#039; routine), or....&lt;br /&gt;
* If you haven&#039;t already got a script file then paste the clock scripts into your plain text editor and save them in the same folder as your map with the same name but suffix .script. Example :&amp;lt;br&amp;gt;mymapname.map&amp;lt;br&amp;gt;mymapname.script. Add a &#039;&#039;main()&#039;&#039; routine.&lt;br /&gt;
* Edit the lines START_HR and START_MIN for the time you want the clock to show at the start.&lt;br /&gt;
* Resave the file.&lt;br /&gt;
* Import one of the clock prefabs.&lt;br /&gt;
* Make sure the clock entity is named &amp;quot;Clock1&amp;quot;.&lt;br /&gt;
* Position and turn the entire clock prefab to face the way you want it in-game.&lt;br /&gt;
* The clock is now ready to keep and show time in your Dark Mod mission.&lt;br /&gt;
* If you want another clock, import another prefab clock and place it where you want. DR should name it &amp;quot;Clock2&amp;quot;. Look for the lines in the scripts that reference &amp;quot;Clock2&amp;quot; and uncomment them (Delete the &#039;&#039;//&#039;&#039; at the start of the line). If you add a third clock, add lines for &amp;quot;Clock3&amp;quot; beneath the lines that reference &amp;quot;Clock2&amp;quot;. Further clocks can be added the same way.&lt;br /&gt;
&lt;br /&gt;
== Starting the Clock at Mission Start ==&lt;br /&gt;
&lt;br /&gt;
* To start the clock running at the &#039;&#039;start&#039;&#039; of the mission you must also have in your script file this &#039;&#039;main()&#039;&#039; routine (add it if not there) and insert a line between its curly brackets as shown. The &#039;&#039;main()&#039;&#039; routine must be placed BELOW the &#039;&#039;HouseTime()&#039;&#039; script routine:&lt;br /&gt;
&lt;br /&gt;
  void main ()&lt;br /&gt;
  {&lt;br /&gt;
  	thread HouseTime();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;main()&#039;&#039; routine will run automatically at mission start and the clock will begin working.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Clock-Triggered_Game_Events&amp;diff=20693</id>
		<title>Clock-Triggered Game Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Clock-Triggered_Game_Events&amp;diff=20693"/>
		<updated>2018-10-16T14:17:13Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Starting the Clock at Mission Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SUMMARY: A script that keeps time and rotates clock hands, and optionally can trigger any entities at any selected time plus a script that strikes the hour.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you just want a simple working clock that tells time and nothing else then see [[Prefab Comments]] and select one of the clocks that does not need a script. There is also a grandfather clock under models\furniture.&lt;br /&gt;
&lt;br /&gt;
This script provides both an optional working clock  method and an easy means for mappers to trigger events in-game at selected times. By default it triggers a sound that strikes the hours but it can also be used to trigger any entity at any chosen time. For example it can fail a time objective &amp;quot;Escape from the prison before 2:30am.&amp;quot; at exactly that time. Another example is used in Edridge Hall where a guard goes off duty at 2:00am and the new guard does not take up position for a minute or so - thus making it easier for the player to get over the wall.&lt;br /&gt;
&lt;br /&gt;
The script is set up to operate two func_mover clock hands on a clock face and these are provided in prefabs (see [[Prefab Comments]]. &#039;&#039;&#039;It is important to make sure the entity names remain the same as in the script or alternatively, change them in the script.&#039;&#039;&#039; A visible clock is theoretically not needed however - though it is hard to see how the player would make sense of a time clue or objective without reference to one.&lt;br /&gt;
&lt;br /&gt;
==The clock script==&lt;br /&gt;
&lt;br /&gt;
This is the script that keeps time and rotates the clock hands. See next section for how to set it up...&lt;br /&gt;
&lt;br /&gt;
  void runClock(entity bigHand, entity smallHand)&lt;br /&gt;
  {&lt;br /&gt;
  	float hours = 11;&lt;br /&gt;
  	float mins = 59;&lt;br /&gt;
  	float secs = 58;&lt;br /&gt;
  	float strike = 0;&lt;br /&gt;
  &lt;br /&gt;
  	while (1)&lt;br /&gt;
  	{&lt;br /&gt;
  		bigHand.rotateOnce(&#039;0 0 0.1017&#039;);  //1 min in 59 secs as no move when hour incremented&lt;br /&gt;
  		sys.waitFor(bigHand);&lt;br /&gt;
  		secs = secs + 1;&lt;br /&gt;
  &lt;br /&gt;
  		//clone any number of these.....&lt;br /&gt;
  		if (mins == 99 &amp;amp;&amp;amp; hours == 99) // set hours &amp;amp; mins to trigger any entity&lt;br /&gt;
  		{&lt;br /&gt;
  			$yourEntity.activate($player1);  //replace &#039;yourEntity&#039; with any entity to be triggered&lt;br /&gt;
  		}&lt;br /&gt;
  &lt;br /&gt;
  		if (secs == 59)&lt;br /&gt;
  		{&lt;br /&gt;
  			smallHand.rotateOnce(&#039;0 0 0.5&#039;);&lt;br /&gt;
  			sys.waitFor(smallHand);&lt;br /&gt;
  			secs = 0;&lt;br /&gt;
  			mins = mins + 1;&lt;br /&gt;
  &lt;br /&gt;
  			if (mins == 60)&lt;br /&gt;
  			{&lt;br /&gt;
  				mins = 0;&lt;br /&gt;
  				hours = hours + 1;&lt;br /&gt;
  				sys.setcvar(&amp;quot;game_clock_hours&amp;quot;,hours);&lt;br /&gt;
  				$ClockStrike.activate($player1);&lt;br /&gt;
 &lt;br /&gt;
  				if (hours == 12)&lt;br /&gt;
  				{&lt;br /&gt;
  					hours = 0;&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
  		}&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Set Up the Script &amp;amp; Clock ==&lt;br /&gt;
&lt;br /&gt;
The clock script is listed in the previous section. This is how you set it up...&lt;br /&gt;
&lt;br /&gt;
* Copy the runClock script from above.&lt;br /&gt;
* If you already have a script file for your map then paste the runClock script into it or....&lt;br /&gt;
* If you haven&#039;t already got a script file then paste it into your plain text editor and save it in the same folder as your map with the same name but suffix .script. Example :&amp;lt;br&amp;gt;mymapname.map&amp;lt;br&amp;gt;mymapname.script&lt;br /&gt;
* Edit the lines float hours, float mins, float secs values to the time you want the clock to show at the start.&lt;br /&gt;
* Resave the file.&lt;br /&gt;
&lt;br /&gt;
* Import one of the clock prefabs (see [[Prefab Comments]] or make your own.&lt;br /&gt;
* Firstly, position and turn the entire clock prefab to face the way you want it in-game. (Dark Radiant&#039;s &#039;rotate models independently&#039; button should be UNset.&lt;br /&gt;
* Rotate the clock hands around the clockface to the same time as you set in the script above.&lt;br /&gt;
* The clock is now ready to keep and show time in your Dark Mod mission (without special events or striking the hours yet.)&lt;br /&gt;
&lt;br /&gt;
== Starting the Clock at Mission Start ==&lt;br /&gt;
&lt;br /&gt;
* To start the clock running at the &#039;&#039;start&#039;&#039; of the mission you must also have in your script file this &#039;&#039;main&#039;&#039; function (add it if not there already) and insert on a line between its curly brackets as shown and it must be placed BELOW the main runClock script function:&lt;br /&gt;
&lt;br /&gt;
 void main ()&lt;br /&gt;
  {&lt;br /&gt;
 	runClock($clock_hand_big, $clock_hand_small);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
* Check that the name of the clock hands entities in your map matches the names in the above script as they may change on importing into the editor. They should by default be clock_hand_big and clock_hand_small. If for some reason you change the entity names then you must also change the entries in the script above to match.&lt;br /&gt;
* The &#039;&#039;main&#039;&#039; function will run automatically at mission start and the clock will begin working.&lt;br /&gt;
* If you have any other function calls in &#039;main&#039; you should consider  and test placement; I put one below the clock line and it failed to work yet above the clock line both worked synchronistically. Another option is to start the clock or any other function during the mission (even if immediately) see next section.&lt;br /&gt;
&lt;br /&gt;
NOTE: (by grayman) The reason for the failure is that, as described, the runClock() routine will run endlessly, never returning to the main() routine so it can run further things.&lt;br /&gt;
&lt;br /&gt;
The correct way to do this is to change the following line in the main() routine:&lt;br /&gt;
&lt;br /&gt;
 	thread runClock($clock_hand_big, $clock_hand_small);&lt;br /&gt;
&lt;br /&gt;
Now runClock will execute in its own thread, and control will return to the main() routine for it to do further work.&lt;br /&gt;
&lt;br /&gt;
== Starting the Clock during the Mission ==&lt;br /&gt;
&lt;br /&gt;
You may want to start the clock within the mission. You might, for example, want the clock and a particular time of day to to be visible only when the player reaches a certain place in the mission. Or, you might have conflict with some other script and want to call them separately and not from the &#039;main&#039; function. To do this:&lt;br /&gt;
&lt;br /&gt;
* Proceed exactly as in &#039;&#039;Starting the Clock at Mission Start&#039;&#039; but put the line  	runClock($clock_hand_big, $clock_hand_small); into a function called &#039;&#039;startClock&#039;&#039; instead of &#039;&#039;main&#039;&#039; so it looks thus...&lt;br /&gt;
 void startClock ()&lt;br /&gt;
  {&lt;br /&gt;
 	runClock($clock_hand_big, $clock_hand_small);&lt;br /&gt;
  }&lt;br /&gt;
* Create a &#039;&#039;target_tdm_callscriptfunction&#039;&#039; entity in your mission. It can be anywhere except the void but it makes sense to keep it near the clock.&lt;br /&gt;
* Give it the key value pair: call startClock&lt;br /&gt;
* Set up some trigger of your own, eg, a trigger_once entity and target the above entity where and when you want the clock to start, for example, if the player goes out a door into a courtyard and sees the clock for the first time then you could get the door to trigger the clock to start.&lt;br /&gt;
&lt;br /&gt;
==Triggering Events on Time==&lt;br /&gt;
&lt;br /&gt;
You can trigger any entity at any selected time. Advanced users can also call scripted events of course but it is recommended that you do this indirectly using the method described in &#039;&#039;Striking the Hours&#039;&#039; below otherwise it may slow down the clock.&lt;br /&gt;
&lt;br /&gt;
===Striking the Hours===&lt;br /&gt;
&lt;br /&gt;
This uses a &#039;&#039;target_tdm_callscriptfunction&#039;&#039; entity by default named ClockStrike and this is provided with the scripted clocks prefabs. Its name must be the same as in the runClock script. This calls a script (see below.) This entity I have also given the key value pair snd_effect churchbell02. Use a different sound shader if you want but bear in mind that radius and volume are controlled in the shader file. Using a speaker did not work here because of problems with starting and stopping it rapidly and reliably. The method I use is stable and permits the &#039;bell&#039; to be struck again while it is still ringing yet the final strike fades naturally. The runClock script passes the hours to strike using a  cvar called &#039;&#039;game_clock_hours&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You should copy and paste the script from below into your script file anywhere between other functions though it is normal to put &#039;main&#039; at the bottom. All that matters is that if function A calls function B then function B must be ABOVE A. This is why runClock must be above &#039;main&#039;.&lt;br /&gt;
&lt;br /&gt;
  void clockChime()&lt;br /&gt;
  {&lt;br /&gt;
  	float hours = sys.strToFloat(sys.getcvar(&amp;quot;game_clock_hours&amp;quot;));&lt;br /&gt;
  	float strike = 1;&lt;br /&gt;
  &lt;br /&gt;
  	while(strike &amp;lt;= hours)&lt;br /&gt;
  	{&lt;br /&gt;
  		$ClockStrike.startSound(&amp;quot;snd_effect&amp;quot;, SND_CHANNEL_BODY, false);&lt;br /&gt;
  		sys.wait(3);&lt;br /&gt;
  		strike = strike + 1;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Triggering Entities on Time===&lt;br /&gt;
&lt;br /&gt;
To trigger an entity refer to these lines in the runClock script...&lt;br /&gt;
&lt;br /&gt;
 if (mins == 99 &amp;amp;&amp;amp; hours == 99)&lt;br /&gt;
 {&lt;br /&gt;
 	$yourEntity.activate($player1);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Change the mins and hours values to the time you want the trigger.&lt;br /&gt;
* Change &#039;&#039;yourEntity&#039;&#039; to the name of the entity you want to trigger (keep the $ prefix so eg, $myEnt)&lt;br /&gt;
* The whole script function can be copied and pasted below itself to have any number of timed triggers. It is possible with a lot that this might slow the clock slightly.&lt;br /&gt;
&lt;br /&gt;
===Timed Objectives and Mission Fail &#039;Out of Time&#039;===&lt;br /&gt;
&lt;br /&gt;
If you want to set up a timed objective, eg, &amp;quot;Escape the dungeon before your execution at 3:00am&amp;quot; or &amp;quot;Survive within the crypt until 3:00am&amp;quot; then:&lt;br /&gt;
&lt;br /&gt;
* Set up the objective as a custom objective (see [[Objectives Editor]].) &lt;br /&gt;
* Create a target_tdm_setobjectivestate.&lt;br /&gt;
* Give it a name, eg, TimeObjective&lt;br /&gt;
* Give it the property value pair: obj_idN &amp;lt;n&amp;gt;  (replace &amp;lt;n&amp;gt; with the objective number)&lt;br /&gt;
* Give it the property value pair: obj_state &amp;lt;n&amp;gt; (replace &amp;lt;n&amp;gt; with 1 to complete or 3 to fail)&lt;br /&gt;
* Create an &#039;&#039;if&#039;&#039; conditional script as described above in &#039;&#039;Triggering Entities on Time&#039;&#039; with the following line included...&lt;br /&gt;
 	$TimeObjective.activate($player1);&lt;br /&gt;
* Change the mins and hours values to the time you want the mission to end.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Clock-Triggered_Game_Events&amp;diff=20692</id>
		<title>Clock-Triggered Game Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Clock-Triggered_Game_Events&amp;diff=20692"/>
		<updated>2018-10-16T14:15:29Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Starting the Clock at Mission Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SUMMARY: A script that keeps time and rotates clock hands, and optionally can trigger any entities at any selected time plus a script that strikes the hour.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you just want a simple working clock that tells time and nothing else then see [[Prefab Comments]] and select one of the clocks that does not need a script. There is also a grandfather clock under models\furniture.&lt;br /&gt;
&lt;br /&gt;
This script provides both an optional working clock  method and an easy means for mappers to trigger events in-game at selected times. By default it triggers a sound that strikes the hours but it can also be used to trigger any entity at any chosen time. For example it can fail a time objective &amp;quot;Escape from the prison before 2:30am.&amp;quot; at exactly that time. Another example is used in Edridge Hall where a guard goes off duty at 2:00am and the new guard does not take up position for a minute or so - thus making it easier for the player to get over the wall.&lt;br /&gt;
&lt;br /&gt;
The script is set up to operate two func_mover clock hands on a clock face and these are provided in prefabs (see [[Prefab Comments]]. &#039;&#039;&#039;It is important to make sure the entity names remain the same as in the script or alternatively, change them in the script.&#039;&#039;&#039; A visible clock is theoretically not needed however - though it is hard to see how the player would make sense of a time clue or objective without reference to one.&lt;br /&gt;
&lt;br /&gt;
==The clock script==&lt;br /&gt;
&lt;br /&gt;
This is the script that keeps time and rotates the clock hands. See next section for how to set it up...&lt;br /&gt;
&lt;br /&gt;
  void runClock(entity bigHand, entity smallHand)&lt;br /&gt;
  {&lt;br /&gt;
  	float hours = 11;&lt;br /&gt;
  	float mins = 59;&lt;br /&gt;
  	float secs = 58;&lt;br /&gt;
  	float strike = 0;&lt;br /&gt;
  &lt;br /&gt;
  	while (1)&lt;br /&gt;
  	{&lt;br /&gt;
  		bigHand.rotateOnce(&#039;0 0 0.1017&#039;);  //1 min in 59 secs as no move when hour incremented&lt;br /&gt;
  		sys.waitFor(bigHand);&lt;br /&gt;
  		secs = secs + 1;&lt;br /&gt;
  &lt;br /&gt;
  		//clone any number of these.....&lt;br /&gt;
  		if (mins == 99 &amp;amp;&amp;amp; hours == 99) // set hours &amp;amp; mins to trigger any entity&lt;br /&gt;
  		{&lt;br /&gt;
  			$yourEntity.activate($player1);  //replace &#039;yourEntity&#039; with any entity to be triggered&lt;br /&gt;
  		}&lt;br /&gt;
  &lt;br /&gt;
  		if (secs == 59)&lt;br /&gt;
  		{&lt;br /&gt;
  			smallHand.rotateOnce(&#039;0 0 0.5&#039;);&lt;br /&gt;
  			sys.waitFor(smallHand);&lt;br /&gt;
  			secs = 0;&lt;br /&gt;
  			mins = mins + 1;&lt;br /&gt;
  &lt;br /&gt;
  			if (mins == 60)&lt;br /&gt;
  			{&lt;br /&gt;
  				mins = 0;&lt;br /&gt;
  				hours = hours + 1;&lt;br /&gt;
  				sys.setcvar(&amp;quot;game_clock_hours&amp;quot;,hours);&lt;br /&gt;
  				$ClockStrike.activate($player1);&lt;br /&gt;
 &lt;br /&gt;
  				if (hours == 12)&lt;br /&gt;
  				{&lt;br /&gt;
  					hours = 0;&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
  		}&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Set Up the Script &amp;amp; Clock ==&lt;br /&gt;
&lt;br /&gt;
The clock script is listed in the previous section. This is how you set it up...&lt;br /&gt;
&lt;br /&gt;
* Copy the runClock script from above.&lt;br /&gt;
* If you already have a script file for your map then paste the runClock script into it or....&lt;br /&gt;
* If you haven&#039;t already got a script file then paste it into your plain text editor and save it in the same folder as your map with the same name but suffix .script. Example :&amp;lt;br&amp;gt;mymapname.map&amp;lt;br&amp;gt;mymapname.script&lt;br /&gt;
* Edit the lines float hours, float mins, float secs values to the time you want the clock to show at the start.&lt;br /&gt;
* Resave the file.&lt;br /&gt;
&lt;br /&gt;
* Import one of the clock prefabs (see [[Prefab Comments]] or make your own.&lt;br /&gt;
* Firstly, position and turn the entire clock prefab to face the way you want it in-game. (Dark Radiant&#039;s &#039;rotate models independently&#039; button should be UNset.&lt;br /&gt;
* Rotate the clock hands around the clockface to the same time as you set in the script above.&lt;br /&gt;
* The clock is now ready to keep and show time in your Dark Mod mission (without special events or striking the hours yet.)&lt;br /&gt;
&lt;br /&gt;
== Starting the Clock at Mission Start ==&lt;br /&gt;
&lt;br /&gt;
* To start the clock running at the &#039;&#039;start&#039;&#039; of the mission you must also have in your script file this &#039;&#039;main&#039;&#039; function (add it if not there already) and insert on a line between its curly brackets as shown and it must be placed BELOW the main runClock script function:&lt;br /&gt;
&lt;br /&gt;
 void main ()&lt;br /&gt;
  {&lt;br /&gt;
 	runClock($clock_hand_big, $clock_hand_small);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
* Check that the name of the clock hands entities in your map matches the names in the above script as they may change on importing into the editor. They should by default be clock_hand_big and clock_hand_small. If for some reason you change the entity names then you must also change the entries in the script above to match.&lt;br /&gt;
* The &#039;&#039;main&#039;&#039; function will run automatically at mission start and the clock will begin working.&lt;br /&gt;
* If you have any other function calls in &#039;main&#039; you should consider  and test placement; I put one below the clock line and it failed to work yet above the clock line both worked synchronistically. Another option is to start the clock or any other function during the mission (even if immediately) see next section.&lt;br /&gt;
&lt;br /&gt;
NOTE: The reason for the failure is that, as described, the runClock() routine will run endlessly, never returning to the main() routine so it can run further things.&lt;br /&gt;
&lt;br /&gt;
The correct way to do this is to change the following line in the main() routine:&lt;br /&gt;
&lt;br /&gt;
 	thread runClock($clock_hand_big, $clock_hand_small);&lt;br /&gt;
&lt;br /&gt;
Now runClock will execute in its own thread, and control will return to the main() routine for it to do further work.&lt;br /&gt;
&lt;br /&gt;
== Starting the Clock during the Mission ==&lt;br /&gt;
&lt;br /&gt;
You may want to start the clock within the mission. You might, for example, want the clock and a particular time of day to to be visible only when the player reaches a certain place in the mission. Or, you might have conflict with some other script and want to call them separately and not from the &#039;main&#039; function. To do this:&lt;br /&gt;
&lt;br /&gt;
* Proceed exactly as in &#039;&#039;Starting the Clock at Mission Start&#039;&#039; but put the line  	runClock($clock_hand_big, $clock_hand_small); into a function called &#039;&#039;startClock&#039;&#039; instead of &#039;&#039;main&#039;&#039; so it looks thus...&lt;br /&gt;
 void startClock ()&lt;br /&gt;
  {&lt;br /&gt;
 	runClock($clock_hand_big, $clock_hand_small);&lt;br /&gt;
  }&lt;br /&gt;
* Create a &#039;&#039;target_tdm_callscriptfunction&#039;&#039; entity in your mission. It can be anywhere except the void but it makes sense to keep it near the clock.&lt;br /&gt;
* Give it the key value pair: call startClock&lt;br /&gt;
* Set up some trigger of your own, eg, a trigger_once entity and target the above entity where and when you want the clock to start, for example, if the player goes out a door into a courtyard and sees the clock for the first time then you could get the door to trigger the clock to start.&lt;br /&gt;
&lt;br /&gt;
==Triggering Events on Time==&lt;br /&gt;
&lt;br /&gt;
You can trigger any entity at any selected time. Advanced users can also call scripted events of course but it is recommended that you do this indirectly using the method described in &#039;&#039;Striking the Hours&#039;&#039; below otherwise it may slow down the clock.&lt;br /&gt;
&lt;br /&gt;
===Striking the Hours===&lt;br /&gt;
&lt;br /&gt;
This uses a &#039;&#039;target_tdm_callscriptfunction&#039;&#039; entity by default named ClockStrike and this is provided with the scripted clocks prefabs. Its name must be the same as in the runClock script. This calls a script (see below.) This entity I have also given the key value pair snd_effect churchbell02. Use a different sound shader if you want but bear in mind that radius and volume are controlled in the shader file. Using a speaker did not work here because of problems with starting and stopping it rapidly and reliably. The method I use is stable and permits the &#039;bell&#039; to be struck again while it is still ringing yet the final strike fades naturally. The runClock script passes the hours to strike using a  cvar called &#039;&#039;game_clock_hours&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You should copy and paste the script from below into your script file anywhere between other functions though it is normal to put &#039;main&#039; at the bottom. All that matters is that if function A calls function B then function B must be ABOVE A. This is why runClock must be above &#039;main&#039;.&lt;br /&gt;
&lt;br /&gt;
  void clockChime()&lt;br /&gt;
  {&lt;br /&gt;
  	float hours = sys.strToFloat(sys.getcvar(&amp;quot;game_clock_hours&amp;quot;));&lt;br /&gt;
  	float strike = 1;&lt;br /&gt;
  &lt;br /&gt;
  	while(strike &amp;lt;= hours)&lt;br /&gt;
  	{&lt;br /&gt;
  		$ClockStrike.startSound(&amp;quot;snd_effect&amp;quot;, SND_CHANNEL_BODY, false);&lt;br /&gt;
  		sys.wait(3);&lt;br /&gt;
  		strike = strike + 1;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Triggering Entities on Time===&lt;br /&gt;
&lt;br /&gt;
To trigger an entity refer to these lines in the runClock script...&lt;br /&gt;
&lt;br /&gt;
 if (mins == 99 &amp;amp;&amp;amp; hours == 99)&lt;br /&gt;
 {&lt;br /&gt;
 	$yourEntity.activate($player1);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Change the mins and hours values to the time you want the trigger.&lt;br /&gt;
* Change &#039;&#039;yourEntity&#039;&#039; to the name of the entity you want to trigger (keep the $ prefix so eg, $myEnt)&lt;br /&gt;
* The whole script function can be copied and pasted below itself to have any number of timed triggers. It is possible with a lot that this might slow the clock slightly.&lt;br /&gt;
&lt;br /&gt;
===Timed Objectives and Mission Fail &#039;Out of Time&#039;===&lt;br /&gt;
&lt;br /&gt;
If you want to set up a timed objective, eg, &amp;quot;Escape the dungeon before your execution at 3:00am&amp;quot; or &amp;quot;Survive within the crypt until 3:00am&amp;quot; then:&lt;br /&gt;
&lt;br /&gt;
* Set up the objective as a custom objective (see [[Objectives Editor]].) &lt;br /&gt;
* Create a target_tdm_setobjectivestate.&lt;br /&gt;
* Give it a name, eg, TimeObjective&lt;br /&gt;
* Give it the property value pair: obj_idN &amp;lt;n&amp;gt;  (replace &amp;lt;n&amp;gt; with the objective number)&lt;br /&gt;
* Give it the property value pair: obj_state &amp;lt;n&amp;gt; (replace &amp;lt;n&amp;gt; with 1 to complete or 3 to fail)&lt;br /&gt;
* Create an &#039;&#039;if&#039;&#039; conditional script as described above in &#039;&#039;Triggering Entities on Time&#039;&#039; with the following line included...&lt;br /&gt;
 	$TimeObjective.activate($player1);&lt;br /&gt;
* Change the mins and hours values to the time you want the mission to end.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Other_Cities_and_Towns&amp;diff=20691</id>
		<title>Other Cities and Towns</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Other_Cities_and_Towns&amp;diff=20691"/>
		<updated>2018-10-16T00:06:11Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Braeden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This article gives a brief summary about other cities, towns and villages near the city of [[The City|Bridgeport]]. Mappers should feel free to place their missions in these towns if they like, or to create their own locations in the TDM universe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Braeden==&lt;br /&gt;
&lt;br /&gt;
A town north of Bridgeport. It&#039;s smaller than Bridgeport but still large enough that a visitor can go unnoticed.  &#039;&#039;&#039;Braeden&#039;&#039;&#039; must frequently defend itself from raids by barbarian tribes from the northern mountains.  The watch is stretched thin and will usually look the other way for a fee.  Recently the Inquisition has come to &#039;&#039;&#039;Braeden&#039;&#039;&#039;, and they have become quite overzealous.  Knights of the Hammer now guard the city from raiders.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=16 Builder&#039;s Influence]&#039;&#039;, &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=65 In the North]&#039;&#039;, &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=128 Braeden Church]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=27 Glenham Tower]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Brickstone Hill==&lt;br /&gt;
&lt;br /&gt;
A manor with a mansion, owned by general Lanton. It&#039;s inhabited by him, his wife and their servants. Lanton is wealthy, owning several companies in town. Rumours persist that Lanton uses his mansion for hiding smuggled or otherwise illegally obtained precious goods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=11 Living Expenses]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Flakebridge==&lt;br /&gt;
&lt;br /&gt;
Flakebridge Monastery was built more than two hundred years ago next to the village of &#039;&#039;&#039;Flakebridge&#039;&#039;&#039;. Overlooking both the road and river leading to the once wealthy region around Lake Coulter, the outpost soon flourished from tariffs and donations.&lt;br /&gt;
&lt;br /&gt;
Like many other Builder outposts, &#039;&#039;&#039;Flakebridge Monastery&#039;&#039;&#039; offered travellers a safe haven on their travels, provided that they could pay for it. Little is known about what has happened there recently, but anyone who has gone near has not been heard from again. The few travellers that still need to get through choose the long way around through Pagan infested lands.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=37 Flakebridge Monastery]&#039;&#039; (not set directly in the village, but at the nearby titular monastery)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=37 Flakebridge Monastery]&#039;&#039; (described in the mission notes)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Glenham==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Glenham&#039;&#039;&#039; is a small mining town northeast of &#039;&#039;&#039;Braeden&#039;&#039;&#039;. The town resides at the base of a mountain, its west side surrounded by vast &#039;&#039;&#039;Glenham Moors&#039;&#039;&#039;, which are notorious for their occasional mists. All travelers are recommended to stay on the road to avoid getting lost during the mists. The mountain to the east contains vast mining tunnels, which produce iron, copper and small amounts of precious metals for the ever burning forges of &#039;&#039;&#039;Braeden&#039;&#039;&#039; and Bridgeport. &lt;br /&gt;
&lt;br /&gt;
Near the town, deep in the moors, stands &#039;&#039;&#039;Glenham Tower&#039;&#039;&#039;, which was once one of the most magnificent buildings there. The tower has been long abandoned and is still attracting adventurers.&lt;br /&gt;
&lt;br /&gt;
The roads around Glenham are generally safe, but occasional bandit raids are possible, launched from the hidden lairs in the mountains.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=27 Glenham Tower]&#039;&#039; (at the eponymous manor), &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=38 The Transaction]&#039;&#039; (in an outer quarter of Glenham itself).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=75 Vengeance for a Thief (Part 2)]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Greensdove==&lt;br /&gt;
&lt;br /&gt;
Greensdove is known to be &amp;quot;&#039;&#039;(...) lodged in between the &#039;&#039;(Greensdove)&#039;&#039; docks and another town, called Singsmarsh&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a small town with mostly right-angled, cramped, narrow streets, usually with at least single-storey housing. Buildings of interest include the local Builder temple and monastery, an unnamed tavern, a local town watch guardhouse, and &amp;quot;The Bear and the Belcher&amp;quot; inn. Greensdove&#039;s docks form a small separate settlement of their own, lying on the nearby coast. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=39 Lockdown (Part 1)]&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lampfire Hills==&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;small, border town to Bridgeport, with a long and storied history&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Near the town lies an old castle, known under the simple colloquial nickname &#039;&#039;&#039;The Gatehouse&#039;&#039;&#039;. It was built during the days of the old empire. The castle or its vicinity is said to house an ancient holy relic, a sword touched by the Builder himself, and once guarded by a now-vanished military order of the Builders. The Inquisitors of the Builder&#039;s Church had sent a Builder postulant, Matthias, to retrieve the holy relic. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=80 The Gatehouse]&#039;&#039; (at The Gatehouse, a local castle)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=80 The Gatehouse]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lunarium==&lt;br /&gt;
&lt;br /&gt;
Also known as &amp;quot;The City of the Spires&amp;quot;, because of the five towering spires that are its main landmarks. There are four huge towers at the outer edges of the city, while a fifth, the most massive one, stands at the city&#039; center. The four spires feed magical light directly into the fifth one.&lt;br /&gt;
&lt;br /&gt;
Lunarium &amp;quot;&#039;&#039;lies five thousand leagues east of Bridgeport, and is home to many people who came here due to the magical healing properties in the air surrounding the spires&#039;&#039;&amp;quot;. However, getting too close to any of these spires has been noted to be dangerous, as it can supposedly end in a person &amp;quot;&#039;&#039;disappearing in a puff of greasy smoke&#039;&#039;&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=73 Lord Dufford&#039;s]&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Northdale==&lt;br /&gt;
&lt;br /&gt;
A small town hidden away deep in the mountains of the Empire. To quote one of its criminal residents, &#039;&#039;&amp;quot;The people aren&#039;t too friendly here, but folks let a man keep to himself. And for a thief like me, that&#039;s a good place to call home.&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;Shadows of Northdale&#039;&#039; series (&#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=126 Shadows of Northdale Act I]&#039;&#039;, etc.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Powell Estate==&lt;br /&gt;
&lt;br /&gt;
The manor and farmlands owned by the Powell family (Oscar, Carl, Bernhard and Alma), a few miles from Bridgeport, located in a valley surrounded by mountains. Under the main grounds of the manor lies a system of winding tunnels equipped with irrigation pumps and pipelines, an ingenious old irrigation network used to distribute water to the farmlands, as this valley&#039;s soil is otherwise rather parched without regular watering. One of the local attractions on the estate that draws regular visitors is a hedge maze with several displays of statues, donated by various sculptors and artists. The Powell family has recently had a tense and rather unhappy history. To add to their woes, their estate was rumoured to have been attacked by a band of Pagan tribesmen a few years ago.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=45 Reap As You Sow]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singsmarsh==&lt;br /&gt;
&lt;br /&gt;
A town not far from Greensdove. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=39 Lockdown (Part 1)]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Waterford Island ==&lt;br /&gt;
&lt;br /&gt;
An island sparringly covered with shrubs and palm groves, the place has something of a pirate hsitory, being a common hideout of their&#039;s in the past. Nowadays, the island is best known as the location of Briarwood Cathedral.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=92 Briarwood Cathedral]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[Choosing Place Names]] - Article with advice on choosing fictional placenames appropriate to the nature and tone of TDM&#039;s setting.&lt;br /&gt;
&lt;br /&gt;
[[The City]] - The geographic focal point of TDM&#039;s setting, Bridgeport lies in the Empire and is a major metropolis. Colloquially, it is often referred to as the City by locals.&lt;br /&gt;
&lt;br /&gt;
[[The World at Large]] - About the &amp;quot;big picture&amp;quot; geography of TDM&#039;s setting, beyond the local scope of Bridgeport (The City) or other individual settlements.&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18804-different-interpretations-of-the-city-ive-noticed/ Different interpretations of the city I&#039;ve noticed] - A discussion on how The City and the various other cities, towns and settlements can subtly vary in their portrayal (but this is for the better, if we&#039;re shown different bits of these inhabited places).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Universe]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Other_Cities_and_Towns&amp;diff=20690</id>
		<title>Other Cities and Towns</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Other_Cities_and_Towns&amp;diff=20690"/>
		<updated>2018-10-16T00:01:26Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Braeden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This article gives a brief summary about other cities, towns and villages near the city of [[The City|Bridgeport]]. Mappers should feel free to place their missions in these towns if they like, or to create their own locations in the TDM universe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Braeden==&lt;br /&gt;
&lt;br /&gt;
A town north of Bridgeport. It&#039;s smaller than Bridgeport but still large enough that a visitor can go unnoticed.  &#039;&#039;&#039;Braeden&#039;&#039;&#039; must frequently defend itself from raids by barbarian tribes from the northern mountains.  The watch is stretched thin and will usually look the other way for a fee.  Recently the Inquisition has come to &#039;&#039;&#039;Braeden&#039;&#039;&#039;, and they have become quite overzealous.  Knights of the Hammer now guard the city from raiders.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=16 Builder&#039;s Influence]&#039;&#039;, &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=65 In the North]&#039;&#039;, &#039;&#039;[http://http://www.thedarkmod.com/missiondetails/?id=128 Braeden Church]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=27 Glenham Tower]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Brickstone Hill==&lt;br /&gt;
&lt;br /&gt;
A manor with a mansion, owned by general Lanton. It&#039;s inhabited by him, his wife and their servants. Lanton is wealthy, owning several companies in town. Rumours persist that Lanton uses his mansion for hiding smuggled or otherwise illegally obtained precious goods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=11 Living Expenses]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Flakebridge==&lt;br /&gt;
&lt;br /&gt;
Flakebridge Monastery was built more than two hundred years ago next to the village of &#039;&#039;&#039;Flakebridge&#039;&#039;&#039;. Overlooking both the road and river leading to the once wealthy region around Lake Coulter, the outpost soon flourished from tariffs and donations.&lt;br /&gt;
&lt;br /&gt;
Like many other Builder outposts, &#039;&#039;&#039;Flakebridge Monastery&#039;&#039;&#039; offered travellers a safe haven on their travels, provided that they could pay for it. Little is known about what has happened there recently, but anyone who has gone near has not been heard from again. The few travellers that still need to get through choose the long way around through Pagan infested lands.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=37 Flakebridge Monastery]&#039;&#039; (not set directly in the village, but at the nearby titular monastery)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=37 Flakebridge Monastery]&#039;&#039; (described in the mission notes)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Glenham==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Glenham&#039;&#039;&#039; is a small mining town northeast of &#039;&#039;&#039;Braeden&#039;&#039;&#039;. The town resides at the base of a mountain, its west side surrounded by vast &#039;&#039;&#039;Glenham Moors&#039;&#039;&#039;, which are notorious for their occasional mists. All travelers are recommended to stay on the road to avoid getting lost during the mists. The mountain to the east contains vast mining tunnels, which produce iron, copper and small amounts of precious metals for the ever burning forges of &#039;&#039;&#039;Braeden&#039;&#039;&#039; and Bridgeport. &lt;br /&gt;
&lt;br /&gt;
Near the town, deep in the moors, stands &#039;&#039;&#039;Glenham Tower&#039;&#039;&#039;, which was once one of the most magnificent buildings there. The tower has been long abandoned and is still attracting adventurers.&lt;br /&gt;
&lt;br /&gt;
The roads around Glenham are generally safe, but occasional bandit raids are possible, launched from the hidden lairs in the mountains.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=27 Glenham Tower]&#039;&#039; (at the eponymous manor), &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=38 The Transaction]&#039;&#039; (in an outer quarter of Glenham itself).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=75 Vengeance for a Thief (Part 2)]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Greensdove==&lt;br /&gt;
&lt;br /&gt;
Greensdove is known to be &amp;quot;&#039;&#039;(...) lodged in between the &#039;&#039;(Greensdove)&#039;&#039; docks and another town, called Singsmarsh&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a small town with mostly right-angled, cramped, narrow streets, usually with at least single-storey housing. Buildings of interest include the local Builder temple and monastery, an unnamed tavern, a local town watch guardhouse, and &amp;quot;The Bear and the Belcher&amp;quot; inn. Greensdove&#039;s docks form a small separate settlement of their own, lying on the nearby coast. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=39 Lockdown (Part 1)]&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lampfire Hills==&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;small, border town to Bridgeport, with a long and storied history&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Near the town lies an old castle, known under the simple colloquial nickname &#039;&#039;&#039;The Gatehouse&#039;&#039;&#039;. It was built during the days of the old empire. The castle or its vicinity is said to house an ancient holy relic, a sword touched by the Builder himself, and once guarded by a now-vanished military order of the Builders. The Inquisitors of the Builder&#039;s Church had sent a Builder postulant, Matthias, to retrieve the holy relic. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=80 The Gatehouse]&#039;&#039; (at The Gatehouse, a local castle)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=80 The Gatehouse]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lunarium==&lt;br /&gt;
&lt;br /&gt;
Also known as &amp;quot;The City of the Spires&amp;quot;, because of the five towering spires that are its main landmarks. There are four huge towers at the outer edges of the city, while a fifth, the most massive one, stands at the city&#039; center. The four spires feed magical light directly into the fifth one.&lt;br /&gt;
&lt;br /&gt;
Lunarium &amp;quot;&#039;&#039;lies five thousand leagues east of Bridgeport, and is home to many people who came here due to the magical healing properties in the air surrounding the spires&#039;&#039;&amp;quot;. However, getting too close to any of these spires has been noted to be dangerous, as it can supposedly end in a person &amp;quot;&#039;&#039;disappearing in a puff of greasy smoke&#039;&#039;&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=73 Lord Dufford&#039;s]&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Northdale==&lt;br /&gt;
&lt;br /&gt;
A small town hidden away deep in the mountains of the Empire. To quote one of its criminal residents, &#039;&#039;&amp;quot;The people aren&#039;t too friendly here, but folks let a man keep to himself. And for a thief like me, that&#039;s a good place to call home.&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;Shadows of Northdale&#039;&#039; series (&#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=126 Shadows of Northdale Act I]&#039;&#039;, etc.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Powell Estate==&lt;br /&gt;
&lt;br /&gt;
The manor and farmlands owned by the Powell family (Oscar, Carl, Bernhard and Alma), a few miles from Bridgeport, located in a valley surrounded by mountains. Under the main grounds of the manor lies a system of winding tunnels equipped with irrigation pumps and pipelines, an ingenious old irrigation network used to distribute water to the farmlands, as this valley&#039;s soil is otherwise rather parched without regular watering. One of the local attractions on the estate that draws regular visitors is a hedge maze with several displays of statues, donated by various sculptors and artists. The Powell family has recently had a tense and rather unhappy history. To add to their woes, their estate was rumoured to have been attacked by a band of Pagan tribesmen a few years ago.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=45 Reap As You Sow]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Singsmarsh==&lt;br /&gt;
&lt;br /&gt;
A town not far from Greensdove. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentioned in stories (fan missions):&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=39 Lockdown (Part 1)]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Waterford Island ==&lt;br /&gt;
&lt;br /&gt;
An island sparringly covered with shrubs and palm groves, the place has something of a pirate hsitory, being a common hideout of their&#039;s in the past. Nowadays, the island is best known as the location of Briarwood Cathedral.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stories (fan missions) set here:&#039;&#039;&#039; &#039;&#039;[http://www.thedarkmod.com/missiondetails/?id=92 Briarwood Cathedral]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[Choosing Place Names]] - Article with advice on choosing fictional placenames appropriate to the nature and tone of TDM&#039;s setting.&lt;br /&gt;
&lt;br /&gt;
[[The City]] - The geographic focal point of TDM&#039;s setting, Bridgeport lies in the Empire and is a major metropolis. Colloquially, it is often referred to as the City by locals.&lt;br /&gt;
&lt;br /&gt;
[[The World at Large]] - About the &amp;quot;big picture&amp;quot; geography of TDM&#039;s setting, beyond the local scope of Bridgeport (The City) or other individual settlements.&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18804-different-interpretations-of-the-city-ive-noticed/ Different interpretations of the city I&#039;ve noticed] - A discussion on how The City and the various other cities, towns and settlements can subtly vary in their portrayal (but this is for the better, if we&#039;re shown different bits of these inhabited places).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Universe]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20689</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20689"/>
		<updated>2018-10-15T21:14:58Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Black Mage&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-10-15&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Cleaning Up the Neighbourhood&lt;br /&gt;
|some1stoleit&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry418523}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Order of Thieves: Qualifying Examination (Working Title) &lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry419272}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-16&lt;br /&gt;
|unknown&lt;br /&gt;
|The Order of Thieves&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 5 - Deceit]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2018&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Corruption]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20638</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20638"/>
		<updated>2018-10-12T23:07:21Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Untitled&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-10-12&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Cleaning Up the Neighbourhood&lt;br /&gt;
|some1stoleit&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry418523}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Order of Thieves: Qualifying Examination (Working Title) &lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry419272}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-16&lt;br /&gt;
|unknown&lt;br /&gt;
|The Order of Thieves&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 5 - Deceit]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2018&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Corruption]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20566</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20566"/>
		<updated>2018-09-01T21:04:57Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Cleaning Up the Neighbourhood&lt;br /&gt;
|some1stoleit&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry418523}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Order of Thieves: Qualifying Examination (Working Title) &lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry419272}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-16&lt;br /&gt;
|unknown&lt;br /&gt;
|The Order of Thieves&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 5 - Deceit]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2018&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Corruption]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=20565</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=20565"/>
		<updated>2018-09-01T21:03:15Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [http://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod#Editing_This_Table below].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;3%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|129|William Steele 4: The Warrens}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://http://forums.thedarkmod.com/topic/19618-fan-mission-the-warrens-by-grayman-201891/}}&lt;br /&gt;
|2018-09-01&lt;br /&gt;
|53&lt;br /&gt;
|Yes&lt;br /&gt;
|William Steele 4&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|No&lt;br /&gt;
|CoS1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}}&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Custom &amp;lt;br&amp;gt;(not EFX)&lt;br /&gt;
|Shadows of Northdale 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|Rest in Peace Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}}&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}}&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|Volta 2&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}}&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|Accountant 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}}&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/#entry405306/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse Missions &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|Official Campaign 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|Of Brambles and Thorns&lt;br /&gt;
|Mansion/Estate &amp;amp; Ship FMs&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 3&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs, City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}}&lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|Accountant 2&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs, Sewer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|359&lt;br /&gt;
|Yes&lt;br /&gt;
|Crucible of Omens &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15 (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead, Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}}&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[http://www.amazon.com/Shadowcursed-ebook/dp/B00BYEW02M Shadowcursed]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
Mansion/Estate FMs&lt;br /&gt;
|Horror themes&lt;br /&gt;
Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|Ulysses 2&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}}&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 3&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}}&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Horror/Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|Of Brambles and Thorns&lt;br /&gt;
|Pirate Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|Ulysses&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}}&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 2&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|In a Time of Need 2&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 3&lt;br /&gt;
|Sewer / Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 2&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}}&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|In a Time of Need 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[http://www.amazon.com/Shadowcursed-ebook/dp/B00BYEW02M Shadowcursed]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 2 and CUC 13&lt;br /&gt;
|Museum Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|CUC 13&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 1&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 6 CUC 13 (Winner)&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|CUC 13&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror FMs &lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 1&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 5&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11 (Winner), T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap as you sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11&lt;br /&gt;
|Daylight Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11, Selis Woderose 2&lt;br /&gt;
|Castle/Fortress Missions &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|Talbot 3&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 0, CSC 11&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 4&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|Version 1.0, GCC 09 (Winner); Talbot 2&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|Selis Woderose 1&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|St Alban&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Platforming / Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10/St Alban&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 3, SVC 10 (Winner)&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 2&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 4&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 3&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Sewer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09 / Baltona 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Warehouse Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No &amp;lt;br&amp;gt; [https://www.moddb.com/mods/the-dark-mod/addons/unofficial-thieves-efx  Unofficial EFX Build]&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Training&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 2&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}}&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|Official Campaign 2&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Series Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09:  Grand Christmas Contest 2009&lt;br /&gt;
&lt;br /&gt;
SVC 10:  Summer Vertical Contest 2010&lt;br /&gt;
&lt;br /&gt;
CSC 11:  Community Seasons Contest 2011&lt;br /&gt;
&lt;br /&gt;
HSC 11:  Halloween Speed-Build Contest 2011&lt;br /&gt;
&lt;br /&gt;
CBC 12:  Community Beginner Contest 2012&lt;br /&gt;
&lt;br /&gt;
CUC 13:  Community Unusual Contest 2013&lt;br /&gt;
&lt;br /&gt;
HSC 14:  Halloween Speed-Build Contest 2014&lt;br /&gt;
&lt;br /&gt;
HSC 15:  Halloween Speed-Build Contest 2015&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editing This Table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors. &lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Setting_Reverb_Data_of_Rooms_(EAX)&amp;diff=20547</id>
		<title>Setting Reverb Data of Rooms (EAX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Setting_Reverb_Data_of_Rooms_(EAX)&amp;diff=20547"/>
		<updated>2018-08-19T04:07:33Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Locations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This document will attempt to explain how to set the new EFX settings in your rooms when mapping.&lt;br /&gt;
&lt;br /&gt;
Previously these settings were known as EAX settings, and required EAX 4.0-compatible sound card.&lt;br /&gt;
In TDM 2.06, EAX technology was completely replaced with OpenAL EFX, which is now processed in software (by [https://github.com/kcat/openal-soft openal-soft]) without any requirements on sound card.&lt;br /&gt;
&lt;br /&gt;
= General =&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
The EFX info for a map should be stored in the file &amp;quot;&amp;lt;tt&amp;gt;efxs/&amp;lt;mapname&amp;gt;.efx&amp;lt;/tt&amp;gt;&amp;quot;, where &amp;lt;mapname&amp;gt; is the name of your .map file (without extension).&lt;br /&gt;
&lt;br /&gt;
In order to check that you have put the file into right location, start your mission in game.&lt;br /&gt;
If TDM manages to load your efx file, then you will see the following message in console:&lt;br /&gt;
 sound: found efxs/&amp;lt;mapname&amp;gt;.efx&lt;br /&gt;
If you failed something, then you will see a bit different message there:&lt;br /&gt;
 sound: missing efxs/&amp;lt;mapname&amp;gt;.efx&lt;br /&gt;
In both cases some additional diagnostic messages can be present nearby.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you must enable &amp;quot;&amp;lt;tt&amp;gt;OpenAL EFX&amp;lt;/tt&amp;gt;&amp;quot; in sound settings in the main menu, otherwise TDM won&#039;t even try to load the efx file.&lt;br /&gt;
&lt;br /&gt;
== EFX file ==&lt;br /&gt;
&lt;br /&gt;
It is a plain text file, so you can open it up in your text editor of choice.&lt;br /&gt;
&lt;br /&gt;
Any EFX file must start with a header which specifies EFX version:&lt;br /&gt;
 Version 1&lt;br /&gt;
If you forget this line, then your EFX file will &#039;&#039;&#039;not&#039;&#039;&#039; be loaded. &lt;br /&gt;
&lt;br /&gt;
The rest of the file consists of separate blocks, one for each &amp;quot;reverb zone&amp;quot;.&lt;br /&gt;
Here is an example of such block from mars_city1.EFX of the original Doom 3 game:&lt;br /&gt;
&lt;br /&gt;
 // reverb maintenance&lt;br /&gt;
 reverb &amp;quot;maintenance&amp;quot; {&lt;br /&gt;
  &amp;quot;environment&amp;quot; 26&lt;br /&gt;
  &amp;quot;environment size&amp;quot; 5.0670&lt;br /&gt;
  &amp;quot;environment diffusion&amp;quot; 0.6030&lt;br /&gt;
  &amp;quot;room&amp;quot; -411&lt;br /&gt;
  &amp;quot;room hf&amp;quot; -685&lt;br /&gt;
  &amp;quot;room lf&amp;quot; 0&lt;br /&gt;
  &amp;quot;decay time&amp;quot; 1.7360&lt;br /&gt;
  &amp;quot;decay hf ratio&amp;quot; 0.8030&lt;br /&gt;
  &amp;quot;decay lf ratio&amp;quot; 1.0000&lt;br /&gt;
  &amp;quot;reflections&amp;quot; 96&lt;br /&gt;
  &amp;quot;reflections delay&amp;quot; 0.0080&lt;br /&gt;
  &amp;quot;reflections pan&amp;quot; 0.0000 0.0000 0.0000&lt;br /&gt;
  &amp;quot;reverb&amp;quot; 27&lt;br /&gt;
  &amp;quot;reverb delay&amp;quot; 0.0050&lt;br /&gt;
  &amp;quot;reverb pan&amp;quot; 0.0000 0.0000 0.0000&lt;br /&gt;
  &amp;quot;echo time&amp;quot; 0.0750&lt;br /&gt;
  &amp;quot;echo depth&amp;quot; 1.0000&lt;br /&gt;
  &amp;quot;modulation time&amp;quot; 0.2500&lt;br /&gt;
  &amp;quot;modulation depth&amp;quot; 0.0000&lt;br /&gt;
  &amp;quot;air absorption hf&amp;quot; -5.0000&lt;br /&gt;
  &amp;quot;hf reference&amp;quot; 5000.0000&lt;br /&gt;
  &amp;quot;lf reference&amp;quot; 250.0000&lt;br /&gt;
  &amp;quot;room rolloff factor&amp;quot; 0.0000&lt;br /&gt;
  &amp;quot;flags&amp;quot; 56&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
What does all this mean? &lt;br /&gt;
&lt;br /&gt;
There is a lot of sound design stuff that one could make guesses at if you&#039;ve ever used a reverb plugin in any sort of sound editing program. hf = high frequency, lf = low frequency, etc.&lt;br /&gt;
Also there are some engine-specific settings like &amp;lt;tt&amp;gt;&amp;quot;flags&amp;quot; 56&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Below, a brief explanation of some reverb sound variables is included.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
Each reverb zone definition starts with a line which specifies to which location it must be applied:&lt;br /&gt;
&lt;br /&gt;
 reverb &amp;quot;&amp;lt;name of the location area you want to apply this to&amp;gt;&amp;quot;&lt;br /&gt;
 {&lt;br /&gt;
     //... (settings)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Information about locations and how to set them up is available in another article: [[Location Settings#The Location Entities]].&lt;br /&gt;
Reverb zones use exactly the same locations as the ones which are used to specify per-area ambient sounds.&lt;br /&gt;
You should name every info_location entity, i.e. provide a &amp;quot;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&amp;quot; spawnarg for it. This is the name used in reverb zone definitions.&lt;br /&gt;
&lt;br /&gt;
As of TDM 2.06, you can&#039;t use capital letters in the name of your location entity or reverb zone. This may or may not change in the future.&lt;br /&gt;
&lt;br /&gt;
Here is an example of an entity which defines &amp;quot;canal_tunnel&amp;quot; location:&lt;br /&gt;
&lt;br /&gt;
 //======================= from volta_v1.map ====================&lt;br /&gt;
 // entity 3532&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;classname&amp;quot; &amp;quot;info_location&amp;quot;&lt;br /&gt;
   &amp;quot;name&amp;quot; &amp;quot;canal_tunnel&amp;quot;             //this is the name used&lt;br /&gt;
   &amp;quot;ambient&amp;quot; &amp;quot;snd_streets&amp;quot;&lt;br /&gt;
   &amp;quot;ambient_light&amp;quot; &amp;quot;0.04 0.03 0.02&amp;quot;&lt;br /&gt;
   &amp;quot;ambient_light_dynamic&amp;quot; &amp;quot;0.01 0.01 0.01&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
And this is the EFX effect (reverb zone) for it:&lt;br /&gt;
&lt;br /&gt;
 //======================= from volta_v1.efx ====================&lt;br /&gt;
 reverb &amp;quot;canal_tunnel&amp;quot; {             //name put to here&lt;br /&gt;
   &amp;quot;environment&amp;quot; 22&lt;br /&gt;
   &amp;quot;environment size&amp;quot; 1.8000&lt;br /&gt;
   &amp;quot;environment diffusion&amp;quot; 1.0000&lt;br /&gt;
   &amp;quot;room&amp;quot; -1000&lt;br /&gt;
   &amp;quot;room hf&amp;quot; -4000&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
During playing, the engine prints a message whenever the player&#039;s location changes.&lt;br /&gt;
It allows you to check if you have set up locations properly.&lt;br /&gt;
For instance, here are console messages showing a proper EFX location change:&lt;br /&gt;
&lt;br /&gt;
 Switching to EFX &#039;canal_tunnel&#039; (#295)&lt;br /&gt;
 Changed location from &#039;canal_streets&#039; to &#039;canal_tunnel&#039;.&lt;br /&gt;
&lt;br /&gt;
It is also possible to specify portal-area number instead of location name in the reverb zone definition.&lt;br /&gt;
The portal-area number is listed in the .proc file, which is created in the dmap process, in the format of &amp;lt;tt&amp;gt;_area&amp;lt;num&amp;gt;&amp;lt;/tt&amp;gt; (where &amp;lt;num&amp;gt; is the portal area number), e.g. &amp;lt;tt&amp;gt;_area15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&#039;&#039;&#039;Beware:&#039;&#039;&#039; this functionality exists for fast hacking only! Do not release a mission with portal-area numbers in .efx file!&lt;br /&gt;
The main reason to avoid it is that portal-area numbers are auto-generated, so minor changes in your mission can change all of them.&lt;br /&gt;
&lt;br /&gt;
Finally, there is a &amp;quot;default&amp;quot; reverb environment which is used for any area in the map which does not have reverb information specified.&lt;br /&gt;
&lt;br /&gt;
The order that the sound system checks for reverb data is: area number -&amp;gt; location name -&amp;gt; default.&lt;br /&gt;
&lt;br /&gt;
== Changes during playing ==&lt;br /&gt;
Type &amp;quot;&amp;lt;tt&amp;gt;reloadSounds&amp;lt;/tt&amp;gt;&amp;quot; command into game console in order to reload EFX definitions.&lt;br /&gt;
&lt;br /&gt;
So when you experiment with EFX, execute this command after each tweak to EFX file to hear the difference immediately.&lt;br /&gt;
&lt;br /&gt;
== Suppress effect ==&lt;br /&gt;
Sometimes you want to disable EFX effect on a specific sound.&lt;br /&gt;
A typical example is when you have a voice in player&#039;s head, which must not depend on player&#039;s physical environment.&lt;br /&gt;
Another case is when some sound already has reverb baked in, so you don&#039;t what to double-reverb it. Although the best practice is to use sound samples without embedded reverb, combined with proper EFX definitions.&lt;br /&gt;
&lt;br /&gt;
You can disable all EFX effects on one specific sound shader by adding &amp;quot;&amp;lt;tt&amp;gt;no_efx&amp;lt;/tt&amp;gt;&amp;quot; keyword to its body.&lt;br /&gt;
For instance, here is how non-EFX version of blackjack unsheathing looks like:&lt;br /&gt;
 blackjack_unsheath&lt;br /&gt;
 {&lt;br /&gt;
   description &amp;quot;Made by pakmannen&amp;quot;&lt;br /&gt;
   sound/sfx/tools/melee/blackjack_unsheath.ogg&lt;br /&gt;
   no_efx                       //do NOT apply EFX to this sound&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note that if you change sound shaders, writing &amp;quot;&amp;lt;tt&amp;gt;reloadDecls&amp;lt;/tt&amp;gt;&amp;quot; in TDM game console is enough to reload them.&lt;br /&gt;
&lt;br /&gt;
There are a lot of stock sounds in TDM which ideally should not be affected by EFX effects.&lt;br /&gt;
As of version 2.06, none of them has the &amp;quot;no_efx&amp;quot; keyword.&lt;br /&gt;
But most likely the situation will change in 2.07, see issue [http://bugs.thedarkmod.com/view.php?id=4688 4688].&lt;br /&gt;
For this reason, it is advised to &#039;&#039;&#039;not&#039;&#039;&#039; override any stock sound shaders for the sake of suppressing EFX.&lt;br /&gt;
Have patience, the stock sounds will be fixed =)&lt;br /&gt;
&lt;br /&gt;
=Presets=&lt;br /&gt;
&lt;br /&gt;
Presets are given in [http://forums.thedarkmod.com/topic/19205-getting-started-with-the-efx-room-reverb-system-wip/ this forum topic].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TODO:&#039;&#039;&#039; add presets here&lt;br /&gt;
&lt;br /&gt;
=Environment properties=&lt;br /&gt;
&lt;br /&gt;
== Legacy info ==&lt;br /&gt;
This information is from the old official EAX 2.0 documentation, although some properties may have changed in scope and focus from EAX 2.0 to EAX 4.0. One can assume that the properties serve the same general purpose and that each property&#039;s value bounds are approximately the same.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;environment&#039;&#039;&#039; - Unknown. Likely sets the room to one of an unknown number of environment presets.&lt;br /&gt;
* &#039;&#039;&#039;environment size&#039;&#039;&#039; - The Environment Size property sets the apparent size of the surrounding “room.” The value of Environment Size can be considered a characteristic dimension of the room expressed in meters. Scaling Environment Size is equivalent to scaling all dimensions of the room by the same factor. Value type is FLOAT; value range is 1.0 to 100.0, expressed in linear meters.&lt;br /&gt;
* &#039;&#039;&#039;environment diffusion&#039;&#039;&#039; - The Environment Diffusion property controls the echo density in the reverberation decay. Reducing diffusion gives the reverberation a more “grainy” character that is especially noticeable with percussive sound sources. If you set a diffusion value of 0.0, the later reverberation sounds like a succession of distinct echoes. Value type is FLOAT; value range is 0.0 to 1.0, expressed in a linear multiplier value.&lt;br /&gt;
* &#039;&#039;&#039;room&#039;&#039;&#039; - The Room property is the master volume control for the reflected sound (both early reflections and reverberation) that EAX adds to all sound sources. It sets the maximum amount of reflections and reverberation added to the sound mix in the primary buffer (the listener). Value is LONG; value range is -10000 to 0, expressed in hundredths of one decibel (-100 dB to 0 dB).&lt;br /&gt;
* &#039;&#039;&#039;room hf&#039;&#039;&#039; - The Room HF property further tweaks reflected sound by attenuating it at high frequencies. It controls a low-pass filter that applies globally to the reflected sound of all sound sources. The exact qualities of this low-pass filter -- its frequency and its bandwidth (Q) -- are unknown. Value type is LONG; value range is -10000 to 0, expressed in hundredths of one decibel (-100 dB to 0 dB).&lt;br /&gt;
* &#039;&#039;&#039;room lf&#039;&#039;&#039; - Undocumented. Assumably, the Room LF property applies a high-pass to reflected sound in much the same way as Room HF applies low-pass. The value type and range is unknown, but is likely LONG, must be between -10000 and 0 and is expressed in hundredths of one decibel.&lt;br /&gt;
* &#039;&#039;&#039;decay time&#039;&#039;&#039; - The Decay Time property sets the reverberation decay time, or the time in which reverberation is diminished. It ranges from 0.1 (typically a small room with very dead surfaces) to 20.0 (typically a large room with very live surfaces). Value is FLOAT; value range is 0.1 to 20.0, expressed in seconds.&lt;br /&gt;
* &#039;&#039;&#039;decay hf ratio&#039;&#039;&#039; - The Decay HF Ratio property sets the spectral quality of the Decay Time parameter. It is the ratio of high-frequency decay time relative to the time set by Decay Time. The Decay HF Ratio value 1.0 is neutral: the decay time is equal for all frequencies. As Decay HF Ratio increases above 1.0, the high-frequency decay time increases so it’s longer than the decay time at low frequencies. You hear a more brilliant reverberation with a longer decay at high frequencies. As the Decay HF Ratio value decreases below 1.0, the high-frequency decay time decreases so it’s shorter than the decay time of the low frequencies. You hear a more natural reverberation. Value is FLOAT; value range is 0.1 to 20.0, expressed in a linear multiplier variable.&lt;br /&gt;
* &#039;&#039;&#039;decay lf ratio&#039;&#039;&#039; - Undocumented. It&#039;s likely best to leave the value at 1.0, though the value&#039;s type and range is probably the same as the Decay HF Ratio property.&lt;br /&gt;
* &#039;&#039;&#039;reflections&#039;&#039;&#039; - The Reflections property controls the overall amount of initial reflections relative to the Room property. The value of Reflections ranges from a maximum of 10 dB to a minimum of -100 dB (no initial reflections at all), and is corrected by the value of the Room property. The Reflections property does not affect the subsequent reverberation decay. You can increase the amount of initial reflections to simulate a more narrow space or closer walls, especially effective if you associate the initial reflections increase with a reduction in reflections delays by lowering the value of the Reflection Delay property. To simulate open or semi-open environments, you can maintain the amount of early reflections while reducing the value of the Reverb property, which controls later reflections. Value type is LONG; value range is -10000 to 1000, expressed in hundredths of one decibel (-100 dB to -10 dB).&lt;br /&gt;
* &#039;&#039;&#039;reflections delay&#039;&#039;&#039; - The Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source. It ranges from 0 to 300 milliseconds. You can reduce or increase Reflections Delay to simulate closer or more distant reflective surfaces—and therefore control the perceived size of the room. Value is FLOAT; value range is 0.0 to 0.3, expressed in seconds (0 to 300 milliseconds).&lt;br /&gt;
* &#039;&#039;&#039;reflections pan&#039;&#039;&#039; - Undocumented. Three values are specified which may correspond to a generic &amp;quot;front&amp;quot;, &amp;quot;side&amp;quot; and &amp;quot;back/rear&amp;quot; configuration to control the directivity of early reflections in a 7.1 surround matrix. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;reverb&#039;&#039;&#039; - The Reverb property controls the overall amount of later reverberation relative to the Room property. (The Room property sets the overall amount of both initial reflections and later reverberation.) The value of Reverb ranges from a maximum of 20 dB to a minimum of -100 dB (no late reverberation at all). Value is LONG; value range is -10000 to 2000, expressed in hundredths of a decibel (-100 dB to 20 dB).&lt;br /&gt;
* &#039;&#039;&#039;reverb delay&#039;&#039;&#039; - The Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection (the first of the early reflections). It ranges from 0 to 100 milliseconds. Reducing or increasing Reverb Delay is useful for simulating a smaller or larger room. Value is FLOAT; value range is 0.0 to 0.1, expressed in seconds (0 to 100 milliseconds).&lt;br /&gt;
* &#039;&#039;&#039;reverb pan&#039;&#039;&#039; - Undocumented. Three values are specified which may correspond to a generic &amp;quot;front&amp;quot;, &amp;quot;side&amp;quot; and &amp;quot;back/rear&amp;quot; configuration to control the directivity of reverberation in a 7.1 surround matrix. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;echo time&#039;&#039;&#039; - Undocumented. Likely controls the decay time of echoes, or late reflections. A value of 0.1 likely presents a natural amount of echo, while increasing the value likely causes a &amp;quot;Grand Canyon&amp;quot; effect. Value type is likely FLOAT; value range is likely between 0.075 and 0.25, expressed in seconds.&lt;br /&gt;
* &#039;&#039;&#039;echo depth&#039;&#039;&#039; - Undocumented. May control directionality or tonal qualities of echoes arriving at the listener. Probably best to leave at 1.0. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;modulation time&#039;&#039;&#039; - Undocumented. Unknown purpose. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;modulation depth&#039;&#039;&#039; - Undocumented. Unknown purpose. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;air absorption hf&#039;&#039;&#039; - The Air Absorption HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium. It applies to both the direct path and reflected sound. You can use Air Absorption HF to simulate sound transmission through foggy air, dry air, smoky atmosphere, and so on. The default value is -0.05 dB per meter, which roughly corresponds to typical condition of atmospheric humidity, temperature, and so on. Lowering the value simulates a more absorbent medium (more humidity in the air, for example); raising the value simulates a less absorbent medium (dry desert air, for example). Value is FLOAT; value range is -100.0 to 0.0, expressed in hundredths of one decibel per meter (-1 dB to 0 dB). Default value is -5.0, which corresponds to -0.05 dB per meter attenuation.&lt;br /&gt;
* &#039;&#039;&#039;hf reference&#039;&#039;&#039; - Likely defines the frequency used for low-pass filters. Value is likely LONG; value range is likely between 0.0 and 20000.0, expressed in Hz. This value is probably best left at 5000.0.&lt;br /&gt;
* &#039;&#039;&#039;lf reference&#039;&#039;&#039; - Likely defines the frequency used for high-pass filters. Value is likely LONG; value range is likely between 0.0 and 20000.0, expressed in Hz. This value is probably best left at 250.0.&lt;br /&gt;
* &#039;&#039;&#039;room rolloff factor&#039;&#039;&#039; - The Room Rolloff property is one of two methods available in EAX to attenuate the reflected sound (containing both reflections, reverberation and echoes) according to source-listener distance. Value type is FLOAT; value range is 0.0 to 10.0, expressed in a linear multiplier value. It&#039;s recommended that users use 0.0, as id Software did not deviate from this value with Doom 3.&lt;br /&gt;
* &#039;&#039;&#039;flags&#039;&#039;&#039; - The Flags property is intended to control the relationship of high-level EAX properties to low-level properties. If certain EAX flags are set by setting the Flags property to a particular value, the setting of high-level properties is supposed to control the values of low-level properties based upon a defined scale, overriding specified values. In EAX 2.0, the value type is DWORD, whereas in Doom 3, it appears to be INT or some other type commonly used to store numeric values. In Doom 3, common values are 0, 2, 15, 31, 32, 56 and 63, but no documentation details what these values correspond to. If users wish to experiment with the Flags property, it is recommended that they choose from one of the above values. For reference, here is a table with the counts for each flag value as used in Doom 3:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;margin: 0.5em; margin-left: 2em; border: 1px solid #a0a0a0; text-align: right; border-collapse: collapse;&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Flag decimal&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Flag binary&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Count&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|00000000&lt;br /&gt;
|497&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|00000010&lt;br /&gt;
|6&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|00001110&lt;br /&gt;
|15&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|00001111&lt;br /&gt;
|94&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|31&lt;br /&gt;
|00011111&lt;br /&gt;
|511&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|32&lt;br /&gt;
|00100000&lt;br /&gt;
|247&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|56&lt;br /&gt;
|00111000&lt;br /&gt;
|59&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|63&lt;br /&gt;
|00111111&lt;br /&gt;
|168&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
In terms of the actual sound design for the values you put into these variables, here is a general tutorial on reverb from FruityLoops (NOTE: This is for a music production plugin, some of these don&#039;t apply, it&#039;s just to give a general idea on what certain variables do):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Cut&#039;&#039;&#039; Adjusts the low cutoff frequency. Use this to remove low frequencies from the input signal before reverb is added. For example, if you are adding reverb to, say a drum track, you might want to remove some of the &#039;rumble&#039; from the bass drum by attenuating the bass frequencies. Setting this parameter to the minimum value will bypass the Low Cut filter, displaying OFF in the value field.&lt;br /&gt;
* &#039;&#039;&#039;High Cut&#039;&#039;&#039; - Similar to the Low Cut, this adjusts the high cutoff frequency. Use this to remove high frequencies from the input signal.&lt;br /&gt;
* &#039;&#039;&#039;Predelay&#039;&#039;&#039; - Controls the delay time between the direct input signal and the first reverb reflection. This should be set to modest values for small rooms, and can be increased in relation to increases in room size. &#039;&#039;&#039;Predelay&#039;&#039;&#039; creates a slap-back echo effect that can both add atmosphere and muffle the signal, so use it wisely.&lt;br /&gt;
* &#039;&#039;&#039;Room Size&#039;&#039;&#039; - Use this to set the size of the virtual room where the reverb is created. The Room Size should be adjusted according to the decay time. Small rooms sound better with a short decay time, large rooms sound better with longer reverb times.&lt;br /&gt;
* &#039;&#039;&#039;Diffusion&#039;&#039;&#039; - Controls the density of the reflections bouncing off the walls of the virtual room. A low diffusion setting makes the reflections sound more distinct, like closely spaced echoes. A high diffusion setting creates reflections so close they sound more like noise, where no echoes can be distinguished.&lt;br /&gt;
* &#039;&#039;&#039;Color&#039;&#039;&#039; - The Color parameter is used for adjusting the decay time of the bass frequencies of the signal. This allows you to change the overall perceived mood or &#039;sound&#039; of the virtual room. A bright room has a low bass response, while warm rooms have a higher bass response. In a flat room, the response of the bass is equal to the general frequency response. Color has five settings: Brighter, Bright, Flat, Warm, Warmer.&lt;br /&gt;
* &#039;&#039;&#039;Decay&#039;&#039;&#039; - Controls the decay time of the reverb, the time it takes for the signal to decay to -60dB (1/1000 of the maximum amplitude). Use low decay times for small rooms or boxes, and long decay times for large rooms, halls or churches. You should also make sure that the Room Size parameter has an appropriate value.&lt;br /&gt;
* &#039;&#039;&#039;High Damping&#039;&#039;&#039; - This parameter allows you to adjust damping of the high frequencies in the reverb signal over time. Damping refers to the high frequencies being attenuated and dying out. This causes the sound to become gradually muffled and warm like it is being absorbed in the room. Setting this parameter to the maximum value will bypass the High Damping, displaying OFF in the value field.&lt;br /&gt;
* &#039;&#039;&#039;Dry&#039;&#039;&#039; - Sets the relative dry output level.&lt;br /&gt;
* &#039;&#039;&#039;Reverb&#039;&#039;&#039; - Sets the relative reverb (wet) signal level.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
There are some released FMs with EFX settings:&lt;br /&gt;
&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016 Volta and the Stone]. While Kingsal says EAX settings are unsupported, TDM loads them properly.&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/10125-fan-mission-patently-dangerous-20091031 Patently Dangerous]. Probably the first map with EFX settings, but they don&#039;t load now.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
A tutorial based around EFX can be found here [http://forums.thedarkmod.com/topic/19205-getting-started-with-the-efx-room-reverb-system-wip/ here]&lt;br /&gt;
&lt;br /&gt;
An old demonstration map of EAX in TDM is included [http://forums.thedarkmod.com/topic/11045-environmental-audio-extensions-eax-in-tdm/ here]&lt;br /&gt;
&lt;br /&gt;
A discussion about no_efx is [http://forums.thedarkmod.com/topic/19213-efx-discussion here]&lt;br /&gt;
&lt;br /&gt;
The first version of this article was written by Ishtvan at [http://forums.thedarkmod.com/topic/2071 http://forums.thedarkmod.com/topic/2071]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sound]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=AI_Relations_(Scripting)&amp;diff=20511</id>
		<title>AI Relations (Scripting)</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=AI_Relations_(Scripting)&amp;diff=20511"/>
		<updated>2018-07-06T14:32:09Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Scripts that can be run from Actor Entities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|Ishtvan|1636}}&lt;br /&gt;
&lt;br /&gt;
Background: AI in D3 have a &amp;quot;team&amp;quot; integer. The team of the player is always &amp;quot;0&amp;quot;. You can set the team of any other AI in the editor, just set &amp;quot;team&amp;quot; key to some integer value.&lt;br /&gt;
&lt;br /&gt;
The relationships between teams are stored in a matrix, and for now the relationship is an integer (I can make it a float later if there is great demand). To see how team A feels about team B, you run &amp;lt;tt&amp;gt;$sys::getRelNum( A, B )&amp;lt;/tt&amp;gt;. This will return the integer value for the relationship. Negative values are enemy relations, zero is neutral, positive is friendly.&lt;br /&gt;
&lt;br /&gt;
== Scripts that can be run from Actor Entities ==&lt;br /&gt;
&lt;br /&gt;
 // get the relationship number for how this actor feels about the other actor (gives an error if the entity argument is not an actor)&lt;br /&gt;
 &lt;br /&gt;
 ai bobAI = $Bob;&lt;br /&gt;
 float relation = bobAI.getRelationEnt( $Bill );&lt;br /&gt;
 &lt;br /&gt;
 // returns 1 if friendly, enemy, neutral, etc, 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
== Scripts that run from the global sys object ==&lt;br /&gt;
 // like getRelNumEnt, except it takes two team numbers to return how team1 feels about team2&lt;br /&gt;
 float sys::getRelNum( float team1, float team2 )&lt;br /&gt;
 &lt;br /&gt;
 // directly set how team1 feels about team2&lt;br /&gt;
 void sys::setRelation( float team1, float team2, float val )&lt;br /&gt;
 &lt;br /&gt;
 // adds the offset value to the current relationship value &lt;br /&gt;
 // (useful for doing stuff like having AI get incrementally less friendly towards you &lt;br /&gt;
 // as you do more and more suspicious stuff. When the relationship value goes negative they snap and attack)&lt;br /&gt;
 float sys::OffsetRelation( float team1, float team2, float offset )&lt;br /&gt;
&lt;br /&gt;
NOTE: Because in scripting no ints are used, just floats, these all take float arguments. However, be aware that whatever number you put in will be converted to an int in the SDK code.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[AI Relations (Editing)]]&lt;br /&gt;
&lt;br /&gt;
{{scripting}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=AI_Relations_(Scripting)&amp;diff=20510</id>
		<title>AI Relations (Scripting)</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=AI_Relations_(Scripting)&amp;diff=20510"/>
		<updated>2018-07-06T14:26:38Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Scripts that can be run from Actor Entities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|Ishtvan|1636}}&lt;br /&gt;
&lt;br /&gt;
Background: AI in D3 have a &amp;quot;team&amp;quot; integer. The team of the player is always &amp;quot;0&amp;quot;. You can set the team of any other AI in the editor, just set &amp;quot;team&amp;quot; key to some integer value.&lt;br /&gt;
&lt;br /&gt;
The relationships between teams are stored in a matrix, and for now the relationship is an integer (I can make it a float later if there is great demand). To see how team A feels about team B, you run &amp;lt;tt&amp;gt;$sys::getRelNum( A, B )&amp;lt;/tt&amp;gt;. This will return the integer value for the relationship. Negative values are enemy relations, zero is neutral, positive is friendly.&lt;br /&gt;
&lt;br /&gt;
== Scripts that can be run from Actor Entities ==&lt;br /&gt;
&lt;br /&gt;
 // get the relationship number for how this actor feels about the other actor (gives an error if the entity argument is not an actor)&lt;br /&gt;
 &lt;br /&gt;
 float entity::AI_GetRelationEnt( entity ent)&lt;br /&gt;
 &lt;br /&gt;
 // returns 1 if friendly, enemy, neutral, etc, 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
== Scripts that run from the global sys object ==&lt;br /&gt;
 // like getRelNumEnt, except it takes two team numbers to return how team1 feels about team2&lt;br /&gt;
 float sys::getRelNum( float team1, float team2 )&lt;br /&gt;
 &lt;br /&gt;
 // directly set how team1 feels about team2&lt;br /&gt;
 void sys::setRelation( float team1, float team2, float val )&lt;br /&gt;
 &lt;br /&gt;
 // adds the offset value to the current relationship value &lt;br /&gt;
 // (useful for doing stuff like having AI get incrementally less friendly towards you &lt;br /&gt;
 // as you do more and more suspicious stuff. When the relationship value goes negative they snap and attack)&lt;br /&gt;
 float sys::OffsetRelation( float team1, float team2, float offset )&lt;br /&gt;
&lt;br /&gt;
NOTE: Because in scripting no ints are used, just floats, these all take float arguments. However, be aware that whatever number you put in will be converted to an int in the SDK code.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[AI Relations (Editing)]]&lt;br /&gt;
&lt;br /&gt;
{{scripting}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=20484</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=20484"/>
		<updated>2018-07-02T00:56:10Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [http://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod#Editing_This_Table below].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|No&lt;br /&gt;
|CoS1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}}&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Yes&lt;br /&gt;
|Shadows of Northdale 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|Rest in Peace Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}}&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}}&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|Volta 2&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}}&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|Accountant 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}}&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/#entry405306/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse Missions &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|Official Campaign 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|Of Brambles and Thorns&lt;br /&gt;
|Mansion/Estate &amp;amp; Ship FMs&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 3&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs, City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}}&lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|Accountant 2&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs, Sewer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|313&lt;br /&gt;
|No&lt;br /&gt;
|Crucible of Omens &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15 (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead, Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}}&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[http://www.amazon.com/Shadowcursed-ebook/dp/B00BYEW02M Shadowcursed]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
Mansion/Estate FMs&lt;br /&gt;
|Horror themes&lt;br /&gt;
Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|Ulysses 2&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}}&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 3&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}}&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Horror/Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|Of Brambles and Thorns&lt;br /&gt;
|Pirate Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|Ulysses&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}}&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 2&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|In a Time of Need 2&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 3&lt;br /&gt;
|Sewer / Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 2&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}}&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|In a Time of Need 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[http://www.amazon.com/Shadowcursed-ebook/dp/B00BYEW02M Shadowcursed]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 2 and CUC 13&lt;br /&gt;
|Museum Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|CUC 13&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 1&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 6 CUC 13 (Winner)&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|CUC 13&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror FMs &lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 1&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 5&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11 (Winner), T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap as you sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11&lt;br /&gt;
|Daylight Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11, Selis Woderose 2&lt;br /&gt;
|Castle/Fortress Missions &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|Talbot 3&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 0, CSC 11&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 4&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|Version 1.0, GCC 09 (Winner); Talbot 2&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|Selis Woderose 1&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|St Alban&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Platforming / Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10/St Alban&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 3, SVC 10 (Winner)&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 2&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 4&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 3&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Sewer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09 / Baltona 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Warehouse Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Training&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 2&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}}&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|Official Campaign 2&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Series Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09:  Grand Christmas Contest 2009&lt;br /&gt;
&lt;br /&gt;
SVC 10:  Summer Vertical Contest 2010&lt;br /&gt;
&lt;br /&gt;
CSC 11:  Community Seasons Contest 2011&lt;br /&gt;
&lt;br /&gt;
HSC 11:  Halloween Speed-Build Contest 2011&lt;br /&gt;
&lt;br /&gt;
CBC 12:  Community Beginner Contest 2012&lt;br /&gt;
&lt;br /&gt;
CUC 13:  Community Unusual Contest 2013&lt;br /&gt;
&lt;br /&gt;
HSC 14:  Halloween Speed-Build Contest 2014&lt;br /&gt;
&lt;br /&gt;
HSC 15:  Halloween Speed-Build Contest 2015&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editing This Table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors. &lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20483</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=20483"/>
		<updated>2018-07-02T00:52:50Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Cleaning Up the Neighbourhood&lt;br /&gt;
|some1stoleit&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry418523}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Order of Thieves: Qualifying Examination (Working Title) &lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry419272}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-16&lt;br /&gt;
|unknown&lt;br /&gt;
|The Order of Thieves&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 4 - The Warrens]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2018&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 5 - Deceit]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2018&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Corruption]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=20482</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=20482"/>
		<updated>2018-07-02T00:52:05Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [http://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod#Editing_This_Table below].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|No&lt;br /&gt;
|CoS1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}}&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Yes&lt;br /&gt;
|Shadows of Northdale 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|Rest in Peace Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}}&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}}&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|Volta 2&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}}&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|Accountant 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}}&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/#entry405306/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse Missions &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|Official Campaign 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|Of Brambles and Thorns&lt;br /&gt;
|Mansion/Estate &amp;amp; Ship FMs&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 3&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs, City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}}&lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|Accountant 2&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs, Sewer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|313&lt;br /&gt;
|No&lt;br /&gt;
|Crucible of Omens &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15 (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead, Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|HSC 15&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}}&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[http://www.amazon.com/Shadowcursed-ebook/dp/B00BYEW02M Shadowcursed]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
Mansion/Estate FMs&lt;br /&gt;
|Horror themes&lt;br /&gt;
Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|Ulysses 2&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}}&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 3&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}}&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Horror/Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|Of Brambles and Thorns&lt;br /&gt;
|Pirate Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|Ulysses&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}}&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 2&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|In a Time of Need 2&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 3&lt;br /&gt;
|Sewer / Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 2&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}}&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|In a Time of Need 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[http://www.amazon.com/Shadowcursed-ebook/dp/B00BYEW02M Shadowcursed]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 2 and CUC 13&lt;br /&gt;
|Museum Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|CUC 13&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|Penny Dreadful 1&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 6 CUC 13 (Winner)&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|CUC 13&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror FMs &lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|William Steele 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|VFAT 1&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 5&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|CBC 12&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|HSC 11&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11 (Winner), T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap as you sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11&lt;br /&gt;
|Daylight Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11, Selis Woderose 2&lt;br /&gt;
|Castle/Fortress Missions &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|CSC 11&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|Talbot 3&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 0, CSC 11&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 4&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|Version 1.0, GCC 09 (Winner); Talbot 2&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|Selis Woderose 1&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|St Alban&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Platforming / Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10/St Alban&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|SVC 10&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 3, SVC 10 (Winner)&lt;br /&gt;
|Horror FMs&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|Thomas Porter 2&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 4&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 3&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|Corbin&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Sewer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09 / Baltona 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|GCC 09&lt;br /&gt;
|Warehouse Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Training&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 2&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}}&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|Official Campaign 2&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate FMs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Thief&#039;s Den 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Series Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09:  Grand Christmas Contest 2009&lt;br /&gt;
&lt;br /&gt;
SVC 10:  Summer Vertical Contest 2010&lt;br /&gt;
&lt;br /&gt;
CSC 11:  Community Seasons Contest 2011&lt;br /&gt;
&lt;br /&gt;
HSC 11:  Halloween Speed-Build Contest 2011&lt;br /&gt;
&lt;br /&gt;
CBC 12:  Community Beginner Contest 2012&lt;br /&gt;
&lt;br /&gt;
CUC 13:  Community Unusual Contest 2013&lt;br /&gt;
&lt;br /&gt;
HSC 14:  Halloween Speed-Build Contest 2014&lt;br /&gt;
&lt;br /&gt;
HSC 15:  Halloween Speed-Build Contest 2015&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editing This Table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors. &lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Path_Nodes&amp;diff=20456</id>
		<title>Path Nodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Path_Nodes&amp;diff=20456"/>
		<updated>2018-06-24T13:22:07Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* path_turn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;originally written by Springheel&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For more information on pathfinding, see [[Pathfinding]].  For more general info on getting your AI to patrol, see [[AI Patrol]].&lt;br /&gt;
&lt;br /&gt;
= What are Path Nodes? =&lt;br /&gt;
&lt;br /&gt;
Path entities (or path nodes) are the things that you use to make your AI move (patrol) around the map. Placing path nodes can take a little getting used to; hopefully this article will help (I&#039;m far from an expert, but here&#039;s what I&#039;ve discovered so far).&lt;br /&gt;
&lt;br /&gt;
There are lots of different kinds of path nodes.  It can sometimes help to think of them as &amp;quot;travel nodes&amp;quot; (nodes that AI will travel to) and &amp;quot;behaviour nodes&amp;quot; (nodes that tell AI how to behave at a certain point).  &lt;br /&gt;
&lt;br /&gt;
Although path nodes have a directional arrow in the editor, it has no impact on most nodes.  Rotating the node does add a corresponding &amp;quot;angle&amp;quot; property to the entity (matching the direction of the arrow).  Certain nodes (path_anim, path_wait, and path_turn, for example) are affected by the &amp;quot;angle&amp;quot; property, but most will ignore it.&lt;br /&gt;
&lt;br /&gt;
= How to use Path Nodes =&lt;br /&gt;
&lt;br /&gt;
Path nodes are placed like any other entity (RMB and select &amp;quot;add entity&amp;quot;, then scroll to &amp;quot;paths&amp;quot;).  They show up as a coloured box with an arrow in the editor (colour varies depending on config.)&lt;br /&gt;
&lt;br /&gt;
Path nodes are useless if they are not linked to another entity (either an AI or another node).  In order to link them, you use the &amp;quot;target&amp;quot; property.  This tells the AI what path node they should go to (or act on) next.  If you type &amp;quot;target&amp;quot; &amp;quot;path_corner_1&amp;quot; in your AI property list, then your AI will walk to &amp;quot;path_corner_1&amp;quot; when the map starts.  Without a &amp;quot;target&amp;quot; property, your AI will not go anywhere.  Once you add a &amp;quot;target&amp;quot; property to either your AI or another node, you should see a colored line connecting the two entities.&lt;br /&gt;
&lt;br /&gt;
Behaviour nodes activate behaviour in order.  In other words, if you want an AI to reach a path_corner, then turn to face a direction, then wait for a time, then play an animation, you need to link the nodes in that order.  &lt;br /&gt;
&lt;br /&gt;
 path_corner ---&amp;gt; path_turn ----&amp;gt; path_wait ----&amp;gt; path_cycleanim -----&amp;gt; next path_corner&lt;br /&gt;
&lt;br /&gt;
== Variation and Randomness ==&lt;br /&gt;
&lt;br /&gt;
It is also possible to target multiple nodes (using &amp;quot;target1&amp;quot;, &amp;quot;target2&amp;quot; etc. spawn args). In this case, the AI will choose one of these nodes with equal probability. &lt;br /&gt;
If the &#039;&#039;&#039;&amp;quot;chance&amp;quot;&#039;&#039;&#039; spawn arg (between 0 and 1) is set on a node, it defines the probability for the AI to choose this path node next when multiple path nodes are targetted.  The chances at any point must not add to greater than 1, or it won&#039;t work properly.  For example, if a path_corner targets two different nodes, you could set &amp;quot;chance&amp;quot; &amp;quot;.75&amp;quot; on one and &amp;quot;chance&amp;quot; &amp;quot;.25&amp;quot; on the other.  This will result in AI choosing the first path 3/4 of the time.&lt;br /&gt;
&lt;br /&gt;
There are now two new spawnargs, &#039;&#039;&#039;&amp;quot;alert_idle_only&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;quot;idle_only&amp;quot;&#039;&#039;&#039; that can be set on path nodes. The nodes are then only chosen when the AI is in that state.  For example, if you set a path_corner as &amp;quot;idle_only&amp;quot;, then the AI will no longer go to that path node when it has been alerted.  This allows the mapper to set a complete set of alternate patrols and actions for AI who have been alerted (like sending them to guard important areas).  (for info on how to use Objectives to alter paths, see [[Objectives#Using_Objectives_Creatively]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that if an AI reaches a node that targets pathnodes that are unavailable (because they are idle_only, and the AI is alert, for example), the AI will stop and no longer proceed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nodes that make the AI walk to a specified location (currently the only one that does this is the path_corner) can have an &#039;&#039;&#039;&amp;quot;move_to_position_tolerance&amp;quot;&#039;&#039;&#039; spawn arg, which defines how close the AI has to be to the destination point to determine the position as reached. Normally, the AI considers the position reached as soon as it is inside its bounding box (most of our humanoid AI are using aas32, so the point would need to be within 16 units from the AI&#039;s origin). This is not always accurate enough, for example when a path_corner is placed in front of a chair where the AI is supposed to sit down, making the AI place half of their back next to the chair.  Smaller numbers mean the AI must get closer, larger numbers are more forgiving.&lt;br /&gt;
&lt;br /&gt;
[Fidcal: I believe the accuracy spawnarg is replaced by the move_to_position_tolerance above. The following likely applies to the new spawnarg anyway.]&lt;br /&gt;
Setting the accuracy spawn arg will change the horizontal size of the bounding box used for checking. If the accuracy is set to negative values (default is -1), the standard bounding box will be used as before.&lt;br /&gt;
&lt;br /&gt;
This spawnarg is available for all entities and can also affect AIs moving towards levers or buttons.&lt;br /&gt;
&lt;br /&gt;
== Triggering ==&lt;br /&gt;
These path nodes will trigger their targets when AI &#039;use&#039; them (as of TDM v2.02):&lt;br /&gt;
&lt;br /&gt;
* path_corner - triggers targets when node is reached&lt;br /&gt;
* path_turn - triggers targets when turn is done&lt;br /&gt;
* path_wait - triggers targets when wait is over&lt;br /&gt;
* path_sit - triggers targets when sitting anim is done, including any final turn&lt;br /&gt;
* path_sleep - triggers targets when lying down anim is done&lt;br /&gt;
* path_anim - triggers targets when anim is done&lt;br /&gt;
&lt;br /&gt;
= Kinds of Path Nodes =&lt;br /&gt;
&lt;br /&gt;
== path_corner ==&lt;br /&gt;
Probably the most common path node, this is a &amp;quot;travel node&amp;quot;.  AI will walk from their current position to this node in as straight a line as possible.  This node must be on the ground and in an area AI can reach.  See [[Pathfinding]] for more information on how to help AI go from one node to another.&lt;br /&gt;
&lt;br /&gt;
To make AI patrol an area, each path_corner node can target the next one in sequence.  If AI reach a node that does not target anything, they will stop there and no longer move without player interaction.  It is possible for two path_corners to target each other, which means the AI will walk from one to the other and back again endlessly.&lt;br /&gt;
&lt;br /&gt;
A single entity (path node or AI) can target more than one path_corner; TDM will randomly choose between the targeted nodes.  Use the following syntax:  &lt;br /&gt;
&lt;br /&gt;
 target path_corner_1&lt;br /&gt;
 target2 path_corner_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the example below, both A and B are path_corner nodes.  On map start, the AI will walk to A, then turn and walk to B, then stop.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Extra note: To make an AI run on patrol add the property/value : &amp;quot;run&amp;quot; &amp;quot;1&amp;quot; to a path_corner on the AI&#039;s patrol and the AI will run to it (then resume walking after it if the next path_corner does not have that property set.) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note that an AI will continue on to their next path_corner after a failed search.  If you do not have at least one path_corner, the AI will return to its original position when their search is complete.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Also note that if the AI is going to stop at a path_corner--perhaps to wait a spell--the path_corner origin should be kept at least 16 horizontal units away from monsterclip and worldspawn brushes.  Otherwise, the stopping animation might not look right.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== path_wait ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node. It does not tell an AI to move anywhere.  This node tells an AI to wait in an idle state for a given amount of time.  Once that time is up, the AI will proceed to whatever the next target is (a path_wait with no target is pretty pointless).  &lt;br /&gt;
&lt;br /&gt;
A path_wait node appears as a small orange box.  It has a directional arrow, but that has no affect on which direction the AI faces in the first place. However, you can set the angle key on the path either by rotating the entity or by setting the key directly to make the AI turn and face this direction before starting to wait. &#039;&#039;&#039;Important:&#039;&#039;&#039; If the angle is 0 make sure it is actually on the entity and not just default.&lt;br /&gt;
&lt;br /&gt;
A path_wait node should have a &amp;quot;wait&amp;quot; property, with the number of seconds the AI should wait there before proceeding.  It can also have a &amp;quot;wait_max&amp;quot; property  which will vary the repeat time. So for example...&lt;br /&gt;
&lt;br /&gt;
    * wait 30&lt;br /&gt;
    * wait_max 40 &lt;br /&gt;
&lt;br /&gt;
...will cause the AI to wait between 30 to 40 seconds before proceeding. If wait_max is set to 0, the AI will always wait exactly the time specified in wait before proceeding. If you set wait to 0, the AI will wait between 0 seconds and the time specified in wait_max. Default values are 2 seconds for wait, and 0 seconds for wait_max, so the AI will always wait exactly 2 seconds.&lt;br /&gt;
&lt;br /&gt;
In the following example, A and B are path_corners, and the small orange box is a path_wait entity.  On map start, the AI will walk to A and wait there for the required amount of time, then turn and proceeds to B.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Note that it does not matter &#039;&#039;&#039;where&#039;&#039;&#039; the path_wait node is placed.  The AI does not actually follow the orange lines (this is not really intuitive, I know).  The example below would cause the exact same behaviour as the example above--in both cases the AI will walk directly from A to B.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another useful example for path_wait is that of the stationary guard who turns to look in different directions periodically.  This can be schematically represented (arrows indicate target links) as:&lt;br /&gt;
&lt;br /&gt;
AI -&amp;gt; path_corner1 -&amp;gt; path_wait1 -&amp;gt; path_wait2 -&amp;gt; path_corner1&lt;br /&gt;
&lt;br /&gt;
Example properties for the path_wait are:&lt;br /&gt;
 wait: 5  (minimum time to wait on action)&lt;br /&gt;
 wait_max: 10  (maximum time to wait on action)&lt;br /&gt;
 angle: 0  (&#039;&#039;&#039;Important&#039;&#039;&#039;:  this property is essential for proper function even if the angle is 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AI walks to or stands at the path_corner.  The next action is to do what is indicated by the first path_wait.  In this example, it tells the AI to face a particular direction for a certain period of time.  This then targets a second path_wait which has the AI face a different direction for a certain period of time.  To complete the cycle, the second path_wait then targets the original path_corner.  The path_corners are necessary because again, the path_wait doesn&#039;t contain pathing or location information.  Without the path_corner, if the AI is caused to wander (e.g. becomes alerted), it might not return to the original standing spot, and instead will do the look angles right where it stands.  The path_corner assures the AI returns to its original position.&lt;br /&gt;
&lt;br /&gt;
== path_turn == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(edit:  I&#039;m not sure why this node is useful, since path_wait can do the same thing. grayman: yes, it&#039;s useful for turning the AI to the correct angle when preparing to lie down or sit down, which doesn&#039;t necessarily involve a path_wait.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This behaviour node tells an AI to turn in place to face a chosen direction.  It does not make the AI walk anywhere.  This is the one node where the directional arrow does seem to matter--the AI turns to face the same direction as the arrow.  Alternately, you can use  the property &amp;quot;angle&amp;quot; and the values below:&lt;br /&gt;
&lt;br /&gt;
* 0 = East (X)&lt;br /&gt;
* 90 = North (Y)&lt;br /&gt;
* 180 = West (-X)&lt;br /&gt;
* 270 = South (-Y)&lt;br /&gt;
* 360 = East(X)&lt;br /&gt;
&lt;br /&gt;
(Actually, to be more accurate, rotating the entity automatically adds the &amp;quot;angle&amp;quot; property to the entity. If you just leave the arrow facing the way it is when you create the entity, there will be no &amp;quot;angle&amp;quot; property, and therefore the AI will not turn.)&lt;br /&gt;
&lt;br /&gt;
Adding a &amp;quot;wait&amp;quot; spawnarg to this node doesn&#039;t seem to do anything.&lt;br /&gt;
&lt;br /&gt;
== path_anim ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node that makes the AI play an animation, once.  When that animation is done, it proceeds to the next target (if any).  This could be used to make an AI walk over to a bookshelf and play a &#039;reaching out&#039; animation, for example.  Other possibilities include peering through a window, picking a carrot off a table and eating it, or running to a spot and cowering.  &lt;br /&gt;
&lt;br /&gt;
The syntax proper syntax is:&lt;br /&gt;
&lt;br /&gt;
 anim  [animation name]&lt;br /&gt;
&lt;br /&gt;
You can see the list of animations names here: [[Animation List]].  Do not use the name of the actual animation file.  &lt;br /&gt;
&lt;br /&gt;
A path_anim can have only one animation, but it is possible for a single entity to target more than one path_anim.  The AI will pick one of the path_anim nodes at random and play that animation.&lt;br /&gt;
&lt;br /&gt;
When you first create the path_anim entity, the directional arrow is meaningless.  However, if you rotate the entity, the &amp;quot;angle&amp;quot; property is added to the entity and is updated based on which direction the arrow is pointing.  That property indicates the direction the AI will face while playing the animation.  &#039;&#039;&#039;This value appears to be necessary to make the animation work.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Tip:  Animation blending doesn&#039;t seem to do very much, so AI often &amp;quot;snap&amp;quot; into position from walking to playing the animation.  For a more natural look, add a path_wait of a few seconds first, so AI transition to their idle pose before playing the animation.&lt;br /&gt;
&lt;br /&gt;
== path_lookat ==&lt;br /&gt;
&lt;br /&gt;
This does not stop the AI, but they will turn their head and look somewhere specific as they walk to their next target.  For the next &#039;&#039;wait&#039;&#039; seconds, turn head to look at the entity given by the &#039;&#039;focus&#039;&#039; spawnarg (defaults to looking at the path_lookat entity itself). This is useful if you want to make sure an AI is looking at a specific spot (or away from a certain spot) during their patrol.  Note the focus entity must not be obscured by monsterclip.&lt;br /&gt;
&lt;br /&gt;
== path_sit ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node that makes the AI sit down at its current location.  See [[Sitting Behaviour for AI]] for more information.&lt;br /&gt;
&lt;br /&gt;
== path_waitfortrigger ==&lt;br /&gt;
&lt;br /&gt;
Waits at a given place until triggered, then proceeds to the next target.  This is useful if you want some control over exactly where the AI is when the players first see it.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;path_waitfortrigger&amp;quot; basically operates like a wall, blocking the AI from proceeding until triggered.&lt;br /&gt;
&lt;br /&gt;
Here are the steps for future reference. Let&#039;s say you want an AI to stand somewhere until a player triggers him, then you want him to walk to path_corner 1.&lt;br /&gt;
&lt;br /&gt;
1. Make a &amp;quot;path_waitfortrigger&amp;quot; pathnode, and have it target &amp;quot;path_corner_1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2. Have the AI target the &amp;quot;path_waitfortrigger&amp;quot; pathnode.&lt;br /&gt;
&lt;br /&gt;
3. Create a trigger_once entity, and target the AI.&lt;br /&gt;
&lt;br /&gt;
The AI will stand where they are at map start and behave as if there are no pathnodes set (ie, he plays idle animations and can be alerted). When the player goes through the trigger, the &amp;quot;path_waitfortrigger&amp;quot; is cleared and the AI will proceed to path_corner_1.&lt;br /&gt;
&lt;br /&gt;
== path_interact ==&lt;br /&gt;
&lt;br /&gt;
This lets the AI interact with an entity (for example a button) in a similar way to frobbing. This will only work for buttons etc, not for inventory items and moveables. The AI will stop and look at the entiy while interacting, but not walk to it, so a path_corner next to the entity is required.  AI will use normal doors and elevators without needing a path_interact.  However, this could be used to make AI turn on lightswitches, open mechanical doors, etc.&lt;br /&gt;
&lt;br /&gt;
You need to add these spawnargs to the path_interact entity:&lt;br /&gt;
&lt;br /&gt;
ent &amp;lt;name of entity to be frobbed by AI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
target &amp;lt;next path entity (if any)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to Make AI do Random Interesting Things (RIT) =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Sotha&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can use the above to make individual AI seem to do Random Interesting Things (RIT) when entering a room. Note that it will work with basic dendritic AI, so you could have multiple AI&#039;s running in several rooms doing things.&lt;br /&gt;
&lt;br /&gt;
1) Build a room with RITs. A statue. A few chairs. Maybe a lit fireplace.&lt;br /&gt;
&lt;br /&gt;
2) On each RIT place the necessary interaction path_nodes to make an AI interact with them:  path_corner to walk over to them; path_sit on each of the chairs, path_anims for warming hands at the fireplace and standing in front of the statue and pondering, etc (A, B &amp;amp; C in image).&lt;br /&gt;
&lt;br /&gt;
3) Place two path_waits (1 &amp;amp; 2 in image) on the ceiling of the room. (They could be anywhere in the room, but it is easiest to manage if they are in the ceiling.)&lt;br /&gt;
&lt;br /&gt;
4) Name one of the path_waits &amp;quot;enter_room_decide_what_to_do.&amp;quot; (1) From that path_wait target each of the RIT path_corners. Set the path_wait &amp;quot;wait 0&amp;quot;. so AI won&#039;t stop there. The idea is to use the path_wait as a simple decision making node. Be sure that the path_wait has no angle-spawnarg. If it does, the AI will turn towards the angle each time he targets the node.&lt;br /&gt;
&lt;br /&gt;
5) Name the other path_wait &amp;quot;exit_room_decide_what_to_do.&amp;quot; (2) Make each RIT final path_node  target this path_wait. Make the path_wait target other rooms with similar decision making path_waits.&lt;br /&gt;
&lt;br /&gt;
6) Done.&lt;br /&gt;
&lt;br /&gt;
[[Image:Rits.jpg]] &lt;br /&gt;
&lt;br /&gt;
AI will come into the room, select A, B or C at random, and then leave.  Next time they enter, they&#039;ll again pick at random.&lt;br /&gt;
&lt;br /&gt;
This could be used to make servants to run around a mansion, cleaning, making food, taking sitting breaks, visit the toilet, etc. You could build room decision making network separately for different AI. Servants clean, cook and take breaks. Guards patrol, make random deviations once in a while, and of course take breaks. Controlling the RIT path_corner chance-spawnarg gives you control what RITs the AI do more likely.&lt;br /&gt;
&lt;br /&gt;
Please see the dedicated RIT network article for more details. [[RIT Networks]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Switching from one Path network to another =&lt;br /&gt;
&lt;br /&gt;
Suppose you want to have an AI patrol outside a mansion for the first part of a mission, and then change his route to patrol in another location later?&lt;br /&gt;
&lt;br /&gt;
It is possible to change the &amp;quot;target&amp;quot; property on a path_corner by using &#039;&#039;atdm:target_changetarget.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Target the atdm:target_changetarget entity at the pathnode you wish to alter.  Use the following spawnargs:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;  &amp;quot;[new path_corner]&amp;quot;&lt;br /&gt;
and/or&lt;br /&gt;
&amp;quot;remove&amp;quot; &amp;quot;[old path_corner]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then add a trigger that targets the atdm:target_changetarget.&lt;br /&gt;
&lt;br /&gt;
When triggered, the new path_corner will be added and the old removed, sending the AI to a new path network.  This no doubt has vast potential for variation and creativity that has yet to be explored.  One simple example would be a &amp;quot;changing of the guard&amp;quot; moment, where some guards leave their posts and go to their barracks to sleep, while others take over for them.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other ideas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Doormen&#039;&#039;&#039;-- An AI (or the player) walks up to the door and knocks on it. AI inside is triggered to walk over to the door and open it, then go back to his regular duties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Abandon ship!&#039;&#039;&#039; -- When triggered, all AI drop what they&#039;re doing and start running for the exits.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lights out!&#039;&#039;&#039; -- At a specific time, all AI stop what they&#039;re doing and walk to their beds to go to sleep.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Re-use, recycle&#039;&#039;&#039; -- AI that are stuck back in a portion of the map the player won&#039;t be coming back to could be told to walk to a new portion of the map and assume some job there.&lt;br /&gt;
&lt;br /&gt;
It&#039;&#039;&#039;&#039;s a trap!&#039;&#039;&#039; -- Player walks down a hall and hits a trigger that causes AI to quickly position themselves at the only exits.&lt;br /&gt;
&lt;br /&gt;
= Flee Points =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do NOT target the AI to a flee point; AI will automatically go to a flee point if in danger. Just make available path_flee_point entities at suitable places where you would like your AI to flee to.&lt;br /&gt;
&lt;br /&gt;
On the path_flee_point entity:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;is_guarded&amp;quot;, a fleeing AI, eg, a civilian, would give this preference (but it is up to the mapper to actually provide a guard there.)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;team&amp;quot;, only AI on this team would use this flee point, also required for &amp;quot;friendly&amp;quot; flee points per below.&lt;br /&gt;
&lt;br /&gt;
This is how the code works:&lt;br /&gt;
* The AI tries to determine the nearest friendly (their team specified) guarded flee point and flee to it.&lt;br /&gt;
* If there is no friendly guarded flee point, the AI tries to find the nearest friendly flee point (on friendly team) and run to it.&lt;br /&gt;
* If this also fails, the AI tries to find an AAS area far from the enemy and run there.&lt;br /&gt;
* If the enemy is still visible when the AI reaches his destination, he chooses the farthest friendly guarded flee point to run to, &lt;br /&gt;
* if this fails, the farthest friendly flee point, &lt;br /&gt;
* and if this also fails falls back to choosing an AAS area far from the enemy to run to.&lt;br /&gt;
* So neither the priority nor the target spawn arg have any function here, it is not possible to weight the flee points. The AI will choose one automatically.&lt;br /&gt;
&lt;br /&gt;
A problem occurs when the AI doesn&#039;t find any appropriate flee points but also no AAS area that is far away enough from the enemy. In this case, he will just stand there. Maybe he should either cower and be afraid in this case or just run around like a mad chicken?&lt;br /&gt;
&lt;br /&gt;
Whether a fleeing AI passes on info to other AI as to the source of their alert (ie so armed guard would go to investigate to the right place whereas another civilian might also flee to the farthest point.)&lt;br /&gt;
Yes, they do. The cry for help bark is propagated to other AI and carries information about the last alert position.&lt;br /&gt;
&lt;br /&gt;
Armed AI will also flee if their health points drop to a certain level? Where is that determined?&lt;br /&gt;
This is determined by the health_critical spawn arg.&lt;br /&gt;
&lt;br /&gt;
= Untested Nodes =&lt;br /&gt;
&lt;br /&gt;
I have not personally tested the following, so I&#039;m just going by their editor descriptions.  They may or may not work as described.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== path_cycleanim ==&lt;br /&gt;
&lt;br /&gt;
The AI stays in place and loops the selected animation, either for a specified amount of time (using the &#039;wait&#039; property) or until triggered.  Syntax needed.&lt;br /&gt;
&lt;br /&gt;
== path_hide ==&lt;br /&gt;
&lt;br /&gt;
Supposedly deactivates and stops rendering the AI.  &lt;br /&gt;
&lt;br /&gt;
Turns out this doesn&#039;t work well with TDM...makes AI invisible but they still talk and occupy space.  To remove an AI from the map, try grayman&#039;s approach:&lt;br /&gt;
&lt;br /&gt;
 Create a [b]func_remove[/b] with this spawnarg:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;target&amp;quot; &amp;quot;&amp;lt;AI&#039;s name&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 At the point in his path where you want him to disappear, place a [b]trigger_once_entityname[/b] with these spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;entityname&amp;quot; &amp;quot;&amp;lt;AI&#039;s name&amp;gt;&amp;quot;&lt;br /&gt;
 &amp;quot;target&amp;quot; &amp;quot;&amp;lt;func_remove&#039;s name&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When the AI walks through the [b]trigger_once_entityname[/b], it recognizes him, triggers the [b]func_remove[/b], and that takes the AI out of the game.&lt;br /&gt;
&lt;br /&gt;
I wrapped the AI&#039;s final path corner in a trigger_once_entityname and gave the trigger the keyword pair &amp;quot;entityname &amp;lt;AI_name&amp;gt;&amp;quot;. (The docs don&#039;t tell you about this key, but the game will error out if it&#039;s not there, and tell you it&#039;s missing. A classic &amp;quot;trial by error&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
== path_show ==&lt;br /&gt;
&lt;br /&gt;
Starts rendering the AI.  I would assume this one would be linked to a path_waitfortrigger, to create AI that spawn when triggered.  This could be used to create the effect that an AI just came through a doorway or around a corner.&lt;br /&gt;
&lt;br /&gt;
== path_attack ==&lt;br /&gt;
&lt;br /&gt;
Used to script AI attacking a particular enemy, for scripted sequences I guess. AI will continue on to the next path entity if it kills the enemy.&lt;br /&gt;
&lt;br /&gt;
Questions:  How do you define who the AI attacks?&lt;br /&gt;
&lt;br /&gt;
[Fidcal]: Just found this - &amp;quot;Character will attack the character specified by &#039;enemy&#039; key. Character will go to next path when enemy dies or when activated.&amp;quot; Not tested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.06&amp;diff=20056</id>
		<title>What&#039;s new in TDM 2.06</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.06&amp;diff=20056"/>
		<updated>2018-05-24T06:21:34Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Coding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- keywords whats new --&amp;gt;&lt;br /&gt;
{{notreleasedyet|2.06}}&lt;br /&gt;
See the [http://bugs.thedarkmod.com/roadmap_page.php roadmap] on our bugtracker.&lt;br /&gt;
&amp;lt;!-- See the [http://bugs.thedarkmod.com/changelog_page.php?version_id=71 changelog] on our bugtracker. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{released|2.06|XXXX-XX-XX}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;The Dark Mod 2.06 is a major step forward!&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
It is the first TDM release to offer a native 64-bit build with &#039;&#039;&#039;EFX sound support&#039;&#039;&#039; for all audio OpenAL hardware.&lt;br /&gt;
&lt;br /&gt;
It is also the first TDM release to offer true &#039;&#039;&#039;multi-core support&#039;&#039;&#039; via patches from Cabalistic&#039;s VR branch.&lt;br /&gt;
&lt;br /&gt;
Another first? This is the first TDM release to offer &#039;&#039;&#039;video codec support&#039;&#039;&#039; other than ROQ via FFMPEG.&lt;br /&gt;
&lt;br /&gt;
A substantial amount of work was done to replace legacy OpenGL methods with their equivalents in modern OpenGL.&lt;br /&gt;
&lt;br /&gt;
The Mission browsing experience via smooth &#039;&#039;&#039;Scrolling GUI Menus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
GUI scaling menu options exist now with a visual preview area.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, Duzenko and Stgatilov have implemented an experimental &#039;&#039;&#039;Soft Shadows option&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
which has some distance based softening and anisotropic sampling correction. &lt;br /&gt;
&lt;br /&gt;
(Some prior Soft Shadow research and implementation borrowed or approximated &lt;br /&gt;
&lt;br /&gt;
from SteveL&#039;s old Soft Shadow code for 2.04 era development builds.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Cvars:&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
* com_smp 1: allows the frontend and backend to run on different threads. same as the multi-core enhancement option in the GUI&lt;br /&gt;
* com_fixedTic 1: uncapped FPS&lt;br /&gt;
* r_useGLSL 1: Enables the GLSL backend. Is automatically enabled when enabling Soft Shadows&lt;br /&gt;
* r_useFBO 1: Enables Frame Buffer Objects. Uses less fillrate and allows for new rendering options&lt;br /&gt;
* r_fboSharedDepth 1: Read and Write to the Depth buffer in a feedback loop setup. Offers a big performance boost for Intel GPU&#039;s&lt;br /&gt;
* r_fboSharedColor 1: Read and Write to the Color buffer in a feedback loop setup. Offers a big performance boost for Intel GPU&#039;s (do not use on Nvidia).&lt;br /&gt;
* r_fboResolution: Multiplies your native resolution times your input value. 2 means double resolution. Works like SSAA. Very high performance cost.&lt;br /&gt;
* r_fboColorBits: Set either 16 or 32 bit color&lt;br /&gt;
* r_useMapBufferRange 1: Improves VBO performance. Some render artifacts if you enable this with com_smp and lightgem interleave.&lt;br /&gt;
* r_useBfgPortalCulling 1: AnonReclaimer&#039;s port of culling code from Doom 3 BFG. Improves cache behavior and is meant to be paired with com_smp and r_useMapBufferRange.&lt;br /&gt;
* r_cinematic_legacyRoq 1: Decode ROQ videos with old Doom 3 code rather than FFMPEG. It may improve performance for some users.&lt;br /&gt;
&lt;br /&gt;
* r_softshadowsradius: Determines how large the light center is for light sources. Larger values soften shadows more.&lt;br /&gt;
* r_softshadowsquality: Determines how many gradients for shadows. Larger values produce smoother blending at more performance cost.&lt;br /&gt;
* r_shadowPolygonFactor: Set to 1 to reduce light leak artifacts in Shadows.&lt;br /&gt;
* r_nvidiaOverride 1: forces r_useFBO if you have nvidia hardware and soft shadows enabled&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Toggling Creep!&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
You can now setup a key bind for toggling creep.&lt;br /&gt;
&lt;br /&gt;
To use you must define a toggle in Darkmod.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bind &amp;quot;&amp;lt;preferred key&amp;gt;&amp;quot; &amp;quot;toggle tdm_toggle_creep 0 1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
replace &amp;lt;preferred key&amp;gt; with whatever key you wish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use CTRL, you will need to remove:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bind &amp;quot;CTRL&amp;quot; &amp;quot;_button5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Experimental Soft Shadows, Anti-Aliasing, FBO and You.&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current Soft Shadows method has some rendering bugs for some hardware vendors&lt;br /&gt;
when MSAA is enabled in TDM. &lt;br /&gt;
&lt;br /&gt;
r_useFBO completely disables MSAA but offers resolution scaling (see workaround 3 below).&lt;br /&gt;
&lt;br /&gt;
Additionally, without r_useFBO Nvidia and possibly other hardware produces &lt;br /&gt;
flickering artifacts on noSelfShadows objects. &lt;br /&gt;
&lt;br /&gt;
For this reason the r_nvidiaOverride cvar forces r_useFBO on when Soft Shadows are enabled.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are the workarounds for these issues:&lt;br /&gt;
&lt;br /&gt;
* 1) Increase resolution to where AA is not needed&lt;br /&gt;
* 2) Use Resolution Scaling (DSR) in your video driver and set TDM resolution higher than your native resolution&lt;br /&gt;
* 3) Use in-game resolution scaling r_useFBO 1 and r_fboResolution 2 (or higher)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: when r_useFBO is enabled along with r_nvidiaOverride, the AA settings in the GUI are converted&lt;br /&gt;
to r_fboResolution scaling values to approximate SSAA. &lt;br /&gt;
&lt;br /&gt;
Not every setting will be ideal for every monitor resolution so if you wish to tweak this &lt;br /&gt;
disable r_nvidiaOverride and set r_fboResolution to your preferred value&lt;br /&gt;
( 1.25, 1.5, 1.75, and 2.0 are sweet spots for resolution scaling). &lt;br /&gt;
&lt;br /&gt;
If you use this mode, you may see some skyboxes with bright artifacts. This only affects a few missions&lt;br /&gt;
that use the Portal Sky feature. r_useFBO will also cause glass or transparent materials to render&lt;br /&gt;
strange discontinuities. They are generally not easy to see but may annoy you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4) Disable in-game AA and set SSAA in your driver settings also set r_useFBO 1.&lt;br /&gt;
* 5) Disable in-game AA, set FXAA or MLAA in your driver settings also set r_useFBO 1. (best performance)&lt;br /&gt;
* 6) Enable in-game AA, set Transparency AA (SSAA method) in your driver settings and set r_useFBO 0.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TDM 2.07 (SVN unstable) currently has MSAA support with FBO so much of the above is already resolved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Coding ==&lt;br /&gt;
&lt;br /&gt;
* Greebo and stgatilov merged 64-bit support from the Dhewm3 branch&lt;br /&gt;
* Cabalistic, duzenko and stgatilov added initial Multi-Core Support partly ported from Doom 3 BFG&lt;br /&gt;
* Cabalistic moved the LightGem into its own dedicated session for better threading support&lt;br /&gt;
* Greebo and Stgatilov added FFMPEG video playback support&lt;br /&gt;
* Blue_Pill, duzenko, stgatilov, and grayman further improved uncapped FPS support&lt;br /&gt;
* stgatilov added SIMD support to Linux and x64&lt;br /&gt;
* stgatilov optimized idClip::Translation&lt;br /&gt;
* duzenko merged Mh Vertex Buffer Object &amp;quot;MapBufferRange&amp;quot; optimization&lt;br /&gt;
* AnonReclaimer added support for Doom 3 BFG style culling: r_useBfgPortalCulling&lt;br /&gt;
* duzenko replaced all legacy (pre 2.0) OpenGL with modern equivalents&lt;br /&gt;
* duzenko optimized some of the loops in the render backend&lt;br /&gt;
* stgatilov convert 90-bit FPU math to modern 32-bit or 64-bit optimized floats and fix precision issues&lt;br /&gt;
* nbohr1more and Tels increased the &amp;quot;active contacts&amp;quot; physics limit to 128&lt;br /&gt;
&lt;br /&gt;
* Greebo, stgatilov and duzenko removed legacy library dependencies like Boost and reorganized the code so that the DLL just has external libraries like FFMPEG whereas the executable now contains the Game code exclusively&lt;br /&gt;
&lt;br /&gt;
== Graphics ==&lt;br /&gt;
&lt;br /&gt;
* duzenko, Stgatilov and SteveL added initial support for Soft Shadows&lt;br /&gt;
* duzenko GLSL backend based loosely on Pat Raynor&#039;s Doom 3 branch&lt;br /&gt;
* duzenko and SteveL added initial support for Frame Buffer Objects&lt;br /&gt;
* duzenko moved the Postprocess &amp;quot;HDR-Lite&amp;quot; shader setup to the backend&lt;br /&gt;
* duzenko improved the GLSL AmbientCubicLight to use industry standard &amp;quot;Irradiance cubemap&amp;quot;&lt;br /&gt;
* duznko new &amp;quot;makeIrradiance&amp;quot; material keyword to convert standard skybox to Irradiance.&lt;br /&gt;
* grayman and duzenko improved security camera rendering&lt;br /&gt;
* nbohr1more shadows no longer pulse and flicker when holding a light in noclip mode&lt;br /&gt;
* duzenko GUI text now renders when using the &amp;quot;Simple&amp;quot; texture based ambient&lt;br /&gt;
* duzenko ambient specular is now oriented towards the sky like to match the diffuse ambient shading&lt;br /&gt;
&lt;br /&gt;
== Assets ==&lt;br /&gt;
&lt;br /&gt;
* Rich_is_Bored supplied an improved CubicLight lamp texture&lt;br /&gt;
* Arcturus new Horse animations&lt;br /&gt;
* Dragofer&#039;s Stagecoach models&lt;br /&gt;
* Epifire&#039;s additional Steampunk objects&lt;br /&gt;
* Springheel&#039;s new architectural modules&lt;br /&gt;
* Goldwell fixed some of Airship Ballet&#039;s chest prefabs&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
* Durandall&#039;s scrolling mission lists&lt;br /&gt;
* Springheel&#039;s improved menu screen textures&lt;br /&gt;
* Obsttorte and Tels support for GUI scaling (new menu option)&lt;br /&gt;
* AluminumHaste&#039;s new Splash Screen images&lt;br /&gt;
* AluminumHaste added an FOV slider&lt;br /&gt;
* grayman reformatted the Mission Statistics page&lt;br /&gt;
&lt;br /&gt;
== Gameplay ==&lt;br /&gt;
&lt;br /&gt;
* grayman and duzenko did significant work to improve the security camera system&lt;br /&gt;
* grayman All food gives default health&lt;br /&gt;
* nbohr1more support for Toggle Creep&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
* Greebo and Stgatilov support for EFX (EAX equivalent) ported from Dhewm3&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
* Skina supplied updated Russian fixes&lt;br /&gt;
* Petike the Taffer supplied Slovak fixes&lt;br /&gt;
* Anderson supplied Romanian fixes&lt;br /&gt;
&lt;br /&gt;
{{whatsnew|sort=206}}&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=19980</id>
		<title>Location Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=19980"/>
		<updated>2018-05-15T13:46:39Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Example script to turn entities on/off when player enters a location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to setup &#039;&#039;&#039;locations&#039;&#039;&#039; (also called &amp;quot;location zones&amp;quot; or &amp;quot;zones&amp;quot;) in your level, and then use these to:&lt;br /&gt;
&lt;br /&gt;
* fade to different ambient &#039;&#039;&#039;light levels&#039;&#039;&#039; for each zone&lt;br /&gt;
* fade between different ambient &#039;&#039;&#039;sounds&#039;&#039;&#039; in each zone&lt;br /&gt;
* run &#039;&#039;&#039;scripts&#039;&#039;&#039; automatically when the player enters or exits a zone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to use four types of entities in your map: &lt;br /&gt;
&lt;br /&gt;
* a special global entity (e.g. add only one, the position does not matter): &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
* a special global light entity named &#039;&#039;&#039;ambient_world&#039;&#039;&#039; &lt;br /&gt;
* multiple &#039;&#039;&#039;info_location&#039;&#039;&#039; and &#039;&#039;&#039;info_locationseparation&#039;&#039;&#039; entities&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
:Note:  Two alternative ways to get ambient sounds in your map are using speakers ([[Adding ambient Sounds to your Map]]), and using triggers ([[Ambient Sounds - Zone (using triggers)]]).  Speakers are good if you only want your ambient to cover a definite radius and have a very simple setup.  Triggers are basically obsoleted by the method in this tutorial.  The only time you might still want to use a trigger-system is if you want a ambient sound to begin at a place where for some reason you can&#039;t create a portal to mark the zone boundary, but you can still have a trigger brush.  There are some issues with a trigger system, too (f.i. their CPU and memory usage and more importantly they are not failsafe like locations are), that make the method in this tutorial superior.  &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The atdm:location_settings entity ==&lt;br /&gt;
&lt;br /&gt;
Create a &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity in your blueroom (i.e., a room off to the side the player will never enter) or somewhere else in your map:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Default values ===&lt;br /&gt;
&lt;br /&gt;
The location_settings entity takes a few &#039;&#039;default&#039;&#039; spawnargs related to the ambient light settings:&lt;br /&gt;
&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_time&amp;quot;|&amp;quot;ambient_light_fade_time&amp;quot;]]&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_delay&amp;quot;|&amp;quot;ambient_light_fade_delay&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
For their meaning and values, please refer to their sections.&lt;br /&gt;
&lt;br /&gt;
=== update_period ===&lt;br /&gt;
&lt;br /&gt;
The spawnarg &#039;&#039;&#039;update_period&#039;&#039;&#039; specifies the time in seconds between updates. A good value is 0.2, e.g. 5 times per second. That avoids to run the script too often, and still allows seamless transitions.&lt;br /&gt;
&lt;br /&gt;
=== Sound Shaders ===&lt;br /&gt;
&lt;br /&gt;
In the entity&#039;s spawnargs, put the names of all the ambient sounds you want to play in your map.  (This pre-loads the sounds into the speaker so there isn&#039;t a pause when they start playing.)  Put it in one of these property/value forms (without the quote marks):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_streets&amp;quot; &amp;quot;city_night01_loop_z&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_mansion&amp;quot; &amp;quot;sound/ambient/ambience/mansion_tense01a.ogg&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The left hand spawnarg should have a &amp;quot;snd_&amp;quot; prefix, and any name, but most useful is probably the name of the area it is for.  You&#039;ll use this name again when you place the location markers or if you use the override system.  &lt;br /&gt;
&lt;br /&gt;
The right hand value points to the actual sound file that will play.  You can enter either the soundshader name, or the address where the sound file is (but see footnote).  You can see the soundshader names of ambient-ready sounds in the sub-folder &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot;.   You can find the address of the sound files in &amp;quot;Darkmod/sound/ambient/ambience&amp;quot; (remember to start the address with &amp;quot;sound&amp;quot; in the spawnarg).  You can also listen to the sounds at that location.  They are are in .ogg format. But it&#039;s easier to just create a speaker (left-click&amp;gt;speaker) and it will give you a sound directory where can play sound files and find the names. No searching through sound folders outside of DR (thanks to Badcog for that tip).&lt;br /&gt;
&lt;br /&gt;
:Note that it is very easy to add custom ambients with this system.  Just create a folder in your .pk4 (a .zip file renamed to .pk4) and name the folder &amp;quot;sound&amp;quot;, with another folder inside it named after your FM or an abbreviation.  Put your custom sound inside that second folder.  (E.g., I have a custom ambient named Frozen.ogg, and my FM&#039;s name is Patently Dangerous.  So in my .pk4 was &amp;quot;sound/patent/frozen.ogg&amp;quot;.  Note that ambients must be in either .ogg or .wav format. Now in your speaker_zone_ambient, just put the sound&#039;s address in the spawnarg (but see footnote).  In my case, I have &amp;quot;snd_warehouse&amp;quot; &amp;quot;sound/patent/frozen.ogg&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
It is worth noting that one special &amp;quot;sound&amp;quot; is already loaded by default.  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_silence&amp;quot; &amp;quot;silence&amp;quot;&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
You can see it if you check &amp;quot;Show Inherited Properties&amp;quot;.  This is the sound you use to turn &amp;quot;off&amp;quot; the ambient sounds playing, so there is silence in the zone.&lt;br /&gt;
&lt;br /&gt;
=== On Shader Names ===&lt;br /&gt;
&lt;br /&gt;
One footnote on the sound shader names. The &#039;&#039;shader tdm_ambient_ambience_zoned.sndshd&#039;&#039; has a special command (&amp;quot;leadin&amp;quot;) for its sounds that begins the ambient with a short pause.  This is to pre-empt a possible *pop* of sound for loud ambients which can occur when the player&#039;s system slows down (and only occasionally, at that), so the player never hears the pop.  (It&#039;s a quirk of how Doom3 does fade-ins; when you start a new sound, you have to rapidly fade it out first, like .001 seconds, then slowly fade back in.  But if the system slows and the ambient starts loud, it might stretch that .001 to something audible.)&lt;br /&gt;
 Edit:Baddcog- These seem to now have been appended with a _z if you look at sound names in speaker dialog.&lt;br /&gt;
&lt;br /&gt;
If you alternatively use the address or the shader name from &amp;quot;Darkmod/sound/tdm_ambient_ambience.sndshd&amp;quot; (which lack the &amp;quot;leadin&amp;quot; property) it will otherwise work fine, but you won&#039;t be protected from that occasional little pop (at least until we find another fix).  For ambients that start quietly or areas that won&#039;t slow the system down, it will probably never even be a problem and the player will never hear it, so using the address is fine, or using the tdm_ambient_ambience shader name if you don&#039;t want the tiny pause for whatever reason.  But if you want to control it, use the tdm_ambient_ambience_zoned name, and for a custom sound, to pre-empt the pop you&#039;ll need to use a custom shader with the &amp;quot;leadin&amp;quot; line.  Use the &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot; as a template to do that, and name the custom shader file something like YourFMsName.sndshd, and put it in the &amp;quot;sound&amp;quot; folder in your .pk4.&lt;br /&gt;
&lt;br /&gt;
=== Sound Properties ===&lt;br /&gt;
&lt;br /&gt;
Regarding properties, the speaker (the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity is a speaker in disguise :) has by default the properties &amp;quot;omni&amp;quot;, &amp;quot;global&amp;quot;, and &amp;quot;looping&amp;quot; already turned on, so that all sounds played are heard everywhere, from no direction, and will loop.  If you change these properties (e.g., for one ambient) the change will apply to all ambients on the speaker.  So you probably don&#039;t want to turn these properties off.  &lt;br /&gt;
&lt;br /&gt;
Another spawnarg worth noting is &amp;quot;s_volume&amp;quot;.  Since the location_settings also acts as a speaker, this will work to change volume (0=full volume, -10=half volume, -60=silence), again globally on all the ambients playing on it.  Unless you have a very good reason for doing so however (e.g., you want all your ambients much louder or quieter) you probably don&#039;t want to use the s_volume spawnarg.  If you want to change the volume of a specific ambient, you can do so on the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity with the &amp;quot;volume&amp;quot; spawnarg as described below (note some of the issues involved with volume changes there as well), not the location_settings entity (or directly in the sound&#039;s soundshader).  &lt;br /&gt;
&lt;br /&gt;
Your entity will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Speaker4.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sound Override ===&lt;br /&gt;
&lt;br /&gt;
From version 2.04, an &amp;quot;override&amp;quot; property for sounds has been added to the location settings entity. The purpose is to allow a mapper to easily override the location ambient to play their own sound, such as an ambient when a discovery is made, to build tension, action music when the player is seen, or for reading a book, etc., and then return to the location sounds when it&#039;s done. &lt;br /&gt;
&lt;br /&gt;
The default value for &amp;quot;override&amp;quot; is &amp;quot;0&amp;quot;, meaning override is turned off, so the location ambients play as normal. Although it looks boolean, the data type is a string, so it takes any characters. If at any time in-game you dynamically change &amp;quot;override&amp;quot; to any non-zero value (I&#039;ll explain how below), it will override the location ambients to allow you to play your own sound as long as it is non-zero. To turn location ambient sounds back on, you change &amp;quot;override&amp;quot; back to &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you change &amp;quot;override&amp;quot; to one of the pre-cached sound names (that is, a name with the &amp;quot;snd_&amp;quot; prefix mentioned above, such as &amp;quot;snd_alert&amp;quot;), then the location system will fade out the location ambient and play the ambient sound you registered under that name as an override ambient. If you open the console, it will report that the override ambient is playing. The override ambient will continue to play until override is changed back to zero or to another override ambient. This means if you just want to play a one-shot ambient, you need to use a script with a wait function that waits the duration of the ambient then turns override off to restore the location ambient, otherwise it will loop. Using the function sys.waitFor( $[speaker_name]); after running the speaker is supposed to automatically wait the duration, but this needs to be tested.  &lt;br /&gt;
&lt;br /&gt;
If you change the override property to another value (not a sound name) such as &amp;quot;1&amp;quot;, it will simply turn the system off, allowing the mapper to play a speaker in the silence if they prefer. &lt;br /&gt;
&lt;br /&gt;
There are two basic ways to change the &amp;quot;override&amp;quot; property dynamically, calling a script and triggering a target_setKeyVal entity in-game. &lt;br /&gt;
&lt;br /&gt;
1. Script. The script function to change a property on an entity is $tdm_location_settings_1.setKey( &amp;quot;override&amp;quot;, &amp;quot;[snd_name]&amp;quot;); to turn on an override sound and $[tls_1].setKey( &amp;quot;override&amp;quot;, &amp;quot;0&amp;quot;);  to turn the location ambients back on. Note because it&#039;s a string data type, you need to put zero in quote marks/inverted commas. Also be sure to use the right name for the location settings entity. It may not have a &amp;quot;_1&amp;quot; suffix. &lt;br /&gt;
&lt;br /&gt;
2. Target_setKeyVal. At the bottom of the entity list is target_setKeyVal (note it&#039;s not with other target entities). Create one of these entities and have it target the location settings entity (e.g., enter a property/key &amp;quot;target&amp;quot; &amp;quot;tdm_location_settings_1&amp;quot;). Now add the property/key &amp;quot;keyval&amp;quot; &amp;quot;override;snd_name&amp;quot; to turn on the override sound. Note you separate the propery and key with a semicolon and no space. Now when you trigger that entity with a trigger brush, button, or anything else, it will change the propery and your override ambient will fade in.  You can have another target_setkeyval entity with &amp;quot;keyval&amp;quot; &amp;quot;override;0&amp;quot; to turn override off and turn the location based ambients back on. &lt;br /&gt;
&lt;br /&gt;
The tdm_location_settings entity has also got new properties for fading behavior. Thus, the mapper can make the override ambient fade in as normal, or have it blast in with no fade-in if they want. These properties are the same &#039;fading&#039; type spawnargs as are on the info_location settings described below, and work in the same way, except they are on the location settings entity and only apply to override ambients. (Volume is not included however. You&#039;d just use the speaker property &amp;quot;s_volume&amp;quot; directly, but you&#039;d need to restore it after the override is over if you don&#039;t want the change applying to all sounds.) You can change them dynamically in the same way as override. If you have multiple overrides, some with fading and some without, and want to revert to the default fading without looking it up, you can enter &amp;quot;-1&amp;quot; as the value of a property and it uses the default value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are finished with the ambient sound part now.&lt;br /&gt;
&lt;br /&gt;
== The Ambient Light ==&lt;br /&gt;
&lt;br /&gt;
You need to create an ambient light in your level. This will cover the entire level, and provide a minimum default light for when there is no other light covering a surface:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;{{RMB}} -&amp;gt; Create light&#039;&#039;&#039;&lt;br /&gt;
# Move the light&#039;s origin to the center of your map, and drag its size so that it covers your entire map, and then some more. Remember to increase the size of that light when you build more area into your map!&lt;br /&gt;
# Open the light inspector (default shortcut {{key|L}}) and set the light texture to &#039;&#039;&#039;lights/ambientlightnfo&#039;&#039;&#039;&lt;br /&gt;
# Set the color of the light to a reasonable default, f.i. &amp;quot;.08 .08 .08&amp;quot; This value will be used when a zone has no other ambient light settings&lt;br /&gt;
# Open the entity inspector (default shortcut {{key|N}}) and set the name of the light to &#039;&#039;&#039;ambient_world&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The last step is important!&lt;br /&gt;
&lt;br /&gt;
You are done now with the global ambient light.&lt;br /&gt;
&lt;br /&gt;
== The Location Entities ==&lt;br /&gt;
&lt;br /&gt;
Now you need to set up the location system so the game knows where the zones are, and their boundaries where changes will happen.  A location is basically any area that&#039;s closed in by brushes and marked portals and contains an info_location entity. Unlike a vis-portaled area (which is one area between [[vis_portals]], a.k.a. a &amp;quot;leaf&amp;quot;), a zone can cover more than one portaled area (&amp;quot;leaves&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
As an aside, locations are also used for setting the EAX properties in the area (e.g., the echo-y-ness of a big hall or cave, or the dullness of a small carpeted room).  So you have a good reason to have them even in addition to handling ambient sounds and lights.  &lt;br /&gt;
&lt;br /&gt;
=== info_locationseparator ===&lt;br /&gt;
&lt;br /&gt;
As I suggested above, you have to mark all the portals leading in and out of a zone by hand.  You do this with an entity called a &#039;&#039;&#039;info_locationseparator&#039;&#039;&#039;.  Create one so it touches or pierces the portal you want as a boundary, and it will mark that portal as a location boundary. (Note, you only make one separator per portal. In the photo example below, the one separator is piercing the portal.) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_locationseparator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t touch a portal with this entity, than it will not register in the game as the boundary to a new zone, and the zone will continue into the area on the other side of the portal.  This happens even if you have a second info_location (described below) on the other side (the game will just pick one and use that for the whole zone).  This can be a good thing because, say you have a mansion with 30 portals inside.  You can cover the whole area inside it by just marking the 2 or 3 portals leading into the mansion area through the doors and open windows, and everything inside that marked area will be counted as one location (just don&#039;t miss marking an exit, or have an un-portaled gap to the outside between brushes, or the location will leak outside.  It has to be hermetically sealed).  &lt;br /&gt;
&lt;br /&gt;
I have read discussion that a door touching a portal marks it as a location boundary, but in my experiments the door did not create a new location and I still had to use a info_locationseparator over the portal to register it as a boundary.&lt;br /&gt;
&lt;br /&gt;
=== info_location ===&lt;br /&gt;
&lt;br /&gt;
Now, inside the zone you want to have, create an &#039;&#039;&#039;info_location&#039;&#039;&#039; entity:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_location&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Anywhere in the space of the zone is fine.  Name it the name of the zone you want (to make it easy to find when you push {{key|J}}).&lt;br /&gt;
&lt;br /&gt;
== Settings per location/zone ==&lt;br /&gt;
&lt;br /&gt;
On each info_location, you can set multiple spawnargs that adjust the light or sound for that location, as well&lt;br /&gt;
as run scripts. We cover them next:&lt;br /&gt;
&lt;br /&gt;
=== Ambient sound ===&lt;br /&gt;
&lt;br /&gt;
Now create a spawnarg property of &amp;quot;ambient&amp;quot; with the value being the speaker-name of the sound you used in the location_settings entity above (NOT the soundshader name or file name).  For example, &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;ambient&amp;quot;    &amp;quot;snd_streets&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will send a command to the location_settings (in its speaker capacity) to play the ambient it has registered under &amp;quot;snd_streets&amp;quot; that you entered.  When you enter a new zone, in turn, the new info_location sends a command to the speaker to turn off that ambient and start a new one.  &lt;br /&gt;
&lt;br /&gt;
If you wanted to have no ambient playing in the zone (and turn off any ambient started from another zone), you would use &amp;quot;snd_silence&amp;quot; as the value to command the speaker to turn off.  Also, if you have an info_location with no &amp;quot;ambient&amp;quot; value at all, it will also turn off the ambient (in the present version of this system).  That means if you make a new location but want the same ambient playing in it as the location next to it, you still need to add the ambient name for the already-playing ambient for it to continue playing into the new zone; otherwise it will turn off.  &lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Here are two info_locations on two sides of a portal, with one info_locationseparator touching the portal (actually piercing it), and with each info_location containing the name of the ambient that will play in its respective zone.&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_streets.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_silence.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it.  The ambients will now turn on when you enter a zone and turn off when you enter a new zone, turning on the new ambient in that new zone (unless it&#039;s the same ambient, then it just keeps playing, useful e.g., if you want 2 different EAX but 1 ambient playing).  If you open up the console, you should see a message saying that a new ambient is now playing in your current location, naming the ambient and location.&lt;br /&gt;
&lt;br /&gt;
=== Sound Fading ===&lt;br /&gt;
&lt;br /&gt;
Finally, there are a few other spawnargs on the info_locations that you usually don&#039;t have to worry about (with the possible exception of &amp;quot;volume&amp;quot;), but you can use them if you like, so I will mention them.  They concern the properties of the ambient fading.  Check the &amp;quot;Show Inhereted Properties&amp;quot; to see their default values.  Entering a new value will over-write the default value, but only for that one object.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Info_loc.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
==== fiduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in duration&amp;quot;.  This is the length of time in seconds it takes for the in-coming ambient (the one for this zone) to completely fade-in.  The default value is 4 seconds.  You can, e.g., make the fade last much longer with a larger value.  &lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want your ambient to fade in at all, but start immediately at full volume, change this value to &amp;quot;.001&amp;quot; (NOT zero). &lt;br /&gt;
&lt;br /&gt;
==== foduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out duration&amp;quot;.  This is the length of time in seconds it takes for the out-going ambient (the one from the zone you&#039;re leaving) to completely fade-out.  Again, if you want it to cut right off without fading, use a value of &amp;quot;.001&amp;quot;.   &lt;br /&gt;
&lt;br /&gt;
==== fidelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in Delay&amp;quot;.  You can delay the beginning of the in-coming ambient&#039;s fade-in after you enter the new area.  You might want to do this, for example, if you want the out-going ambient to completely fade out before you begin fading in the new ambient.  So you would set fidelay to the same time as the foduration.  By default it is set to .001 so that there is no delay and the fade in starts immediately.  If the out-going fade-out also starts immediately (which happens by default), then they blend together in a nice transition fade.  &lt;br /&gt;
&lt;br /&gt;
==== fodelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out Delay&amp;quot;.  Similarly you can delay the beginning of the out-going ambient&#039;s fade out.  You might want to do this if you wanted the in-coming ambient to completely fade in before you started the fade out of the old ambient.  Then you would set it to fiduration.  Like fidelay, it is set to .001 so there is no delay and the fade out starts immediately.  &lt;br /&gt;
&lt;br /&gt;
==== fovolume ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out volume&amp;quot;.  This sets the volume to which the out-going ambient fades to.  -60 turns it off, which is the default (0 means no decrease in volume at all).  If you go any higher than -60, than it will leave the old ambient still playing at a lower volume under the new ambient (at least until you enter a 3rd new zone).  Not sure why you&#039;d ever want to do that, so you probably don&#039;t want to change it.  &lt;br /&gt;
&lt;br /&gt;
==== volume ====&lt;br /&gt;
&lt;br /&gt;
This allows the mapper to override the volume of the ambient sound once it has fully faded in, and uses the same decibel scale as the &#039;&#039;&#039;s_volume&#039;&#039;&#039; speaker parameter.  Note, though, that it uses the spanwarg &amp;quot;volume&amp;quot; instead.  I found a decibel-loudness calculator here: http://www.sengpielaudio.com/calculator-levelchange.htm that lets you compute the decibel number for relative loudness.  According to it, &amp;quot;0&amp;quot; is the native volume of the sound (the default), &amp;quot;-60&amp;quot; is silence, &amp;quot;-4&amp;quot; is 3/4 (.75) of the volume, &amp;quot;-10&amp;quot; is half (.5) the volume, &amp;quot;-17&amp;quot; is 0.3 of the volume, and it goes quickly down from there.  &amp;quot;10&amp;quot; is double, but be warned there may be problems with positive numbers (e.g., volume clipping) and you should keep it not far above 0 if at all.  See [[Setting Up Speakers#volume/ s_volume|&amp;quot;Volume / S_Volume&amp;quot;]] &amp;amp; [[Volume Issues]] for more detailed discussion of the volume parameter.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not override ambient volumes unless strictly necessary&#039;&#039;&#039;. Maps with wildly different ambient volume settings result in a poor experience for players, and limit the ability of the Dark Mod team to respond to volume-related issues by changing default volumes in sound shader declarations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These last two (&#039;&#039;&#039;foduration_2foip&#039;&#039;&#039; and &#039;&#039;&#039;fiduration_2foip&#039;&#039;&#039;) are pretty obscure situations, so you probably don&#039;t need to ever mess with them unless you want to completely get rid of ambient fades (then you can set them to .001 like the other &#039;fade duration&#039; properties).&lt;br /&gt;
&lt;br /&gt;
==== foduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-out duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  This provides a shorter fade-out duration (in seconds) for when the player quickly runs into a 3rd location, such that the 1st and 2nd ambients from areas the player just left are still fading out (hence the 2 fade-outs). But the quickend-fade-out only applies to the 1st ambient fading out. (i.e., not of the ambient you just left, but the one you left just before that -- unless you&#039;re backtracking, then it just fades the prev-prev ambient back in).  Fading out that prev-prev ambient more quickly in turn quickens the time the new fade-in can start (because you can&#039;t have 3 sounds on at the same time on the zone speaker, only 2).  So it in effect reduces the gap of quiet that happens before the newest ambient fully fades-in by enabling it to start its fade-in faster.  The default is 1 second.  &lt;br /&gt;
&lt;br /&gt;
==== fiduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-in duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  Like its counterpart, this sets a shorter duration of a fade-in of a new ambient (in seconds) when you run into a 3rd location, while the ambients from the 1st and 2nd locations are fading out.  Again, because so many ambients are fading out, it can leave a gap of silence for a bit until the new 3rd ambient fades in.  So setting a shorter duration than usual for the newest ambient to fully fade in helps shorten the quiet space.  The default is 2 seconds (as opposed to a normal default fade-in duration of 4 seconds).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Example of Location with No Fading Transition ====&lt;br /&gt;
&lt;br /&gt;
As mentioned above, if you wanted a set-up that turned off all fades so that the out-going ambient shut directly off and the in-coming ambient turns directly on, you&#039;d change all the duration properties to .001, like the following image.  (Note that this modifies the transition only for entering this one location.  All the other info_locations maintain their default values unless you also change them by hand.)  &lt;br /&gt;
&lt;br /&gt;
[[image: Fade_duration.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=== Ambient light settings ===&lt;br /&gt;
&lt;br /&gt;
These spawnargs can be set on &#039;&#039;&#039;atdm:info_location&#039;&#039;&#039; entities and apply to the current zone then:&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This spawnarg specifies the ambient light color for this zone. Setting it f.i. to &amp;quot;0.10 0.02 0.02&amp;quot; would fade the ambient light to a slightly reddish color. This can be useful for a lava cave. Other examples are slightly blue light for moonlit outsides, greenish cast for caves or underwater areas etc.&lt;br /&gt;
&lt;br /&gt;
If you do not set this on an info_location entity, the default value of the global &amp;quot;ambient_world&amp;quot; entity will be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*You need to set the color values as fractions between 0 and 1, e.g. &#039;&#039;&#039;&amp;quot;0.08 0.08 0.02&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;NOT&#039;&#039;&#039; as integers like &amp;quot;8 8 2&amp;quot;, or it will not work.&lt;br /&gt;
&lt;br /&gt;
:*If the color change between two zones is too big, the fading and change can become obvious to the player and spoil the subtlety. This can happen for instance if you zoom from a bluish-lit outside directly to a reddish-glowing cave inside. To help the transition, consider adding an intermidiate zone with a light color that is either in between the two, or a more neutral grey. Making it not possible to look from one zone to the other also helps; this way the player can&#039;t see that f.i. the outside ground suddenly also glows reddish when looking back from the cave entrance to the outside.&lt;br /&gt;
&lt;br /&gt;
:*There&#039;s a bug with setting ambient_light to 0 0 0 (to be fixed in 2.05), so use 0.004 0.004 0.004 if you want to remove ambient light from a location.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_time&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds it will take to fade from the current ambient light color to the one specified for this location. A slower fade means more gradual light changes, so they don&#039;t become too obvious to the player. Use at least 3, better 5 or 7 seconds.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_delay&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds the fading will be delayed when the player changes location.&lt;br /&gt;
&lt;br /&gt;
Useful to prevent fades toggling back and forth when the player stands in a doorway and goes a nudge forward/backwards. A good value is at least 1 second.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is a factor&#039;&#039;&#039;, all lights in the current area will be summed together and scaled by this value.&lt;br /&gt;
&lt;br /&gt;
If set to a value other than &amp;quot;0 0 0&amp;quot;, the lights in the current zone will be all summed together and then&lt;br /&gt;
added to the current base ambient light. This happens with the frequency of &#039;&#039;&#039;update_period&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The basic effect is that a roaring fire also slightly makes the walls flicker, and extinguishing all lights in a room would decrease the ambient light slightly.&lt;br /&gt;
&lt;br /&gt;
The factor should be set up so that for large and dark rooms (e.g. caves) the dynamic part is small, while for small, bright rooms (white walls) the dynamic part is bigger. Examples are: &amp;quot;0.05 0.05 0.05&amp;quot; and &amp;quot;0.1 0.1 0.1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that setting the dynamic factor to high can result in the player being busted by lights that are turned on in the room even when the player is in the shadow.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic_cap&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Used to cap the dynamic ambient light part. If set to 0, will be ignored, so to have a very very small&lt;br /&gt;
cap, set to &amp;quot;0.01&amp;quot;, e.g. if you want only the red part to be dynamic, set it f.i. &amp;quot;0.15 0.01 0.01&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_falloff&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
&lt;br /&gt;
* -1 on info_location: use the value from the atdm:location_settings entity&lt;br /&gt;
* 0 - no dynamic falloff&lt;br /&gt;
* 0.5 - small, based on square root of distance&lt;br /&gt;
* 1 - medium, linear dynamic falloff (should be used as it looks best)&lt;br /&gt;
* 2 - high, square of distance based falloff&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dist_scale&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
A factor to scale the distance before applying a dynamic light falloff. Only used then &#039;&#039;&#039;ambient_light_dynamic_falloff&#039;&#039;&#039; is not 0. Good valuesa are around 1.0.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
=== Script calls ===&lt;br /&gt;
&lt;br /&gt;
The next four spawnargs all specify scripts to call when the player enters or exits a zone. Note that the very first zone is also &amp;quot;entered&amp;quot; by the player when the map starts. That means &amp;quot;call_once_on_entry&amp;quot; for the start zone should be called at start-time.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is left by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is entered by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player leaves that zone.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player enters that zone.&lt;br /&gt;
&lt;br /&gt;
==== Example scripts ====&lt;br /&gt;
&lt;br /&gt;
Here is an example script that spawns an object where the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity is for the zone the player just left. You can call this script by setting:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;call_once_on_exit&amp;quot; &amp;quot;spawn_pear&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
on your info_location entity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void spawn_pear( entity old_zone )&lt;br /&gt;
  {&lt;br /&gt;
  // Get the name of the location that the player just left:&lt;br /&gt;
  string location_name = old_zone.getName();&lt;br /&gt;
  // and display it on the console for debugging&lt;br /&gt;
  sys.print (&amp;quot;Spawning pear after leaving &amp;quot; + location_name + &amp;quot;\n&amp;quot;);&lt;br /&gt;
  // spawn the pear entity&lt;br /&gt;
  entity pear = sys.spawn(&amp;quot;atdm:moveable_food_pear&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // and now get the position of the old location entity:&lt;br /&gt;
  vector origin = old_zone.getOrigin();&lt;br /&gt;
  // finally move the pear to the point of the info_location&lt;br /&gt;
  pear.setOrigin( origin );&lt;br /&gt;
  // so once the player exits this location, ONE pear will spawn and fall down&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example script to turn entities on/off when player enters a location ====&lt;br /&gt;
The basic problem with normal TDM entity work is the difficulty of turning something deliberately and reliably on or off. You never turn something on or off, but instead you send toggles to the entities. Let&#039;s say you have a omni sound (a sound which is heard everywhere) which you need to shut off when the player goes to a certain location. Trigger_multiples trigger targets when the player stands on their volume, which may result in a completely wrong situation depending how long the player stands on the trigger.&lt;br /&gt;
&lt;br /&gt;
Location entity scripting can be of great help here. This kind of scripting can generally solve any kind of problem where the mapper wants something to be switched specifically on and off when the player moves to a specific location. Here is an example, which was used to switch off a global thunder sound when the player moves to a location where the rumbling cannot be heard.&lt;br /&gt;
&lt;br /&gt;
Set up location setting as described above. Put a location separator on the visportal you want to be the point which switches your target on/off. Give the info_location-entity spawnargs &lt;br /&gt;
*call_on_entry yourscript&lt;br /&gt;
*call_on_exit yourscript&lt;br /&gt;
&lt;br /&gt;
Then go and create in your /maps folder a file yourmapname.script. Put in the following data there:&lt;br /&gt;
&lt;br /&gt;
 void yourscript(entity old_zone)&lt;br /&gt;
 {&lt;br /&gt;
 sys.println(&amp;quot;script yourscript running..&amp;quot;);&lt;br /&gt;
 sys.trigger( $entity_name );&lt;br /&gt;
 }&lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*yourscript is the name of your script you call.&lt;br /&gt;
*sys.println is a debug feature which gives the text in console when the script is triggered. You can leave it for testing and remove it before releasing your map.&lt;br /&gt;
*sys.trigger ($entity_name) replace the entity_name with the entity which you want to be triggered.&lt;br /&gt;
&lt;br /&gt;
Now your system works like this: &lt;br /&gt;
*When the player is outside the location everything is normal. Ie sound off, light off, etc.&lt;br /&gt;
*When the player enters the location, entity_name gets triggered once. Ie sound on, light on, etc.&lt;br /&gt;
*When the player leaves the location, entity_name gets triggered again. Ie sound off, light off, etc.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Adding ambient Sounds to your Map]]&lt;br /&gt;
* [[Dynamic ambient light]].&lt;br /&gt;
* [[Ambient Sounds - Zone (using triggers)]]&lt;br /&gt;
* [[Sound File Formats]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-sound}}&lt;br /&gt;
{{editing}}&lt;br /&gt;
{{tutorial-scripting}}&lt;br /&gt;
[[Category:Ambient Light]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=19979</id>
		<title>Location Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=19979"/>
		<updated>2018-05-15T13:42:49Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* &amp;quot;ambient_light&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to setup &#039;&#039;&#039;locations&#039;&#039;&#039; (also called &amp;quot;location zones&amp;quot; or &amp;quot;zones&amp;quot;) in your level, and then use these to:&lt;br /&gt;
&lt;br /&gt;
* fade to different ambient &#039;&#039;&#039;light levels&#039;&#039;&#039; for each zone&lt;br /&gt;
* fade between different ambient &#039;&#039;&#039;sounds&#039;&#039;&#039; in each zone&lt;br /&gt;
* run &#039;&#039;&#039;scripts&#039;&#039;&#039; automatically when the player enters or exits a zone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to use four types of entities in your map: &lt;br /&gt;
&lt;br /&gt;
* a special global entity (e.g. add only one, the position does not matter): &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
* a special global light entity named &#039;&#039;&#039;ambient_world&#039;&#039;&#039; &lt;br /&gt;
* multiple &#039;&#039;&#039;info_location&#039;&#039;&#039; and &#039;&#039;&#039;info_locationseparation&#039;&#039;&#039; entities&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
:Note:  Two alternative ways to get ambient sounds in your map are using speakers ([[Adding ambient Sounds to your Map]]), and using triggers ([[Ambient Sounds - Zone (using triggers)]]).  Speakers are good if you only want your ambient to cover a definite radius and have a very simple setup.  Triggers are basically obsoleted by the method in this tutorial.  The only time you might still want to use a trigger-system is if you want a ambient sound to begin at a place where for some reason you can&#039;t create a portal to mark the zone boundary, but you can still have a trigger brush.  There are some issues with a trigger system, too (f.i. their CPU and memory usage and more importantly they are not failsafe like locations are), that make the method in this tutorial superior.  &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The atdm:location_settings entity ==&lt;br /&gt;
&lt;br /&gt;
Create a &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity in your blueroom (i.e., a room off to the side the player will never enter) or somewhere else in your map:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Default values ===&lt;br /&gt;
&lt;br /&gt;
The location_settings entity takes a few &#039;&#039;default&#039;&#039; spawnargs related to the ambient light settings:&lt;br /&gt;
&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_time&amp;quot;|&amp;quot;ambient_light_fade_time&amp;quot;]]&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_delay&amp;quot;|&amp;quot;ambient_light_fade_delay&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
For their meaning and values, please refer to their sections.&lt;br /&gt;
&lt;br /&gt;
=== update_period ===&lt;br /&gt;
&lt;br /&gt;
The spawnarg &#039;&#039;&#039;update_period&#039;&#039;&#039; specifies the time in seconds between updates. A good value is 0.2, e.g. 5 times per second. That avoids to run the script too often, and still allows seamless transitions.&lt;br /&gt;
&lt;br /&gt;
=== Sound Shaders ===&lt;br /&gt;
&lt;br /&gt;
In the entity&#039;s spawnargs, put the names of all the ambient sounds you want to play in your map.  (This pre-loads the sounds into the speaker so there isn&#039;t a pause when they start playing.)  Put it in one of these property/value forms (without the quote marks):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_streets&amp;quot; &amp;quot;city_night01_loop_z&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_mansion&amp;quot; &amp;quot;sound/ambient/ambience/mansion_tense01a.ogg&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The left hand spawnarg should have a &amp;quot;snd_&amp;quot; prefix, and any name, but most useful is probably the name of the area it is for.  You&#039;ll use this name again when you place the location markers or if you use the override system.  &lt;br /&gt;
&lt;br /&gt;
The right hand value points to the actual sound file that will play.  You can enter either the soundshader name, or the address where the sound file is (but see footnote).  You can see the soundshader names of ambient-ready sounds in the sub-folder &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot;.   You can find the address of the sound files in &amp;quot;Darkmod/sound/ambient/ambience&amp;quot; (remember to start the address with &amp;quot;sound&amp;quot; in the spawnarg).  You can also listen to the sounds at that location.  They are are in .ogg format. But it&#039;s easier to just create a speaker (left-click&amp;gt;speaker) and it will give you a sound directory where can play sound files and find the names. No searching through sound folders outside of DR (thanks to Badcog for that tip).&lt;br /&gt;
&lt;br /&gt;
:Note that it is very easy to add custom ambients with this system.  Just create a folder in your .pk4 (a .zip file renamed to .pk4) and name the folder &amp;quot;sound&amp;quot;, with another folder inside it named after your FM or an abbreviation.  Put your custom sound inside that second folder.  (E.g., I have a custom ambient named Frozen.ogg, and my FM&#039;s name is Patently Dangerous.  So in my .pk4 was &amp;quot;sound/patent/frozen.ogg&amp;quot;.  Note that ambients must be in either .ogg or .wav format. Now in your speaker_zone_ambient, just put the sound&#039;s address in the spawnarg (but see footnote).  In my case, I have &amp;quot;snd_warehouse&amp;quot; &amp;quot;sound/patent/frozen.ogg&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
It is worth noting that one special &amp;quot;sound&amp;quot; is already loaded by default.  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_silence&amp;quot; &amp;quot;silence&amp;quot;&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
You can see it if you check &amp;quot;Show Inherited Properties&amp;quot;.  This is the sound you use to turn &amp;quot;off&amp;quot; the ambient sounds playing, so there is silence in the zone.&lt;br /&gt;
&lt;br /&gt;
=== On Shader Names ===&lt;br /&gt;
&lt;br /&gt;
One footnote on the sound shader names. The &#039;&#039;shader tdm_ambient_ambience_zoned.sndshd&#039;&#039; has a special command (&amp;quot;leadin&amp;quot;) for its sounds that begins the ambient with a short pause.  This is to pre-empt a possible *pop* of sound for loud ambients which can occur when the player&#039;s system slows down (and only occasionally, at that), so the player never hears the pop.  (It&#039;s a quirk of how Doom3 does fade-ins; when you start a new sound, you have to rapidly fade it out first, like .001 seconds, then slowly fade back in.  But if the system slows and the ambient starts loud, it might stretch that .001 to something audible.)&lt;br /&gt;
 Edit:Baddcog- These seem to now have been appended with a _z if you look at sound names in speaker dialog.&lt;br /&gt;
&lt;br /&gt;
If you alternatively use the address or the shader name from &amp;quot;Darkmod/sound/tdm_ambient_ambience.sndshd&amp;quot; (which lack the &amp;quot;leadin&amp;quot; property) it will otherwise work fine, but you won&#039;t be protected from that occasional little pop (at least until we find another fix).  For ambients that start quietly or areas that won&#039;t slow the system down, it will probably never even be a problem and the player will never hear it, so using the address is fine, or using the tdm_ambient_ambience shader name if you don&#039;t want the tiny pause for whatever reason.  But if you want to control it, use the tdm_ambient_ambience_zoned name, and for a custom sound, to pre-empt the pop you&#039;ll need to use a custom shader with the &amp;quot;leadin&amp;quot; line.  Use the &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot; as a template to do that, and name the custom shader file something like YourFMsName.sndshd, and put it in the &amp;quot;sound&amp;quot; folder in your .pk4.&lt;br /&gt;
&lt;br /&gt;
=== Sound Properties ===&lt;br /&gt;
&lt;br /&gt;
Regarding properties, the speaker (the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity is a speaker in disguise :) has by default the properties &amp;quot;omni&amp;quot;, &amp;quot;global&amp;quot;, and &amp;quot;looping&amp;quot; already turned on, so that all sounds played are heard everywhere, from no direction, and will loop.  If you change these properties (e.g., for one ambient) the change will apply to all ambients on the speaker.  So you probably don&#039;t want to turn these properties off.  &lt;br /&gt;
&lt;br /&gt;
Another spawnarg worth noting is &amp;quot;s_volume&amp;quot;.  Since the location_settings also acts as a speaker, this will work to change volume (0=full volume, -10=half volume, -60=silence), again globally on all the ambients playing on it.  Unless you have a very good reason for doing so however (e.g., you want all your ambients much louder or quieter) you probably don&#039;t want to use the s_volume spawnarg.  If you want to change the volume of a specific ambient, you can do so on the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity with the &amp;quot;volume&amp;quot; spawnarg as described below (note some of the issues involved with volume changes there as well), not the location_settings entity (or directly in the sound&#039;s soundshader).  &lt;br /&gt;
&lt;br /&gt;
Your entity will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Speaker4.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sound Override ===&lt;br /&gt;
&lt;br /&gt;
From version 2.04, an &amp;quot;override&amp;quot; property for sounds has been added to the location settings entity. The purpose is to allow a mapper to easily override the location ambient to play their own sound, such as an ambient when a discovery is made, to build tension, action music when the player is seen, or for reading a book, etc., and then return to the location sounds when it&#039;s done. &lt;br /&gt;
&lt;br /&gt;
The default value for &amp;quot;override&amp;quot; is &amp;quot;0&amp;quot;, meaning override is turned off, so the location ambients play as normal. Although it looks boolean, the data type is a string, so it takes any characters. If at any time in-game you dynamically change &amp;quot;override&amp;quot; to any non-zero value (I&#039;ll explain how below), it will override the location ambients to allow you to play your own sound as long as it is non-zero. To turn location ambient sounds back on, you change &amp;quot;override&amp;quot; back to &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you change &amp;quot;override&amp;quot; to one of the pre-cached sound names (that is, a name with the &amp;quot;snd_&amp;quot; prefix mentioned above, such as &amp;quot;snd_alert&amp;quot;), then the location system will fade out the location ambient and play the ambient sound you registered under that name as an override ambient. If you open the console, it will report that the override ambient is playing. The override ambient will continue to play until override is changed back to zero or to another override ambient. This means if you just want to play a one-shot ambient, you need to use a script with a wait function that waits the duration of the ambient then turns override off to restore the location ambient, otherwise it will loop. Using the function sys.waitFor( $[speaker_name]); after running the speaker is supposed to automatically wait the duration, but this needs to be tested.  &lt;br /&gt;
&lt;br /&gt;
If you change the override property to another value (not a sound name) such as &amp;quot;1&amp;quot;, it will simply turn the system off, allowing the mapper to play a speaker in the silence if they prefer. &lt;br /&gt;
&lt;br /&gt;
There are two basic ways to change the &amp;quot;override&amp;quot; property dynamically, calling a script and triggering a target_setKeyVal entity in-game. &lt;br /&gt;
&lt;br /&gt;
1. Script. The script function to change a property on an entity is $tdm_location_settings_1.setKey( &amp;quot;override&amp;quot;, &amp;quot;[snd_name]&amp;quot;); to turn on an override sound and $[tls_1].setKey( &amp;quot;override&amp;quot;, &amp;quot;0&amp;quot;);  to turn the location ambients back on. Note because it&#039;s a string data type, you need to put zero in quote marks/inverted commas. Also be sure to use the right name for the location settings entity. It may not have a &amp;quot;_1&amp;quot; suffix. &lt;br /&gt;
&lt;br /&gt;
2. Target_setKeyVal. At the bottom of the entity list is target_setKeyVal (note it&#039;s not with other target entities). Create one of these entities and have it target the location settings entity (e.g., enter a property/key &amp;quot;target&amp;quot; &amp;quot;tdm_location_settings_1&amp;quot;). Now add the property/key &amp;quot;keyval&amp;quot; &amp;quot;override;snd_name&amp;quot; to turn on the override sound. Note you separate the propery and key with a semicolon and no space. Now when you trigger that entity with a trigger brush, button, or anything else, it will change the propery and your override ambient will fade in.  You can have another target_setkeyval entity with &amp;quot;keyval&amp;quot; &amp;quot;override;0&amp;quot; to turn override off and turn the location based ambients back on. &lt;br /&gt;
&lt;br /&gt;
The tdm_location_settings entity has also got new properties for fading behavior. Thus, the mapper can make the override ambient fade in as normal, or have it blast in with no fade-in if they want. These properties are the same &#039;fading&#039; type spawnargs as are on the info_location settings described below, and work in the same way, except they are on the location settings entity and only apply to override ambients. (Volume is not included however. You&#039;d just use the speaker property &amp;quot;s_volume&amp;quot; directly, but you&#039;d need to restore it after the override is over if you don&#039;t want the change applying to all sounds.) You can change them dynamically in the same way as override. If you have multiple overrides, some with fading and some without, and want to revert to the default fading without looking it up, you can enter &amp;quot;-1&amp;quot; as the value of a property and it uses the default value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are finished with the ambient sound part now.&lt;br /&gt;
&lt;br /&gt;
== The Ambient Light ==&lt;br /&gt;
&lt;br /&gt;
You need to create an ambient light in your level. This will cover the entire level, and provide a minimum default light for when there is no other light covering a surface:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;{{RMB}} -&amp;gt; Create light&#039;&#039;&#039;&lt;br /&gt;
# Move the light&#039;s origin to the center of your map, and drag its size so that it covers your entire map, and then some more. Remember to increase the size of that light when you build more area into your map!&lt;br /&gt;
# Open the light inspector (default shortcut {{key|L}}) and set the light texture to &#039;&#039;&#039;lights/ambientlightnfo&#039;&#039;&#039;&lt;br /&gt;
# Set the color of the light to a reasonable default, f.i. &amp;quot;.08 .08 .08&amp;quot; This value will be used when a zone has no other ambient light settings&lt;br /&gt;
# Open the entity inspector (default shortcut {{key|N}}) and set the name of the light to &#039;&#039;&#039;ambient_world&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The last step is important!&lt;br /&gt;
&lt;br /&gt;
You are done now with the global ambient light.&lt;br /&gt;
&lt;br /&gt;
== The Location Entities ==&lt;br /&gt;
&lt;br /&gt;
Now you need to set up the location system so the game knows where the zones are, and their boundaries where changes will happen.  A location is basically any area that&#039;s closed in by brushes and marked portals and contains an info_location entity. Unlike a vis-portaled area (which is one area between [[vis_portals]], a.k.a. a &amp;quot;leaf&amp;quot;), a zone can cover more than one portaled area (&amp;quot;leaves&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
As an aside, locations are also used for setting the EAX properties in the area (e.g., the echo-y-ness of a big hall or cave, or the dullness of a small carpeted room).  So you have a good reason to have them even in addition to handling ambient sounds and lights.  &lt;br /&gt;
&lt;br /&gt;
=== info_locationseparator ===&lt;br /&gt;
&lt;br /&gt;
As I suggested above, you have to mark all the portals leading in and out of a zone by hand.  You do this with an entity called a &#039;&#039;&#039;info_locationseparator&#039;&#039;&#039;.  Create one so it touches or pierces the portal you want as a boundary, and it will mark that portal as a location boundary. (Note, you only make one separator per portal. In the photo example below, the one separator is piercing the portal.) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_locationseparator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t touch a portal with this entity, than it will not register in the game as the boundary to a new zone, and the zone will continue into the area on the other side of the portal.  This happens even if you have a second info_location (described below) on the other side (the game will just pick one and use that for the whole zone).  This can be a good thing because, say you have a mansion with 30 portals inside.  You can cover the whole area inside it by just marking the 2 or 3 portals leading into the mansion area through the doors and open windows, and everything inside that marked area will be counted as one location (just don&#039;t miss marking an exit, or have an un-portaled gap to the outside between brushes, or the location will leak outside.  It has to be hermetically sealed).  &lt;br /&gt;
&lt;br /&gt;
I have read discussion that a door touching a portal marks it as a location boundary, but in my experiments the door did not create a new location and I still had to use a info_locationseparator over the portal to register it as a boundary.&lt;br /&gt;
&lt;br /&gt;
=== info_location ===&lt;br /&gt;
&lt;br /&gt;
Now, inside the zone you want to have, create an &#039;&#039;&#039;info_location&#039;&#039;&#039; entity:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_location&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Anywhere in the space of the zone is fine.  Name it the name of the zone you want (to make it easy to find when you push {{key|J}}).&lt;br /&gt;
&lt;br /&gt;
== Settings per location/zone ==&lt;br /&gt;
&lt;br /&gt;
On each info_location, you can set multiple spawnargs that adjust the light or sound for that location, as well&lt;br /&gt;
as run scripts. We cover them next:&lt;br /&gt;
&lt;br /&gt;
=== Ambient sound ===&lt;br /&gt;
&lt;br /&gt;
Now create a spawnarg property of &amp;quot;ambient&amp;quot; with the value being the speaker-name of the sound you used in the location_settings entity above (NOT the soundshader name or file name).  For example, &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;ambient&amp;quot;    &amp;quot;snd_streets&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will send a command to the location_settings (in its speaker capacity) to play the ambient it has registered under &amp;quot;snd_streets&amp;quot; that you entered.  When you enter a new zone, in turn, the new info_location sends a command to the speaker to turn off that ambient and start a new one.  &lt;br /&gt;
&lt;br /&gt;
If you wanted to have no ambient playing in the zone (and turn off any ambient started from another zone), you would use &amp;quot;snd_silence&amp;quot; as the value to command the speaker to turn off.  Also, if you have an info_location with no &amp;quot;ambient&amp;quot; value at all, it will also turn off the ambient (in the present version of this system).  That means if you make a new location but want the same ambient playing in it as the location next to it, you still need to add the ambient name for the already-playing ambient for it to continue playing into the new zone; otherwise it will turn off.  &lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Here are two info_locations on two sides of a portal, with one info_locationseparator touching the portal (actually piercing it), and with each info_location containing the name of the ambient that will play in its respective zone.&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_streets.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_silence.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it.  The ambients will now turn on when you enter a zone and turn off when you enter a new zone, turning on the new ambient in that new zone (unless it&#039;s the same ambient, then it just keeps playing, useful e.g., if you want 2 different EAX but 1 ambient playing).  If you open up the console, you should see a message saying that a new ambient is now playing in your current location, naming the ambient and location.&lt;br /&gt;
&lt;br /&gt;
=== Sound Fading ===&lt;br /&gt;
&lt;br /&gt;
Finally, there are a few other spawnargs on the info_locations that you usually don&#039;t have to worry about (with the possible exception of &amp;quot;volume&amp;quot;), but you can use them if you like, so I will mention them.  They concern the properties of the ambient fading.  Check the &amp;quot;Show Inhereted Properties&amp;quot; to see their default values.  Entering a new value will over-write the default value, but only for that one object.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Info_loc.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
==== fiduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in duration&amp;quot;.  This is the length of time in seconds it takes for the in-coming ambient (the one for this zone) to completely fade-in.  The default value is 4 seconds.  You can, e.g., make the fade last much longer with a larger value.  &lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want your ambient to fade in at all, but start immediately at full volume, change this value to &amp;quot;.001&amp;quot; (NOT zero). &lt;br /&gt;
&lt;br /&gt;
==== foduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out duration&amp;quot;.  This is the length of time in seconds it takes for the out-going ambient (the one from the zone you&#039;re leaving) to completely fade-out.  Again, if you want it to cut right off without fading, use a value of &amp;quot;.001&amp;quot;.   &lt;br /&gt;
&lt;br /&gt;
==== fidelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in Delay&amp;quot;.  You can delay the beginning of the in-coming ambient&#039;s fade-in after you enter the new area.  You might want to do this, for example, if you want the out-going ambient to completely fade out before you begin fading in the new ambient.  So you would set fidelay to the same time as the foduration.  By default it is set to .001 so that there is no delay and the fade in starts immediately.  If the out-going fade-out also starts immediately (which happens by default), then they blend together in a nice transition fade.  &lt;br /&gt;
&lt;br /&gt;
==== fodelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out Delay&amp;quot;.  Similarly you can delay the beginning of the out-going ambient&#039;s fade out.  You might want to do this if you wanted the in-coming ambient to completely fade in before you started the fade out of the old ambient.  Then you would set it to fiduration.  Like fidelay, it is set to .001 so there is no delay and the fade out starts immediately.  &lt;br /&gt;
&lt;br /&gt;
==== fovolume ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out volume&amp;quot;.  This sets the volume to which the out-going ambient fades to.  -60 turns it off, which is the default (0 means no decrease in volume at all).  If you go any higher than -60, than it will leave the old ambient still playing at a lower volume under the new ambient (at least until you enter a 3rd new zone).  Not sure why you&#039;d ever want to do that, so you probably don&#039;t want to change it.  &lt;br /&gt;
&lt;br /&gt;
==== volume ====&lt;br /&gt;
&lt;br /&gt;
This allows the mapper to override the volume of the ambient sound once it has fully faded in, and uses the same decibel scale as the &#039;&#039;&#039;s_volume&#039;&#039;&#039; speaker parameter.  Note, though, that it uses the spanwarg &amp;quot;volume&amp;quot; instead.  I found a decibel-loudness calculator here: http://www.sengpielaudio.com/calculator-levelchange.htm that lets you compute the decibel number for relative loudness.  According to it, &amp;quot;0&amp;quot; is the native volume of the sound (the default), &amp;quot;-60&amp;quot; is silence, &amp;quot;-4&amp;quot; is 3/4 (.75) of the volume, &amp;quot;-10&amp;quot; is half (.5) the volume, &amp;quot;-17&amp;quot; is 0.3 of the volume, and it goes quickly down from there.  &amp;quot;10&amp;quot; is double, but be warned there may be problems with positive numbers (e.g., volume clipping) and you should keep it not far above 0 if at all.  See [[Setting Up Speakers#volume/ s_volume|&amp;quot;Volume / S_Volume&amp;quot;]] &amp;amp; [[Volume Issues]] for more detailed discussion of the volume parameter.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not override ambient volumes unless strictly necessary&#039;&#039;&#039;. Maps with wildly different ambient volume settings result in a poor experience for players, and limit the ability of the Dark Mod team to respond to volume-related issues by changing default volumes in sound shader declarations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These last two (&#039;&#039;&#039;foduration_2foip&#039;&#039;&#039; and &#039;&#039;&#039;fiduration_2foip&#039;&#039;&#039;) are pretty obscure situations, so you probably don&#039;t need to ever mess with them unless you want to completely get rid of ambient fades (then you can set them to .001 like the other &#039;fade duration&#039; properties).&lt;br /&gt;
&lt;br /&gt;
==== foduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-out duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  This provides a shorter fade-out duration (in seconds) for when the player quickly runs into a 3rd location, such that the 1st and 2nd ambients from areas the player just left are still fading out (hence the 2 fade-outs). But the quickend-fade-out only applies to the 1st ambient fading out. (i.e., not of the ambient you just left, but the one you left just before that -- unless you&#039;re backtracking, then it just fades the prev-prev ambient back in).  Fading out that prev-prev ambient more quickly in turn quickens the time the new fade-in can start (because you can&#039;t have 3 sounds on at the same time on the zone speaker, only 2).  So it in effect reduces the gap of quiet that happens before the newest ambient fully fades-in by enabling it to start its fade-in faster.  The default is 1 second.  &lt;br /&gt;
&lt;br /&gt;
==== fiduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-in duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  Like its counterpart, this sets a shorter duration of a fade-in of a new ambient (in seconds) when you run into a 3rd location, while the ambients from the 1st and 2nd locations are fading out.  Again, because so many ambients are fading out, it can leave a gap of silence for a bit until the new 3rd ambient fades in.  So setting a shorter duration than usual for the newest ambient to fully fade in helps shorten the quiet space.  The default is 2 seconds (as opposed to a normal default fade-in duration of 4 seconds).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Example of Location with No Fading Transition ====&lt;br /&gt;
&lt;br /&gt;
As mentioned above, if you wanted a set-up that turned off all fades so that the out-going ambient shut directly off and the in-coming ambient turns directly on, you&#039;d change all the duration properties to .001, like the following image.  (Note that this modifies the transition only for entering this one location.  All the other info_locations maintain their default values unless you also change them by hand.)  &lt;br /&gt;
&lt;br /&gt;
[[image: Fade_duration.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=== Ambient light settings ===&lt;br /&gt;
&lt;br /&gt;
These spawnargs can be set on &#039;&#039;&#039;atdm:info_location&#039;&#039;&#039; entities and apply to the current zone then:&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This spawnarg specifies the ambient light color for this zone. Setting it f.i. to &amp;quot;0.10 0.02 0.02&amp;quot; would fade the ambient light to a slightly reddish color. This can be useful for a lava cave. Other examples are slightly blue light for moonlit outsides, greenish cast for caves or underwater areas etc.&lt;br /&gt;
&lt;br /&gt;
If you do not set this on an info_location entity, the default value of the global &amp;quot;ambient_world&amp;quot; entity will be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*You need to set the color values as fractions between 0 and 1, e.g. &#039;&#039;&#039;&amp;quot;0.08 0.08 0.02&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;NOT&#039;&#039;&#039; as integers like &amp;quot;8 8 2&amp;quot;, or it will not work.&lt;br /&gt;
&lt;br /&gt;
:*If the color change between two zones is too big, the fading and change can become obvious to the player and spoil the subtlety. This can happen for instance if you zoom from a bluish-lit outside directly to a reddish-glowing cave inside. To help the transition, consider adding an intermidiate zone with a light color that is either in between the two, or a more neutral grey. Making it not possible to look from one zone to the other also helps; this way the player can&#039;t see that f.i. the outside ground suddenly also glows reddish when looking back from the cave entrance to the outside.&lt;br /&gt;
&lt;br /&gt;
:*There&#039;s a bug with setting ambient_light to 0 0 0 (to be fixed in 2.05), so use 0.004 0.004 0.004 if you want to remove ambient light from a location.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_time&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds it will take to fade from the current ambient light color to the one specified for this location. A slower fade means more gradual light changes, so they don&#039;t become too obvious to the player. Use at least 3, better 5 or 7 seconds.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_delay&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds the fading will be delayed when the player changes location.&lt;br /&gt;
&lt;br /&gt;
Useful to prevent fades toggling back and forth when the player stands in a doorway and goes a nudge forward/backwards. A good value is at least 1 second.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is a factor&#039;&#039;&#039;, all lights in the current area will be summed together and scaled by this value.&lt;br /&gt;
&lt;br /&gt;
If set to a value other than &amp;quot;0 0 0&amp;quot;, the lights in the current zone will be all summed together and then&lt;br /&gt;
added to the current base ambient light. This happens with the frequency of &#039;&#039;&#039;update_period&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The basic effect is that a roaring fire also slightly makes the walls flicker, and extinguishing all lights in a room would decrease the ambient light slightly.&lt;br /&gt;
&lt;br /&gt;
The factor should be set up so that for large and dark rooms (e.g. caves) the dynamic part is small, while for small, bright rooms (white walls) the dynamic part is bigger. Examples are: &amp;quot;0.05 0.05 0.05&amp;quot; and &amp;quot;0.1 0.1 0.1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that setting the dynamic factor to high can result in the player being busted by lights that are turned on in the room even when the player is in the shadow.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic_cap&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Used to cap the dynamic ambient light part. If set to 0, will be ignored, so to have a very very small&lt;br /&gt;
cap, set to &amp;quot;0.01&amp;quot;, e.g. if you want only the red part to be dynamic, set it f.i. &amp;quot;0.15 0.01 0.01&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_falloff&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
&lt;br /&gt;
* -1 on info_location: use the value from the atdm:location_settings entity&lt;br /&gt;
* 0 - no dynamic falloff&lt;br /&gt;
* 0.5 - small, based on square root of distance&lt;br /&gt;
* 1 - medium, linear dynamic falloff (should be used as it looks best)&lt;br /&gt;
* 2 - high, square of distance based falloff&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dist_scale&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
A factor to scale the distance before applying a dynamic light falloff. Only used then &#039;&#039;&#039;ambient_light_dynamic_falloff&#039;&#039;&#039; is not 0. Good valuesa are around 1.0.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
=== Script calls ===&lt;br /&gt;
&lt;br /&gt;
The next four spawnargs all specify scripts to call when the player enters or exits a zone. Note that the very first zone is also &amp;quot;entered&amp;quot; by the player when the map starts. That means &amp;quot;call_once_on_entry&amp;quot; for the start zone should be called at start-time.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is left by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is entered by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player leaves that zone.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player enters that zone.&lt;br /&gt;
&lt;br /&gt;
==== Example scripts ====&lt;br /&gt;
&lt;br /&gt;
Here is an example script that spawns an object where the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity is for the zone the player just left. You can call this script by setting:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;call_once_on_exit&amp;quot; &amp;quot;spawn_pear&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
on your info_location entity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void spawn_pear( entity old_zone )&lt;br /&gt;
  {&lt;br /&gt;
  // Get the name of the location that the player just left:&lt;br /&gt;
  string location_name = old_zone.getName();&lt;br /&gt;
  // and display it on the console for debugging&lt;br /&gt;
  sys.print (&amp;quot;Spawning pear after leaving &amp;quot; + location_name + &amp;quot;\n&amp;quot;);&lt;br /&gt;
  // spawn the pear entity&lt;br /&gt;
  entity pear = sys.spawn(&amp;quot;atdm:moveable_food_pear&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // and now get the position of the old location entity:&lt;br /&gt;
  vector origin = old_zone.getOrigin();&lt;br /&gt;
  // finally move the pear to the point of the info_location&lt;br /&gt;
  pear.setOrigin( origin );&lt;br /&gt;
  // so once the player exits this location, ONE pear will spawn and fall down&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example script to turn entities on/off when player enters a location ====&lt;br /&gt;
The basic problem with normal TDM entity work is the difficulty of turning something deliberately and reliably on or off. You never turn something on or off, but instead you send toggles to the entities. Let&#039;s say you have a omni sound (a sound which is heard everywhere) which you need to shut off when the player goes to a certain location. Trigger_multiples trigger targets when the player stands on their volume, which may result in a completely wrong situation depending how long the player stands on the trigger.&lt;br /&gt;
&lt;br /&gt;
Location entity scripting can be of great help in here. This kind of scripting can generally solve any kind of problems where the mapper want something to be switched specifically on and off when the player moves to a specific location. Here is an example, which was used to switch off a global thunder sound when the player moves to a location where the rumbling cannot be heard.&lt;br /&gt;
&lt;br /&gt;
Set up location setting as described above. Put a location separator on the visportal you want to be the point which switches your target on/off. Give the info_location-entity spawnargs &lt;br /&gt;
*call_on_entry yourscript&lt;br /&gt;
*call_on_exit yourscript&lt;br /&gt;
&lt;br /&gt;
Then go and create in your /maps folder a file yourmapname.script. Put in the following data there:&lt;br /&gt;
&lt;br /&gt;
 void yourscript(entity old_zone)&lt;br /&gt;
 {&lt;br /&gt;
 sys.println(&amp;quot;script yourscript running..&amp;quot;);&lt;br /&gt;
 sys.trigger( $entity_name );&lt;br /&gt;
 }&lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*yourscript is the name of your script you call.&lt;br /&gt;
*sys.println is a debug feature which gives the text in console when the script is triggered. You can leave it for testing and remove it before releasing your map.&lt;br /&gt;
*sys.trigger ($entity_name) replace the entity_name with the entity which you want to be triggered.&lt;br /&gt;
&lt;br /&gt;
Now your system works like this: &lt;br /&gt;
*When the player is outside the location everything is normal. Ie sound off, light off, etc.&lt;br /&gt;
*When the player enters the location, entity_name gets triggered once. Ie sound on, light on, etc.&lt;br /&gt;
*When the player leaves the location, entity_name gets triggered again. Ie sound off, light off, etc.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Adding ambient Sounds to your Map]]&lt;br /&gt;
* [[Dynamic ambient light]].&lt;br /&gt;
* [[Ambient Sounds - Zone (using triggers)]]&lt;br /&gt;
* [[Sound File Formats]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-sound}}&lt;br /&gt;
{{editing}}&lt;br /&gt;
{{tutorial-scripting}}&lt;br /&gt;
[[Category:Ambient Light]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=19978</id>
		<title>Location Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=19978"/>
		<updated>2018-05-15T13:40:00Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* The Ambient Light */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to setup &#039;&#039;&#039;locations&#039;&#039;&#039; (also called &amp;quot;location zones&amp;quot; or &amp;quot;zones&amp;quot;) in your level, and then use these to:&lt;br /&gt;
&lt;br /&gt;
* fade to different ambient &#039;&#039;&#039;light levels&#039;&#039;&#039; for each zone&lt;br /&gt;
* fade between different ambient &#039;&#039;&#039;sounds&#039;&#039;&#039; in each zone&lt;br /&gt;
* run &#039;&#039;&#039;scripts&#039;&#039;&#039; automatically when the player enters or exits a zone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to use four types of entities in your map: &lt;br /&gt;
&lt;br /&gt;
* a special global entity (e.g. add only one, the position does not matter): &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
* a special global light entity named &#039;&#039;&#039;ambient_world&#039;&#039;&#039; &lt;br /&gt;
* multiple &#039;&#039;&#039;info_location&#039;&#039;&#039; and &#039;&#039;&#039;info_locationseparation&#039;&#039;&#039; entities&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
:Note:  Two alternative ways to get ambient sounds in your map are using speakers ([[Adding ambient Sounds to your Map]]), and using triggers ([[Ambient Sounds - Zone (using triggers)]]).  Speakers are good if you only want your ambient to cover a definite radius and have a very simple setup.  Triggers are basically obsoleted by the method in this tutorial.  The only time you might still want to use a trigger-system is if you want a ambient sound to begin at a place where for some reason you can&#039;t create a portal to mark the zone boundary, but you can still have a trigger brush.  There are some issues with a trigger system, too (f.i. their CPU and memory usage and more importantly they are not failsafe like locations are), that make the method in this tutorial superior.  &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The atdm:location_settings entity ==&lt;br /&gt;
&lt;br /&gt;
Create a &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity in your blueroom (i.e., a room off to the side the player will never enter) or somewhere else in your map:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; atdm:location_settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Default values ===&lt;br /&gt;
&lt;br /&gt;
The location_settings entity takes a few &#039;&#039;default&#039;&#039; spawnargs related to the ambient light settings:&lt;br /&gt;
&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_time&amp;quot;|&amp;quot;ambient_light_fade_time&amp;quot;]]&lt;br /&gt;
* [[Location Settings#&amp;quot;ambient_light_fade_delay&amp;quot;|&amp;quot;ambient_light_fade_delay&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
For their meaning and values, please refer to their sections.&lt;br /&gt;
&lt;br /&gt;
=== update_period ===&lt;br /&gt;
&lt;br /&gt;
The spawnarg &#039;&#039;&#039;update_period&#039;&#039;&#039; specifies the time in seconds between updates. A good value is 0.2, e.g. 5 times per second. That avoids to run the script too often, and still allows seamless transitions.&lt;br /&gt;
&lt;br /&gt;
=== Sound Shaders ===&lt;br /&gt;
&lt;br /&gt;
In the entity&#039;s spawnargs, put the names of all the ambient sounds you want to play in your map.  (This pre-loads the sounds into the speaker so there isn&#039;t a pause when they start playing.)  Put it in one of these property/value forms (without the quote marks):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_streets&amp;quot; &amp;quot;city_night01_loop_z&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_mansion&amp;quot; &amp;quot;sound/ambient/ambience/mansion_tense01a.ogg&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The left hand spawnarg should have a &amp;quot;snd_&amp;quot; prefix, and any name, but most useful is probably the name of the area it is for.  You&#039;ll use this name again when you place the location markers or if you use the override system.  &lt;br /&gt;
&lt;br /&gt;
The right hand value points to the actual sound file that will play.  You can enter either the soundshader name, or the address where the sound file is (but see footnote).  You can see the soundshader names of ambient-ready sounds in the sub-folder &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot;.   You can find the address of the sound files in &amp;quot;Darkmod/sound/ambient/ambience&amp;quot; (remember to start the address with &amp;quot;sound&amp;quot; in the spawnarg).  You can also listen to the sounds at that location.  They are are in .ogg format. But it&#039;s easier to just create a speaker (left-click&amp;gt;speaker) and it will give you a sound directory where can play sound files and find the names. No searching through sound folders outside of DR (thanks to Badcog for that tip).&lt;br /&gt;
&lt;br /&gt;
:Note that it is very easy to add custom ambients with this system.  Just create a folder in your .pk4 (a .zip file renamed to .pk4) and name the folder &amp;quot;sound&amp;quot;, with another folder inside it named after your FM or an abbreviation.  Put your custom sound inside that second folder.  (E.g., I have a custom ambient named Frozen.ogg, and my FM&#039;s name is Patently Dangerous.  So in my .pk4 was &amp;quot;sound/patent/frozen.ogg&amp;quot;.  Note that ambients must be in either .ogg or .wav format. Now in your speaker_zone_ambient, just put the sound&#039;s address in the spawnarg (but see footnote).  In my case, I have &amp;quot;snd_warehouse&amp;quot; &amp;quot;sound/patent/frozen.ogg&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
It is worth noting that one special &amp;quot;sound&amp;quot; is already loaded by default.  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;snd_silence&amp;quot; &amp;quot;silence&amp;quot;&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
You can see it if you check &amp;quot;Show Inherited Properties&amp;quot;.  This is the sound you use to turn &amp;quot;off&amp;quot; the ambient sounds playing, so there is silence in the zone.&lt;br /&gt;
&lt;br /&gt;
=== On Shader Names ===&lt;br /&gt;
&lt;br /&gt;
One footnote on the sound shader names. The &#039;&#039;shader tdm_ambient_ambience_zoned.sndshd&#039;&#039; has a special command (&amp;quot;leadin&amp;quot;) for its sounds that begins the ambient with a short pause.  This is to pre-empt a possible *pop* of sound for loud ambients which can occur when the player&#039;s system slows down (and only occasionally, at that), so the player never hears the pop.  (It&#039;s a quirk of how Doom3 does fade-ins; when you start a new sound, you have to rapidly fade it out first, like .001 seconds, then slowly fade back in.  But if the system slows and the ambient starts loud, it might stretch that .001 to something audible.)&lt;br /&gt;
 Edit:Baddcog- These seem to now have been appended with a _z if you look at sound names in speaker dialog.&lt;br /&gt;
&lt;br /&gt;
If you alternatively use the address or the shader name from &amp;quot;Darkmod/sound/tdm_ambient_ambience.sndshd&amp;quot; (which lack the &amp;quot;leadin&amp;quot; property) it will otherwise work fine, but you won&#039;t be protected from that occasional little pop (at least until we find another fix).  For ambients that start quietly or areas that won&#039;t slow the system down, it will probably never even be a problem and the player will never hear it, so using the address is fine, or using the tdm_ambient_ambience shader name if you don&#039;t want the tiny pause for whatever reason.  But if you want to control it, use the tdm_ambient_ambience_zoned name, and for a custom sound, to pre-empt the pop you&#039;ll need to use a custom shader with the &amp;quot;leadin&amp;quot; line.  Use the &amp;quot;Darkmod/sound/tdm_ambient_ambience_zoned.sndshd&amp;quot; as a template to do that, and name the custom shader file something like YourFMsName.sndshd, and put it in the &amp;quot;sound&amp;quot; folder in your .pk4.&lt;br /&gt;
&lt;br /&gt;
=== Sound Properties ===&lt;br /&gt;
&lt;br /&gt;
Regarding properties, the speaker (the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity is a speaker in disguise :) has by default the properties &amp;quot;omni&amp;quot;, &amp;quot;global&amp;quot;, and &amp;quot;looping&amp;quot; already turned on, so that all sounds played are heard everywhere, from no direction, and will loop.  If you change these properties (e.g., for one ambient) the change will apply to all ambients on the speaker.  So you probably don&#039;t want to turn these properties off.  &lt;br /&gt;
&lt;br /&gt;
Another spawnarg worth noting is &amp;quot;s_volume&amp;quot;.  Since the location_settings also acts as a speaker, this will work to change volume (0=full volume, -10=half volume, -60=silence), again globally on all the ambients playing on it.  Unless you have a very good reason for doing so however (e.g., you want all your ambients much louder or quieter) you probably don&#039;t want to use the s_volume spawnarg.  If you want to change the volume of a specific ambient, you can do so on the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity with the &amp;quot;volume&amp;quot; spawnarg as described below (note some of the issues involved with volume changes there as well), not the location_settings entity (or directly in the sound&#039;s soundshader).  &lt;br /&gt;
&lt;br /&gt;
Your entity will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Speaker4.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sound Override ===&lt;br /&gt;
&lt;br /&gt;
From version 2.04, an &amp;quot;override&amp;quot; property for sounds has been added to the location settings entity. The purpose is to allow a mapper to easily override the location ambient to play their own sound, such as an ambient when a discovery is made, to build tension, action music when the player is seen, or for reading a book, etc., and then return to the location sounds when it&#039;s done. &lt;br /&gt;
&lt;br /&gt;
The default value for &amp;quot;override&amp;quot; is &amp;quot;0&amp;quot;, meaning override is turned off, so the location ambients play as normal. Although it looks boolean, the data type is a string, so it takes any characters. If at any time in-game you dynamically change &amp;quot;override&amp;quot; to any non-zero value (I&#039;ll explain how below), it will override the location ambients to allow you to play your own sound as long as it is non-zero. To turn location ambient sounds back on, you change &amp;quot;override&amp;quot; back to &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you change &amp;quot;override&amp;quot; to one of the pre-cached sound names (that is, a name with the &amp;quot;snd_&amp;quot; prefix mentioned above, such as &amp;quot;snd_alert&amp;quot;), then the location system will fade out the location ambient and play the ambient sound you registered under that name as an override ambient. If you open the console, it will report that the override ambient is playing. The override ambient will continue to play until override is changed back to zero or to another override ambient. This means if you just want to play a one-shot ambient, you need to use a script with a wait function that waits the duration of the ambient then turns override off to restore the location ambient, otherwise it will loop. Using the function sys.waitFor( $[speaker_name]); after running the speaker is supposed to automatically wait the duration, but this needs to be tested.  &lt;br /&gt;
&lt;br /&gt;
If you change the override property to another value (not a sound name) such as &amp;quot;1&amp;quot;, it will simply turn the system off, allowing the mapper to play a speaker in the silence if they prefer. &lt;br /&gt;
&lt;br /&gt;
There are two basic ways to change the &amp;quot;override&amp;quot; property dynamically, calling a script and triggering a target_setKeyVal entity in-game. &lt;br /&gt;
&lt;br /&gt;
1. Script. The script function to change a property on an entity is $tdm_location_settings_1.setKey( &amp;quot;override&amp;quot;, &amp;quot;[snd_name]&amp;quot;); to turn on an override sound and $[tls_1].setKey( &amp;quot;override&amp;quot;, &amp;quot;0&amp;quot;);  to turn the location ambients back on. Note because it&#039;s a string data type, you need to put zero in quote marks/inverted commas. Also be sure to use the right name for the location settings entity. It may not have a &amp;quot;_1&amp;quot; suffix. &lt;br /&gt;
&lt;br /&gt;
2. Target_setKeyVal. At the bottom of the entity list is target_setKeyVal (note it&#039;s not with other target entities). Create one of these entities and have it target the location settings entity (e.g., enter a property/key &amp;quot;target&amp;quot; &amp;quot;tdm_location_settings_1&amp;quot;). Now add the property/key &amp;quot;keyval&amp;quot; &amp;quot;override;snd_name&amp;quot; to turn on the override sound. Note you separate the propery and key with a semicolon and no space. Now when you trigger that entity with a trigger brush, button, or anything else, it will change the propery and your override ambient will fade in.  You can have another target_setkeyval entity with &amp;quot;keyval&amp;quot; &amp;quot;override;0&amp;quot; to turn override off and turn the location based ambients back on. &lt;br /&gt;
&lt;br /&gt;
The tdm_location_settings entity has also got new properties for fading behavior. Thus, the mapper can make the override ambient fade in as normal, or have it blast in with no fade-in if they want. These properties are the same &#039;fading&#039; type spawnargs as are on the info_location settings described below, and work in the same way, except they are on the location settings entity and only apply to override ambients. (Volume is not included however. You&#039;d just use the speaker property &amp;quot;s_volume&amp;quot; directly, but you&#039;d need to restore it after the override is over if you don&#039;t want the change applying to all sounds.) You can change them dynamically in the same way as override. If you have multiple overrides, some with fading and some without, and want to revert to the default fading without looking it up, you can enter &amp;quot;-1&amp;quot; as the value of a property and it uses the default value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are finished with the ambient sound part now.&lt;br /&gt;
&lt;br /&gt;
== The Ambient Light ==&lt;br /&gt;
&lt;br /&gt;
You need to create an ambient light in your level. This will cover the entire level, and provide a minimum default light for when there is no other light covering a surface:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;{{RMB}} -&amp;gt; Create light&#039;&#039;&#039;&lt;br /&gt;
# Move the light&#039;s origin to the center of your map, and drag its size so that it covers your entire map, and then some more. Remember to increase the size of that light when you build more area into your map!&lt;br /&gt;
# Open the light inspector (default shortcut {{key|L}}) and set the light texture to &#039;&#039;&#039;lights/ambientlightnfo&#039;&#039;&#039;&lt;br /&gt;
# Set the color of the light to a reasonable default, f.i. &amp;quot;.08 .08 .08&amp;quot; This value will be used when a zone has no other ambient light settings&lt;br /&gt;
# Open the entity inspector (default shortcut {{key|N}}) and set the name of the light to &#039;&#039;&#039;ambient_world&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The last step is important!&lt;br /&gt;
&lt;br /&gt;
You are done now with the global ambient light.&lt;br /&gt;
&lt;br /&gt;
== The Location Entities ==&lt;br /&gt;
&lt;br /&gt;
Now you need to set up the location system so the game knows where the zones are, and their boundaries where changes will happen.  A location is basically any area that&#039;s closed in by brushes and marked portals and contains an info_location entity. Unlike a vis-portaled area (which is one area between [[vis_portals]], a.k.a. a &amp;quot;leaf&amp;quot;), a zone can cover more than one portaled area (&amp;quot;leaves&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
As an aside, locations are also used for setting the EAX properties in the area (e.g., the echo-y-ness of a big hall or cave, or the dullness of a small carpeted room).  So you have a good reason to have them even in addition to handling ambient sounds and lights.  &lt;br /&gt;
&lt;br /&gt;
=== info_locationseparator ===&lt;br /&gt;
&lt;br /&gt;
As I suggested above, you have to mark all the portals leading in and out of a zone by hand.  You do this with an entity called a &#039;&#039;&#039;info_locationseparator&#039;&#039;&#039;.  Create one so it touches or pierces the portal you want as a boundary, and it will mark that portal as a location boundary. (Note, you only make one separator per portal. In the photo example below, the one separator is piercing the portal.) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_locationseparator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t touch a portal with this entity, than it will not register in the game as the boundary to a new zone, and the zone will continue into the area on the other side of the portal.  This happens even if you have a second info_location (described below) on the other side (the game will just pick one and use that for the whole zone).  This can be a good thing because, say you have a mansion with 30 portals inside.  You can cover the whole area inside it by just marking the 2 or 3 portals leading into the mansion area through the doors and open windows, and everything inside that marked area will be counted as one location (just don&#039;t miss marking an exit, or have an un-portaled gap to the outside between brushes, or the location will leak outside.  It has to be hermetically sealed).  &lt;br /&gt;
&lt;br /&gt;
I have read discussion that a door touching a portal marks it as a location boundary, but in my experiments the door did not create a new location and I still had to use a info_locationseparator over the portal to register it as a boundary.&lt;br /&gt;
&lt;br /&gt;
=== info_location ===&lt;br /&gt;
&lt;br /&gt;
Now, inside the zone you want to have, create an &#039;&#039;&#039;info_location&#039;&#039;&#039; entity:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;{{RMB}} -&amp;gt; Create entity -&amp;gt; Darkmod -&amp;gt; Info -&amp;gt; info_location&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Anywhere in the space of the zone is fine.  Name it the name of the zone you want (to make it easy to find when you push {{key|J}}).&lt;br /&gt;
&lt;br /&gt;
== Settings per location/zone ==&lt;br /&gt;
&lt;br /&gt;
On each info_location, you can set multiple spawnargs that adjust the light or sound for that location, as well&lt;br /&gt;
as run scripts. We cover them next:&lt;br /&gt;
&lt;br /&gt;
=== Ambient sound ===&lt;br /&gt;
&lt;br /&gt;
Now create a spawnarg property of &amp;quot;ambient&amp;quot; with the value being the speaker-name of the sound you used in the location_settings entity above (NOT the soundshader name or file name).  For example, &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;ambient&amp;quot;    &amp;quot;snd_streets&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will send a command to the location_settings (in its speaker capacity) to play the ambient it has registered under &amp;quot;snd_streets&amp;quot; that you entered.  When you enter a new zone, in turn, the new info_location sends a command to the speaker to turn off that ambient and start a new one.  &lt;br /&gt;
&lt;br /&gt;
If you wanted to have no ambient playing in the zone (and turn off any ambient started from another zone), you would use &amp;quot;snd_silence&amp;quot; as the value to command the speaker to turn off.  Also, if you have an info_location with no &amp;quot;ambient&amp;quot; value at all, it will also turn off the ambient (in the present version of this system).  That means if you make a new location but want the same ambient playing in it as the location next to it, you still need to add the ambient name for the already-playing ambient for it to continue playing into the new zone; otherwise it will turn off.  &lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Here are two info_locations on two sides of a portal, with one info_locationseparator touching the portal (actually piercing it), and with each info_location containing the name of the ambient that will play in its respective zone.&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_streets.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Snd_silence.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it.  The ambients will now turn on when you enter a zone and turn off when you enter a new zone, turning on the new ambient in that new zone (unless it&#039;s the same ambient, then it just keeps playing, useful e.g., if you want 2 different EAX but 1 ambient playing).  If you open up the console, you should see a message saying that a new ambient is now playing in your current location, naming the ambient and location.&lt;br /&gt;
&lt;br /&gt;
=== Sound Fading ===&lt;br /&gt;
&lt;br /&gt;
Finally, there are a few other spawnargs on the info_locations that you usually don&#039;t have to worry about (with the possible exception of &amp;quot;volume&amp;quot;), but you can use them if you like, so I will mention them.  They concern the properties of the ambient fading.  Check the &amp;quot;Show Inhereted Properties&amp;quot; to see their default values.  Entering a new value will over-write the default value, but only for that one object.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Info_loc.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
==== fiduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in duration&amp;quot;.  This is the length of time in seconds it takes for the in-coming ambient (the one for this zone) to completely fade-in.  The default value is 4 seconds.  You can, e.g., make the fade last much longer with a larger value.  &lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want your ambient to fade in at all, but start immediately at full volume, change this value to &amp;quot;.001&amp;quot; (NOT zero). &lt;br /&gt;
&lt;br /&gt;
==== foduration ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out duration&amp;quot;.  This is the length of time in seconds it takes for the out-going ambient (the one from the zone you&#039;re leaving) to completely fade-out.  Again, if you want it to cut right off without fading, use a value of &amp;quot;.001&amp;quot;.   &lt;br /&gt;
&lt;br /&gt;
==== fidelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade in Delay&amp;quot;.  You can delay the beginning of the in-coming ambient&#039;s fade-in after you enter the new area.  You might want to do this, for example, if you want the out-going ambient to completely fade out before you begin fading in the new ambient.  So you would set fidelay to the same time as the foduration.  By default it is set to .001 so that there is no delay and the fade in starts immediately.  If the out-going fade-out also starts immediately (which happens by default), then they blend together in a nice transition fade.  &lt;br /&gt;
&lt;br /&gt;
==== fodelay ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out Delay&amp;quot;.  Similarly you can delay the beginning of the out-going ambient&#039;s fade out.  You might want to do this if you wanted the in-coming ambient to completely fade in before you started the fade out of the old ambient.  Then you would set it to fiduration.  Like fidelay, it is set to .001 so there is no delay and the fade out starts immediately.  &lt;br /&gt;
&lt;br /&gt;
==== fovolume ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade out volume&amp;quot;.  This sets the volume to which the out-going ambient fades to.  -60 turns it off, which is the default (0 means no decrease in volume at all).  If you go any higher than -60, than it will leave the old ambient still playing at a lower volume under the new ambient (at least until you enter a 3rd new zone).  Not sure why you&#039;d ever want to do that, so you probably don&#039;t want to change it.  &lt;br /&gt;
&lt;br /&gt;
==== volume ====&lt;br /&gt;
&lt;br /&gt;
This allows the mapper to override the volume of the ambient sound once it has fully faded in, and uses the same decibel scale as the &#039;&#039;&#039;s_volume&#039;&#039;&#039; speaker parameter.  Note, though, that it uses the spanwarg &amp;quot;volume&amp;quot; instead.  I found a decibel-loudness calculator here: http://www.sengpielaudio.com/calculator-levelchange.htm that lets you compute the decibel number for relative loudness.  According to it, &amp;quot;0&amp;quot; is the native volume of the sound (the default), &amp;quot;-60&amp;quot; is silence, &amp;quot;-4&amp;quot; is 3/4 (.75) of the volume, &amp;quot;-10&amp;quot; is half (.5) the volume, &amp;quot;-17&amp;quot; is 0.3 of the volume, and it goes quickly down from there.  &amp;quot;10&amp;quot; is double, but be warned there may be problems with positive numbers (e.g., volume clipping) and you should keep it not far above 0 if at all.  See [[Setting Up Speakers#volume/ s_volume|&amp;quot;Volume / S_Volume&amp;quot;]] &amp;amp; [[Volume Issues]] for more detailed discussion of the volume parameter.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not override ambient volumes unless strictly necessary&#039;&#039;&#039;. Maps with wildly different ambient volume settings result in a poor experience for players, and limit the ability of the Dark Mod team to respond to volume-related issues by changing default volumes in sound shader declarations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These last two (&#039;&#039;&#039;foduration_2foip&#039;&#039;&#039; and &#039;&#039;&#039;fiduration_2foip&#039;&#039;&#039;) are pretty obscure situations, so you probably don&#039;t need to ever mess with them unless you want to completely get rid of ambient fades (then you can set them to .001 like the other &#039;fade duration&#039; properties).&lt;br /&gt;
&lt;br /&gt;
==== foduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-out duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  This provides a shorter fade-out duration (in seconds) for when the player quickly runs into a 3rd location, such that the 1st and 2nd ambients from areas the player just left are still fading out (hence the 2 fade-outs). But the quickend-fade-out only applies to the 1st ambient fading out. (i.e., not of the ambient you just left, but the one you left just before that -- unless you&#039;re backtracking, then it just fades the prev-prev ambient back in).  Fading out that prev-prev ambient more quickly in turn quickens the time the new fade-in can start (because you can&#039;t have 3 sounds on at the same time on the zone speaker, only 2).  So it in effect reduces the gap of quiet that happens before the newest ambient fully fades-in by enabling it to start its fade-in faster.  The default is 1 second.  &lt;br /&gt;
&lt;br /&gt;
==== fiduration_2foip ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fade-in duration during a &#039;2 Fade-outs in progress&#039; situation&amp;quot;.  Like its counterpart, this sets a shorter duration of a fade-in of a new ambient (in seconds) when you run into a 3rd location, while the ambients from the 1st and 2nd locations are fading out.  Again, because so many ambients are fading out, it can leave a gap of silence for a bit until the new 3rd ambient fades in.  So setting a shorter duration than usual for the newest ambient to fully fade in helps shorten the quiet space.  The default is 2 seconds (as opposed to a normal default fade-in duration of 4 seconds).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Example of Location with No Fading Transition ====&lt;br /&gt;
&lt;br /&gt;
As mentioned above, if you wanted a set-up that turned off all fades so that the out-going ambient shut directly off and the in-coming ambient turns directly on, you&#039;d change all the duration properties to .001, like the following image.  (Note that this modifies the transition only for entering this one location.  All the other info_locations maintain their default values unless you also change them by hand.)  &lt;br /&gt;
&lt;br /&gt;
[[image: Fade_duration.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=== Ambient light settings ===&lt;br /&gt;
&lt;br /&gt;
These spawnargs can be set on &#039;&#039;&#039;atdm:info_location&#039;&#039;&#039; entities and apply to the current zone then:&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This spawnarg specifies the ambient light color for this zone. Setting it f.i. to &amp;quot;0.10 0.02 0.02&amp;quot; would fade the ambient light to a slightly reddish color. This can be useful for covering a lava cave. Other examples are slightly blue light for moonlit outsides, greenish cast for caves or underwater areas etc.&lt;br /&gt;
&lt;br /&gt;
If you do not set this on an info_location entity, the default value of the global &amp;quot;ambient_world&amp;quot; entity will be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*You need to set the color values as fractions between 0 and 1, e.g. &#039;&#039;&#039;&amp;quot;0.08 0.08 0.02&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;NOT&#039;&#039;&#039; as integers like so &amp;lt;s&amp;gt;&amp;quot;8 8 2&amp;quot;&amp;lt;/s&amp;gt;, or it will not work.&lt;br /&gt;
&lt;br /&gt;
:*If the color change between two zones is too big, the fading and change can become obvious to the player and spoil the subtlety. This can happen for instance if you zoom from a bluish-lit outside directly to a reddish-glowing cave inside. To help the transition, consider adding an intermidiate zone with a light color that is either in between the two, or a more neutral grey. Making it not possible to look from one zone to the other also helps, this way they player can&#039;t see that f.i. the outside ground suddenly also glows reddish when looking back from the cave entrance to the outside.&lt;br /&gt;
&lt;br /&gt;
:*There&#039;s a bug with setting ambient_light to 0 0 0 (to be fixed in 2.05), so use 0.004 0.004 0.004 if you want to remove ambient light from a location.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_time&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds it will take to fade from the current ambient light color to the one specified for this location. A slower fade means more gradual light changes, so they don&#039;t become too obvious to the player. Use at least 3, better 5 or 7 seconds.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_fade_delay&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This specifies the time in seconds the fading will be delayed when the player changes location.&lt;br /&gt;
&lt;br /&gt;
Useful to prevent fades toggling back and forth when the player stands in a doorway and goes a nudge forward/backwards. A good value is at least 1 second.&lt;br /&gt;
&lt;br /&gt;
If set to -1, the default time specified at the &#039;&#039;&#039;atdm:location_settings&#039;&#039;&#039; entity will be used.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is a factor&#039;&#039;&#039;, all lights in the current area will be summed together and scaled by this value.&lt;br /&gt;
&lt;br /&gt;
If set to a value other than &amp;quot;0 0 0&amp;quot;, the lights in the current zone will be all summed together and then&lt;br /&gt;
added to the current base ambient light. This happens with the frequency of &#039;&#039;&#039;update_period&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The basic effect is that a roaring fire also slightly makes the walls flicker, and extinguishing all lights in a room would decrease the ambient light slightly.&lt;br /&gt;
&lt;br /&gt;
The factor should be set up so that for large and dark rooms (e.g. caves) the dynamic part is small, while for small, bright rooms (white walls) the dynamic part is bigger. Examples are: &amp;quot;0.05 0.05 0.05&amp;quot; and &amp;quot;0.1 0.1 0.1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that setting the dynamic factor to high can result in the player being busted by lights that are turned on in the room even when the player is in the shadow.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dynamic_cap&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Used to cap the dynamic ambient light part. If set to 0, will be ignored, so to have a very very small&lt;br /&gt;
cap, set to &amp;quot;0.01&amp;quot;, e.g. if you want only the red part to be dynamic, set it f.i. &amp;quot;0.15 0.01 0.01&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_falloff&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
&lt;br /&gt;
* -1 on info_location: use the value from the atdm:location_settings entity&lt;br /&gt;
* 0 - no dynamic falloff&lt;br /&gt;
* 0.5 - small, based on square root of distance&lt;br /&gt;
* 1 - medium, linear dynamic falloff (should be used as it looks best)&lt;br /&gt;
* 2 - high, square of distance based falloff&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ambient_light_dist_scale&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
A factor to scale the distance before applying a dynamic light falloff. Only used then &#039;&#039;&#039;ambient_light_dynamic_falloff&#039;&#039;&#039; is not 0. Good valuesa are around 1.0.&lt;br /&gt;
&lt;br /&gt;
See also the article about [[Dynamic ambient light]].&lt;br /&gt;
&lt;br /&gt;
=== Script calls ===&lt;br /&gt;
&lt;br /&gt;
The next four spawnargs all specify scripts to call when the player enters or exits a zone. Note that the very first zone is also &amp;quot;entered&amp;quot; by the player when the map starts. That means &amp;quot;call_once_on_entry&amp;quot; for the start zone should be called at start-time.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is left by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_once_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Called only once when the zone is entered by the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_exit&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player leaves that zone.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;call_on_entry&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Always called when the player enters that zone.&lt;br /&gt;
&lt;br /&gt;
==== Example scripts ====&lt;br /&gt;
&lt;br /&gt;
Here is an example script that spawns an object where the &#039;&#039;&#039;info_location&#039;&#039;&#039; entity is for the zone the player just left. You can call this script by setting:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;quot;call_once_on_exit&amp;quot; &amp;quot;spawn_pear&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
on your info_location entity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void spawn_pear( entity old_zone )&lt;br /&gt;
  {&lt;br /&gt;
  // Get the name of the location that the player just left:&lt;br /&gt;
  string location_name = old_zone.getName();&lt;br /&gt;
  // and display it on the console for debugging&lt;br /&gt;
  sys.print (&amp;quot;Spawning pear after leaving &amp;quot; + location_name + &amp;quot;\n&amp;quot;);&lt;br /&gt;
  // spawn the pear entity&lt;br /&gt;
  entity pear = sys.spawn(&amp;quot;atdm:moveable_food_pear&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // and now get the position of the old location entity:&lt;br /&gt;
  vector origin = old_zone.getOrigin();&lt;br /&gt;
  // finally move the pear to the point of the info_location&lt;br /&gt;
  pear.setOrigin( origin );&lt;br /&gt;
  // so once the player exits this location, ONE pear will spawn and fall down&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example script to turn entities on/off when player enters a location ====&lt;br /&gt;
The basic problem with normal TDM entity work is the difficulty of turning something deliberately and reliably on or off. You never turn something on or off, but instead you send toggles to the entities. Let&#039;s say you have a omni sound (a sound which is heard everywhere) which you need to shut off when the player goes to a certain location. Trigger_multiples trigger targets when the player stands on their volume, which may result in a completely wrong situation depending how long the player stands on the trigger.&lt;br /&gt;
&lt;br /&gt;
Location entity scripting can be of great help in here. This kind of scripting can generally solve any kind of problems where the mapper want something to be switched specifically on and off when the player moves to a specific location. Here is an example, which was used to switch off a global thunder sound when the player moves to a location where the rumbling cannot be heard.&lt;br /&gt;
&lt;br /&gt;
Set up location setting as described above. Put a location separator on the visportal you want to be the point which switches your target on/off. Give the info_location-entity spawnargs &lt;br /&gt;
*call_on_entry yourscript&lt;br /&gt;
*call_on_exit yourscript&lt;br /&gt;
&lt;br /&gt;
Then go and create in your /maps folder a file yourmapname.script. Put in the following data there:&lt;br /&gt;
&lt;br /&gt;
 void yourscript(entity old_zone)&lt;br /&gt;
 {&lt;br /&gt;
 sys.println(&amp;quot;script yourscript running..&amp;quot;);&lt;br /&gt;
 sys.trigger( $entity_name );&lt;br /&gt;
 }&lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*yourscript is the name of your script you call.&lt;br /&gt;
*sys.println is a debug feature which gives the text in console when the script is triggered. You can leave it for testing and remove it before releasing your map.&lt;br /&gt;
*sys.trigger ($entity_name) replace the entity_name with the entity which you want to be triggered.&lt;br /&gt;
&lt;br /&gt;
Now your system works like this: &lt;br /&gt;
*When the player is outside the location everything is normal. Ie sound off, light off, etc.&lt;br /&gt;
*When the player enters the location, entity_name gets triggered once. Ie sound on, light on, etc.&lt;br /&gt;
*When the player leaves the location, entity_name gets triggered again. Ie sound off, light off, etc.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Adding ambient Sounds to your Map]]&lt;br /&gt;
* [[Dynamic ambient light]].&lt;br /&gt;
* [[Ambient Sounds - Zone (using triggers)]]&lt;br /&gt;
* [[Sound File Formats]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-sound}}&lt;br /&gt;
{{editing}}&lt;br /&gt;
{{tutorial-scripting}}&lt;br /&gt;
[[Category:Ambient Light]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.01&amp;diff=19974</id>
		<title>TDM Script Reference/2.01</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.01&amp;diff=19974"/>
		<updated>2018-05-07T14:49:34Z</updated>

		<summary type="html">&lt;p&gt;Grayman: Grayman moved page TDM Script Reference/2.01 to TDM Script Reference/2.06: New release of TDM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[TDM Script Reference/2.06]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.06&amp;diff=19973</id>
		<title>TDM Script Reference/2.06</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.06&amp;diff=19973"/>
		<updated>2018-05-07T14:49:33Z</updated>

		<summary type="html">&lt;p&gt;Grayman: Grayman moved page TDM Script Reference/2.01 to TDM Script Reference/2.06: New release of TDM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been generated automatically by the tdm_gen_script_event_doc console command.&lt;br /&gt;
&lt;br /&gt;
Generated by The Dark Mod 2.06, code revision 7382, last update: 2018-05-07 10:39&lt;br /&gt;
&lt;br /&gt;
{{tdm-scripting-reference-intro}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;toclimit-4&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
= TDM Script Event Reference =&lt;br /&gt;
&lt;br /&gt;
== All Events ==&lt;br /&gt;
=== Alphabetic List ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover accelerates.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the acceleration time. Set this acceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates an acceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CTarget_AddObjectives&#039;&#039;, &#039;&#039;CTarget_CallScriptFunction&#039;&#039;, &#039;&#039;CTarget_ChangeEntityRelation&#039;&#039;, &#039;&#039;CTarget_ChangeLockState&#039;&#039;, &#039;&#039;CTarget_ChangeTarget&#039;&#039;, &#039;&#039;CTarget_InterMissionTrigger&#039;&#039;, &#039;&#039;CTarget_ItemRemove&#039;&#039;, &#039;&#039;CTarget_SetEntityRelation&#039;&#039;, &#039;&#039;CTarget_SetFrobable&#039;&#039;, &#039;&#039;CTarget_SetObjectiveComponentState&#039;&#039;, &#039;&#039;CTarget_SetObjectiveState&#039;&#039;, &#039;&#039;CTarget_SetObjectiveVisibility&#039;&#039;, &#039;&#039;CTarget_SetRelations&#039;&#039;, &#039;&#039;CTarget_SetTeam&#039;&#039;, &#039;&#039;CTarget_StartConversation&#039;&#039;, &#039;&#039;idAFEntity_Generic&#039;&#039;, &#039;&#039;idAFEntity_WithAttachedHead&#039;&#039;, &#039;&#039;idAI&#039;&#039;, &#039;&#039;idActivator&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;, &#039;&#039;idBeam&#039;&#039;, &#039;&#039;idBrittleFracture&#039;&#039;, &#039;&#039;idCameraAnim&#039;&#039;, &#039;&#039;idCameraView&#039;&#039;, &#039;&#039;idCombatNode&#039;&#039;, &#039;&#039;idDamagable&#039;&#039;, &#039;&#039;idEarthQuake&#039;&#039;, &#039;&#039;idEntityFx&#039;&#039;, &#039;&#039;idExplodable&#039;&#039;, &#039;&#039;idForceField&#039;&#039;, &#039;&#039;idFuncAASObstacle&#039;&#039;, &#039;&#039;idFuncAASPortal&#039;&#039;, &#039;&#039;idFuncPortal&#039;&#039;, &#039;&#039;idFuncSmoke&#039;&#039;, &#039;&#039;idItem&#039;&#039;, &#039;&#039;idLight&#039;&#039;, &#039;&#039;idMoveable&#039;&#039;, &#039;&#039;idMover&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;, &#039;&#039;idPhantomObjects&#039;&#039;, &#039;&#039;idPlayerStart&#039;&#039;, &#039;&#039;idPortalSky&#039;&#039;, &#039;&#039;idRiser&#039;&#039;, &#039;&#039;idRotater&#039;&#039;, &#039;&#039;idShaking&#039;&#039;, &#039;&#039;idSound&#039;&#039;, &#039;&#039;idStaticEntity&#039;&#039;, &#039;&#039;idTarget_CallObjectFunction&#039;&#039;, &#039;&#039;idTarget_Damage&#039;&#039;, &#039;&#039;idTarget_EnableLevelWeapons&#039;&#039;, &#039;&#039;idTarget_EndLevel&#039;&#039;, &#039;&#039;idTarget_FadeEntity&#039;&#039;, &#039;&#039;idTarget_FadeSoundClass&#039;&#039;, &#039;&#039;idTarget_Give&#039;&#039;, &#039;&#039;idTarget_LightFadeIn&#039;&#039;, &#039;&#039;idTarget_LightFadeOut&#039;&#039;, &#039;&#039;idTarget_PostScriptEvent&#039;&#039;, &#039;&#039;idTarget_Remove&#039;&#039;, &#039;&#039;idTarget_RemoveWeapons&#039;&#039;, &#039;&#039;idTarget_SessionCommand&#039;&#039;, &#039;&#039;idTarget_SetFov&#039;&#039;, &#039;&#039;idTarget_SetGlobalShaderTime&#039;&#039;, &#039;&#039;idTarget_SetInfluence&#039;&#039;, &#039;&#039;idTarget_SetKeyVal&#039;&#039;, &#039;&#039;idTarget_SetModel&#039;&#039;, &#039;&#039;idTarget_SetShaderParm&#039;&#039;, &#039;&#039;idTarget_SetShaderTime&#039;&#039;, &#039;&#039;idTarget_Show&#039;&#039;, &#039;&#039;idTarget_WaitForButton&#039;&#039;, &#039;&#039;idTrigger_Count&#039;&#039;, &#039;&#039;idTrigger_EntityName&#039;&#039;, &#039;&#039;idTrigger_Fade&#039;&#039;, &#039;&#039;idTrigger_Hurt&#039;&#039;, &#039;&#039;idTrigger_Multi&#039;&#039;, &#039;&#039;idTrigger_Timer&#039;&#039;, &#039;&#039;idTrigger_Touch&#039;&#039;, &#039;&#039;idVacuumSeparatorEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateContacts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Activate objects sitting on this object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateTargets&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Causes this entity to activate all it&#039;s targets. Similar to how a trigger activates entities.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addDescendant&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addInvItem&#039;&#039;&#039;(entity inv_item); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the given item to the inventory. Depending on the type the passed entity will be removed from the game (as for loot items) or hidden.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addItemToInv&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the entity to the given entity&#039;s inventory. Depending on the type the entity will be removed from the game (as for loot items) or hidden. Example: $book-&amp;gt;addItemToInv($player1);&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Add a target to this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to add as target&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addToClip&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alert&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alertAI&#039;&#039;&#039;(string type, float amount, entity actor); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: alert type&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: alert amount&lt;br /&gt;
::&#039;&#039;actor&#039;&#039;: actor causing alert&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can take damage again.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDrop&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowHiddenMovement&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Normally, when hidden, monsters do not run physics. This enables physics when hidden.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowMovement&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoAvailable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Number of shots left in inventory&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoInClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToForward&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a forward vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToRight&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a right vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToUp&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an up vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDistance&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance that the anim travels. If the entity has multiple anims with animName, the distance may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animDistance.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDone&#039;&#039;&#039;(float channel, float blendOutFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the animation playing on the given channel is completed considering a number of blend frames.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animIsPaused&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Return whether the given anim channel is paused&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animLength&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the anim in seconds. If the entity has multiple anims with animName, length may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animLength.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animState&#039;&#039;&#039;(float channel, string stateFunction, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a new animation state script function for the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animTurn&#039;&#039;&#039;(float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Enable/disable animation controlled turning.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Pass in the maximum # of degrees the animation turns. Use an amount of 0 to disable.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;applyImpulse&#039;&#039;&#039;(entity source, float bodyid, vector point, vector impulse); ====&lt;br /&gt;
&lt;br /&gt;
:Applies an impulse to the entity. Example: entity.applyImpulse($player1, 0, entity.getOrigin(), &#039;0 0 2&#039;);&lt;br /&gt;
::&#039;&#039;source&#039;&#039;: Pass $null_entity or the entity that applies the impulse&lt;br /&gt;
::&#039;&#039;bodyid&#039;&#039;: For articulated figures, ID of the body, 0 for the first (main) body. Otherwise use 0.&lt;br /&gt;
::&#039;&#039;point&#039;&#039;: Point on the body where the impulse is applied to&lt;br /&gt;
::&#039;&#039;impulse&#039;&#039;: Vector of the impulse&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;assert&#039;&#039;&#039;(float condition); ====&lt;br /&gt;
&lt;br /&gt;
:Breaks if the condition is zero. (Only works in debug builds.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attach&#039;&#039;&#039;(entity ent, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI. Entity spawnArgs checked for attachments are:  - &amp;quot;origin&amp;quot;, &amp;quot;angles&amp;quot;, and &amp;quot;joint&amp;quot;. These must be set prior to calling attach.&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attachToPos&#039;&#039;&#039;(entity ent, string position, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI, using a named attachment position&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackBegin&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;attackMelee&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the attack hit&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;attackMissile&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile fired&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bark&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Let the AI bark a certain sound.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: sound name, e.g. &#039;snd_warn_response&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeNonSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes the moveable non-solid for other entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;, &#039;&#039;idMoveable&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;becomeRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables the ragdoll if the entity has one&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bind&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindPosition&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position (but not orientation) relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToBody&#039;&#039;&#039;(entity master, float bodyID, float orientated); ====&lt;br /&gt;
&lt;br /&gt;
:Bind to AF body&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: entity to bind to&lt;br /&gt;
::&#039;&#039;bodyID&#039;&#039;: AF body ID to bind to&lt;br /&gt;
::&#039;&#039;orientated&#039;&#039;: binds the orientation as well as position, if set to 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToJoint&#039;&#039;&#039;(entity master, string boneName, float rotateWithMaster); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to a bone on another entity, such that when the master&#039;s bone moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
::&#039;&#039;boneName&#039;&#039;: the bone name&lt;br /&gt;
::&#039;&#039;rotateWithMaster&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bob&#039;&#039;&#039;(float speed, float phase, vector distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation back and forth along the given vector with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;burn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cacheSoundShader&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensure the specified sound shader is loaded by the system. Prevents cache misses when playing sound shaders.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to cache&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a function on an entity&#039;s script object. See also callGlobalFunction().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGlobalFunction&#039;&#039;&#039;(string functionName, entity other); ====&lt;br /&gt;
&lt;br /&gt;
:calls a global function and passes the other entity along as the first argument calls the function in a new thread, so it continues executing in the current thread right away (unlike entity.callFunction( &amp;quot;blah&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGui&#039;&#039;&#039;(float handle, string namedEvent); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a named event in a GUI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBecomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBeUsedBy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the entity can be used by the argument entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromJoint&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canPlant&#039;&#039;&#039;(vector traceStart, vector traceEnd, entity ignore, entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to enemy&#039;s position. For walking monsters, enemy should be near the floor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to entity&#039;s position. For walking monsters, entity should be near the floor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachPosition&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to specified position. For walking monsters, position should be near the floor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSee&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeEntity&#039;&#039;&#039;(entity target, float useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is a general version of idAI::canSee, that can be used by all entities. It doesn&#039;t regard FOV, it just performs a trace to check whether the target is occluded by world geometry. Is probably useful for stim/response as well Pass useLighting = true to take the lighting of the target entity into account. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold. The constant threshold value for useLighting is defined within the SDK in game/entity.h.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeExt&#039;&#039;&#039;(entity ent, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee that can optionally choose to use field of vision and lighting calculations.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If b_useLighting is 0 the entity will be visible in complete darkness. If it is 1, the entity will only be visible if there is light shining on it, but the slightest light is enought. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold instead.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeePositionExt&#039;&#039;&#039;(vector position, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSeeExt that tests a location rather than an entity. Note that any actor at the position may make it not seeable from a distance.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If 0 the entity will be visible in complete darkness&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canWater&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ceil&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the smallest integer that is greater than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeEntityRelation&#039;&#039;&#039;(entity ent, float relationChange); ====&lt;br /&gt;
&lt;br /&gt;
:This changes the current relation to an entity by adding the new amount.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvIcon&#039;&#039;&#039;(string name, string category, string icon); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory icon of the given item in the given category to &amp;lt;icon&amp;gt;.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvItemCount&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Decreases the inventory item stack count by amount. The item is addressed using the name and category of the item. These are usually defined on the inventory item entity (&amp;quot;inv_name&amp;quot;, &amp;quot;inv_category&amp;quot;)  Amount can be both negative and positive.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvLightgemModifier&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the lightgem modifier value of the given item. Valid arguments are between 0 and 32 (which is the maximum lightgem value).&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;changeLootAmount&#039;&#039;&#039;(float type, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the loot amount of the given Type (e.g. GOODS) by &amp;lt;amount&amp;gt;.  The mission statisic for loot found gets changed too.  The new value of the changed type is returned (e.g. the new GOODS value if this has been changed).  Note: The LOOT_TOTAL type can&#039;t be changed and 0 is returned.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: can be negative&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponName&#039;&#039;&#039;(string weaponName, string displayName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the display name of the given weapon item to something different. Pass an empty string to reset the display name to the definition as found in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponProjectile&#039;&#039;&#039;(string weaponName, string projectileDefName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the projectile entityDef name of the given weapon (e.g. &amp;quot;broadhead&amp;quot;) to the specified entityDef (e.g. &amp;quot;atdm:projectile_broadhead&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;chargeAttack&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAAS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAbsence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:description missing&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensures that the animation exists and causes an error if it doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;chooseAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Chooses a random anim and returns the name. Useful for doing move tests on anims.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMapEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearAllJoints&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on all joints.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearController&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Need separate clearController because scripting doesn&#039;t like passing in $null_entity? (greebo: one could remove this function and set the argument type of setController to &#039;E&#039;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the enemy entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearFlyOffset&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at to the value set in the def file.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearJoint&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on the specified joint.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearMouseDeadTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearPersistantArgs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears data that persists between maps.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearSignal&#039;&#039;&#039;(float signalNum); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the callback function on the specified signal.&lt;br /&gt;
::&#039;&#039;signalNum&#039;&#039;: signal number&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearSignalThread&#039;&#039;&#039;(float signalNum, entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the script callback function set for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;clipSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Close&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the frobmover, regardless of its previous state. Mover must be open, otherwise nothing happens.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;closePortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestEnemyToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the enemy closest to the given location.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Used for determining tactile alert targets&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemyOfEntity&#039;&#039;&#039;(entity team_mate); ====&lt;br /&gt;
&lt;br /&gt;
:Finds another character&#039;s closest reachable enemy&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copyBind&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:copy bind information of other to this entity (i.e., bind this entity to the same entity that other is bound to)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copySpawnArgs&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:copies the spawn args from an entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;cos&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cosine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissile&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile created&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissileFromDef&#039;&#039;&#039;(string defName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;createOverlay&#039;&#039;&#039;(string guiFile, float layer); ====&lt;br /&gt;
&lt;br /&gt;
:Creates a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;CreateTimer&#039;&#039;&#039;(float stimId, float hour, float minutes, float seconds, float milliseconds); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;CrossProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cross product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cullAll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cull (remove from world) all entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;Seed&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;customDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;damage&#039;&#039;&#039;(entity inflictor, entity attacker, vector dir, string damageDefName, float damageScale); ====&lt;br /&gt;
&lt;br /&gt;
:Deals damage to this entity (gets translated into the idEntity::Damage() method within the SDK).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage (maybe a projectile)&lt;br /&gt;
::&#039;&#039;attacker&#039;&#039;: the &amp;quot;parent&amp;quot; entity of the inflictor, the one that is responsible for the inflictor (can be the same)&lt;br /&gt;
::&#039;&#039;dir&#039;&#039;: the direction the attack is coming from.&lt;br /&gt;
::&#039;&#039;damageDefName&#039;&#039;: the name of the damage entityDef to know what damage is being dealt to &amp;lt;self&amp;gt; (e.g. &amp;quot;damage_lava&amp;quot;)&lt;br /&gt;
::&#039;&#039;damageScale&#039;&#039;: the scale of the damage (pass 1.0 as default, this should be ok).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dampenSound&#039;&#039;&#039;(float dampen); ====&lt;br /&gt;
&lt;br /&gt;
:Toggle whether the shattering sound is dampened on the window, e.g., when covered by moss.&lt;br /&gt;
::&#039;&#039;dampen&#039;&#039;: 1 = dampened, 0 = not dampened&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idBrittleFracture&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;deathMenu&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debug_tdm_material&#039;&#039;&#039;(string file); ====&lt;br /&gt;
&lt;br /&gt;
:For temporary debuging purposes only. Should be removed eventually.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugArrow&#039;&#039;&#039;(vector color, vector start, vector end, float size, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugBounds&#039;&#039;&#039;(vector color, vector mins, vector maxs, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugCircle&#039;&#039;&#039;(vector color, vector origin, vector dir, float radius, float numSteps, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugLine&#039;&#039;&#039;(vector color, vector start, vector end, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover decelerates.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the deceleration time. Set this deceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a deceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;destroyOverlay&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Destroys a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;directDamage&#039;&#039;&#039;(entity damageTarget, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;Seed&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;, &#039;&#039;idTrigger&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAnimchannel&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Used to disable a certain animchannel (for example if the ai is dead)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables eye focus.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:disables leg IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables pain animations.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:disables walk IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Lowers and disables the player weapon.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to a point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;DotProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the dot product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;drawText&#039;&#039;&#039;(string text, vector origin, float scale, vector color, float align, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:text drawing for debugging. lifetime of 0 == 1 frame.&lt;br /&gt;
::&#039;&#039;align&#039;&#039;: 0 = left, 1 = center, 2 = right&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given attachment name.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropTorch&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ejectBrass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitParticle&#039;&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle); ====&lt;br /&gt;
&lt;br /&gt;
:Start a particle effect in the world without using an entity emitter. Will emit one quad per particle stage when first called with sys.getTime() as the start time. Designed to be called once per frame with the same startTime each call to achieve a normal particle effect, or on demand with sys.getTime() as the startTime for finer grained control, 1 quad at a time. Returns True (1) if there are more particles to be emitted from the stage, False (0) if the stage has released all its quads.&lt;br /&gt;
::&#039;&#039;particle&#039;&#039;: String: name of particle effect.&lt;br /&gt;
::&#039;&#039;startTime&#039;&#039;: Game seconds since map start: use sys.getTime() for the first call unless you want to back-date the particle so that it starts part way through its cycle.&lt;br /&gt;
::&#039;&#039;diversity&#039;&#039;: Randomizer value between 0 and 1. All particles with the same diversity will have the same path and rotation. Use sys.random(1) for a random path.&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: Origin of the particle effect.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Axis for the particle effect. Use $&amp;lt;entityname&amp;gt;.getAngles() to align the particle to an entity. use &#039;0 0 0&#039; for an upright (world-aligned) particle effect.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emitterAddModel&#039;&#039;&#039;(string modelName, vector modelOffset); ====&lt;br /&gt;
&lt;br /&gt;
:Adds a new particle (or regular, if you wish) model to the emitter, located at modelOffset units away from the emitter&#039;s origin.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idFuncEmitter&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitterGetNumModels&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of models/particles this emitter has. Always &amp;gt;= 1.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idFuncEmitter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emptyHand&#039;&#039;&#039;(string hand); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;Seed&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;, &#039;&#039;idTrigger&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAnim&#039;&#039;&#039;(float channel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Enables animation on the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableDamage&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enable/disable damage&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMoveable&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables eye focus.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:enables leg IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables pain animations.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables walk IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the player weapon.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;endState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Ends the current state with the given name, returns TRUE if more than one state is remaining.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;endZoom&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Starts the zoom out event, which performs a gradual transition back to the default FOV. May be called during a transition as well to intercept a pending zoom in transition.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyInCombatCone&#039;&#039;&#039;(entity combatNode, float use_current_enemy_location); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyPositionValid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange2D&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;entityInAttackCone&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;error&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues an error.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;exitTeleporter&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;extinguishLights&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Extinguishes all lights (i.e. the &amp;lt;self&amp;gt; entity plus all bound lights)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;facingIdeal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeIn&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades towards the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeInLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light on over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOut&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades from the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOutLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light out over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeSound&#039;&#039;&#039;(float channel, float newLevel, float fadeTime); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the sound on this entity to a new level over a period of time.  Use SND_CHANNEL_ANY for all currently playing sounds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeTo&#039;&#039;&#039;(vector color, float alpha, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades to the given color up to the given alpha over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeToLight&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the light to the given color over a given time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findActorsInBounds&#039;&#039;&#039;(vector mins, vector maxs); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an entity within the bounds specified&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemy&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in PVS&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyAI&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy monster in PVS&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyInCombatNodes&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in attack cones&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findFriendlyAI&#039;&#039;&#039;(float team); ====&lt;br /&gt;
&lt;br /&gt;
:Use this to find a visible AI friendly to ourselves. It basically iterates over all active entities in the map and looks for friendly actors. The pythagorean distance is taken to evaluate the distance.  Don&#039;t call this every frame, this might get expensive in larger maps. Returns the nearest visible actor entity or the $null_entity, if none was found.&lt;br /&gt;
::&#039;&#039;team&#039;&#039;: used to constrain the search to a given team. Set this to -1 to let the code ignore this argument&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishAction&#039;&#039;&#039;(string action); ====&lt;br /&gt;
&lt;br /&gt;
:Finishes the given wait action.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishChannelAction&#039;&#039;&#039;(float channel, string animname); ====&lt;br /&gt;
&lt;br /&gt;
:Overloaded finishAction function for setting the waitstate on each channel separately&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;fireMissileAtTarget&#039;&#039;&#039;(string jointname, string targetname); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a missile at entity specified by &#039;attack_target&#039;.  returns projectile fired&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;firstPerson&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns view control to the player entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;flashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;flee&#039;&#039;&#039;(entity entToFleeFrom, float algorithm, float distanceOption); ====&lt;br /&gt;
&lt;br /&gt;
:Flee from the given entity. Pass the escape point lookup algorithm (e.g. EP_FIND_GUARDED) and the distanceOption (e.g. EP_DIST_NEAREST) to specify how the best escape point can be found. Refer to the tdm_defs.script file to see all the constants.  When algorithm is set to EP_FIND_AAS_AREA_FAR_FROM_THREAT, the distanceOption is interpreted as minimum threat distance. Returns FALSE if no escape point could be found.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;floor&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the largest integer that is less than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;footstep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;foundBody&#039;&#039;&#039;(entity body); ====&lt;br /&gt;
&lt;br /&gt;
:Objective callback for when an AI finds a body.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;frob&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Frobs the entity (i.e. simulates a frob action performed by the player). Returns TRUE if the entity is frobable, FALSE otherwise.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobHilight&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:ishtvan: Tries to make the entity frobhilight or not&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobRidable&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Called when a player directly mounts or dismounts a ridable AI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Gas_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getActualStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAcuity&#039;&#039;&#039;(string type); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAlertActor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the actor that alerted the AI in this frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAlertLevelOfOtherAI&#039;&#039;&#039;(entity otherEntity); ====&lt;br /&gt;
&lt;br /&gt;
:This event gets the alert number of another AI (AI_AlertLevel variable value) Returns the alert number of the other AI, 0.0 if its not an AI or is NULL&lt;br /&gt;
::&#039;&#039;otherEntity&#039;&#039;: the other AI entity who&#039;s alert number is being queried&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current orientation of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the angular velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getAnimState&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current animation state script function used for the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity with the given attachment name Will be NULL if the name is invalid or if the entity no longer exists&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity at the given index. Will be NULL if the index is invalid or the entity no longer exists&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttacker&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the attacking entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAttackFlag&#039;&#039;&#039;(float combatType); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the given attack flag is activated.&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAudThresh&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAxialDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindChild&#039;&#039;&#039;(float ind); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the ind_th bind child of this entity or NULL if index is invalid. NOTE: indices start at zero&lt;br /&gt;
::&#039;&#039;ind&#039;&#039;: child index&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindMaster&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity&#039;s bindmaster&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBlendFrames&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBoolKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the boolean value of a specific spawn arg, defaulting to false.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getButtons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the button state from the current user command.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getClipMask&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getClosestHiddenTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds the closest targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getColor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCombatNode&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getContents&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvCategory&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory category.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvIcon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the icon of the currently highlighted inventory item.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCurInvItemEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently highlighted inventory item entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemId&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_item_id&amp;quot;). Most items will return an empty string, unless the &amp;quot;inv_item_id&amp;quot; is set on purpose.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_name&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentMissionNum&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the current mission (0-based, the first mission has number 0).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurrentWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player is currently holding.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentYaw&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurWeaponName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current weapon, as defined by &amp;quot;inv_weapon_name&amp;quot; in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getcvar&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for a cvar.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getDifficultyLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 0 (Easy), 1 (Medium) or 2 (Hard), depending on the difficulty level of the current mission.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getDifficultyName&#039;&#039;&#039;(float difficultyLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the (translated) name of the difficulty level passed as the argument.&lt;br /&gt;
::&#039;&#039;difficultyLevel&#039;&#039;: 0 (Easy), 1 (Medium), 2 (Hard)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated door entity for this handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobDoorHandle&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoorhandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the handle entity of this door. Can return NULL (== $null_entity)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobDoor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getDragged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently dragged body. Returns $null_entity if the body is shouldered, the player has nothing in his hands, or he has a non-AF entity in his hands. See also getShouldered(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntity&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity with the specified name.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntityKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the entity specified by the spawn arg.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get eye position of the player and the AI&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalAngVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFloatKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the floating point value of a specific spawn arg, defaulting to 0.0f.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the current FOV of the player. You can modify the current FOV with startZoom() and endZoom().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;GetFractionalPosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a fraction between 0.00 (closed) and 1.00 (open).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFrameTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the length of time between game frames.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getFrobbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently frobhilighted entity. This includes entities the player has in his hands. Sets &amp;quot;frob only used by&amp;quot; mode&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getGrabbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently entity in the players hands. Returns $null_entity if the player has nothing in his hands Dragging or shouldering a body counts as grabbing it. See also getDragged(), getShouldered(), getFrobbed().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGui&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the file currently loaded by a GUI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiFloat&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiInt&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGuiString&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getHead&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity used for the character&#039;s head, if it has one.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getHealth&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current health.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getIdealWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getImmobilization&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIncidenceAngle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIntKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the integer value of a specific spawn arg, defaulting to 0.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getInventoryOverlay&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the default inventory overlay for the player. All other entities will return an invalid value.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointAngle&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the angular orientation of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getJointHandle&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:Looks up the number of the specified joint. Returns INVALID_JOINT if the joint is not found.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointPos&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJumpVelocity&#039;&#039;&#039;(vector pos, float speed, float max_jump_height); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the value of a specific spawn arg, defaulting to &#039;&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightInPVS&#039;&#039;&#039;(float falloff, float scaling); ====&lt;br /&gt;
&lt;br /&gt;
:Computes the sum of all light in the PVS of the entity you call this on, and returns a vector with the sum.&lt;br /&gt;
::&#039;&#039;falloff&#039;&#039;: 0: no falloff with distance  0.5: sqrt(linear) falloff	(dist 100 =&amp;gt; 1/10)  1: linear falloff			(dist 100 =&amp;gt; 1/100)  2: square falloff			(dist 100 =&amp;gt; 1/10000) &lt;br /&gt;
::&#039;&#039;scaling&#039;&#039;: factor to scale the distance, can be used to lower/raise distance factor  after the linear or square scaling has been used good looking values are approx: sqrt(linear): 0.01, linear: 0.1, square 1.0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get level (intensity) of a light, &amp;lt;= 0.0 indicates it is off&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the light origin (independent of its visual model)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightParm&#039;&#039;&#039;(float parmNum); ====&lt;br /&gt;
&lt;br /&gt;
:Gets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current linear velocity of this entity. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the linear velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getLocation&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the idLocation entity corresponding to the entity&#039;s current location. This was player-specific before, but is now available to all entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated lock of this handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobLockHandle&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLootAmount&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the amount of loot for the given type (e.g. LOOT_GOODS). Pass LOOT_TOTAL to return the sum of all loot types.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY, LOOT_TOTAL&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getMainAmbientLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity of the main ambient light.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMass&#039;&#039;&#039;(float body); ====&lt;br /&gt;
&lt;br /&gt;
:Gets mass of a body for an entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMaxs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the maximum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActPhase&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action phase (holding,recovering,etc).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action state (attacking/defending).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action type (overhead,thrust,etc.).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastActTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type of the last attack to hit this actor. Defaults to MELEETYPE_UNBLOCKABLE if we were not hit before.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastHitByType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the game time that the most recent melee action ended (in ms)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeResult&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the result of the last melee action Follows MELEERESULT_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMins&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the minimum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMissionStatistic&#039;&#039;&#039;(string statisticName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns current mission statistic.&lt;br /&gt;
::&#039;&#039;statisticName&#039;&#039;: Can be one of (case insensitive): 	gamePlayTime: gameplay time in seconds 	damageDealt: damage dealt to enemies 	damageReceived: damage received by player 	healthReceived: health received by player 	pocketsPicked: pockets picked by player 	foundLoot: loot found by player 	missionLoot: total loot available in mission 	totalTimePlayerSeen: total time the player was seen by enemies in seconds. Updates only when AI lose sight of player 	numberTimesPlayerSeen: number of times player was seen by enemies 	numberTimesAISuspicious: number of times AI was &#039;observant&#039; or &#039;suspicious&#039;. A single AI passing through both alert levels will add 2 to the score. 	numberTimesAISearched: number of times AI was &#039;investigating&#039; or &#039;searching&#039;. A single AI passing through both alert levels will add 2 to the score. 	sightingScore: sighting score (number of times player was seen * weight) 	stealthScore: stealth score (sighting score + alerts * weights) 	killedByPlayer: number of enemies killed by player 	knockedOutByPlayer: number of enemies knocked out by player 	bodiesFound: number of times enemies have spotted a body &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the results of the last mouse gesture in enum form. (see the definition for MOUSEDIR_* for which numbers correspond to which directions)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the movement relative to the player&#039;s view angles from the current user command. vector_x = forward, vector_y = right, vector_z = up&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getMoveAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the player-requested movement anim for a player controlled AI vehicle&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveSpeed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the movement speed.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the movement time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current movetype&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextEntity&#039;&#039;&#039;(string key, string value, entity lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Discover all entities in the map. Returns $null_entity when no more found.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: Optional string: prefix for spawnarg key match. E.g. &amp;quot;target&amp;quot; will match &amp;quot;target&amp;quot;, &amp;quot;target1&amp;quot; etc.&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: Optional string: spawnarg value to match. Can be used independently of &#039;&#039;key&#039;&#039;. If &#039;&#039;key&#039;&#039; is not set, all spawnargs will be checked for the value.&lt;br /&gt;
::&#039;&#039;lastMatch&#039;&#039;: Last match: search will start after this entity. Use $null_entity or pass an uninitialized entity variable to start a new search.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the next hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextIdleAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the name of the next idle anim to be played on this AI (used by AnimState scripts).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextImmobilization&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the next inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextKey&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Searches for the name of a spawn arg that matches the prefix.  For example, passing in &amp;quot;attack_target&amp;quot; matches &amp;quot;attack_target1&amp;quot;, &amp;quot;attack_targetx&amp;quot;, &amp;quot;attack_target_enemy&amp;quot;,  etc. The returned string is the name of the key which can then be passed into functions like getKey() to lookup the value of that spawn arg.  This is useful for when you have multiple values to look up, like when you target multiple objects.  To find the next matching key, pass in the previous result and the next key returned will be the first one that matches after the previous result. Pass in &amp;quot;&amp;quot; to get the first match. Passing in a non-existent key is the same as passing in &amp;quot;&amp;quot;. Returns &amp;quot;&amp;quot; when no  more keys match.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextTurnHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Get the next hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumAttachments&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Return the number of attachments on an AI. Used to iterate through the attachments if desired.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumBodies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bodies in the AF. If the AF physics pointer is NULL, it returns 0.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumMeleeWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of melee weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_melee&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumRangedWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of ranged weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_ranged&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveState&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of the objective with the number ObjNum.  State is one of the following: OBJ_INCOMPLETE = 0, OBJ_COMPLETE = 1, OBJ_INVALID = 2, OBJ_FAILED = 3&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getObservationPosition&#039;&#039;&#039;(vector targetPoint, float visualAcuityZeroToOne); ====&lt;br /&gt;
&lt;br /&gt;
:This event is used to get a position that the AI can move to observe a  given position.  It is useful for looking at hiding spots that can&#039;t be reached, and performing other investigation functions.  Returns a world position from which the observation can take place. Returns the current AI origin if no such point is found.  @sideEffect This uses the AI_DEST_UNREACHABLE flag variable  to indicate if a point was found. It will be true if none was found, false if one was found.&lt;br /&gt;
::&#039;&#039;targetPoint&#039;&#039;: the world position to be observed&lt;br /&gt;
::&#039;&#039;visualAcuityZeroToOne&#039;&#039;: the visual acuity of the AI on a scale of 0.0 to 1.0 where 0.0 is blind and 1.0 is perfect vision.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getObstacle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the obstacle in the character&#039;s path&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current position of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getOwner&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the owning entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPainAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the pain animation.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPersistantFloat&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPersistantString&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getPersistantVector&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortAISoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortalHandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the portal handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPortalEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortPlayerSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss  scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrevInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the previous inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPreviousWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player was previously holding.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjectileState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state of the projectile. States are defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idProjectile&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjMass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getRadius&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the light radius.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getRandomTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds a random targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getReachableEntityPosition&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the entity within the AAS if possible, otherwise just the entity position.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelation&#039;&#039;&#039;(float team1, float team2); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelationEnt&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetResponseEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity which should take the response. Some entities like AI heads are not responding themselves to stims, but relay it to another entity (i.e. the bodies they&#039;re attached to).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getShader&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the shader name used by the light.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getShaderParm&#039;&#039;&#039;(float parm); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getShouldered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently shouldered body, otherwise $null_entity. See also getDragged(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the size of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSndDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai hearing of sound &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundLoss&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPortalEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundVolume&#039;&#039;&#039;(string soundName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the volume of the sound to play.&lt;br /&gt;
::&#039;&#039;soundName&#039;&#039;: the name of the sound&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getSpotLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the spotlight used by the camera. Returns null_entity if none is used.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idSecurityCamera&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSurfNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getSurfType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTactEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai sense of touch&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTalkTarget&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTarget&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the requested target entity.&lt;br /&gt;
::&#039;&#039;num&#039;&#039;: The target number. Starts at 0.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTDMVersion&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the current TDM version as integer. The value will be 108 for v1.08, 109 for v1.09 and 200 for v2.00 etc.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTeam&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current team number.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTicsPerSecond&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the number of game frames per second.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current game time in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceBody&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the body part of the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceEndPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position the trace stopped due to a collision with solid geometry during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTraceEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTraceFraction&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed during the last call to trace or tracePoint.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceJoint&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the skeletal joint closest to the location on the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normal of the hit plane during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnDelta&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTurnHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:* Get the hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnRate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the rate the character turns.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVectorKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the vector value of a specific spawn arg, defaulting to &#039;0 0 0&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getViewAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the player view angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantLoc&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVisDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns position of the last visual alert.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWeaponEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity for the player&#039;s weapon&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWorldModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity that controls the world model&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getWorldOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current world-space position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;gib&#039;&#039;&#039;(string damageDefName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Gibbable&#039;&#039;, &#039;&#039;idMoveableItem&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;giveHealthPool&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:This increases/decreases the healthpool of the player by the given amount. The healthpool is gradually decreased over time, healing (damaging?) the player.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;handleMissionEvent&#039;&#039;&#039;(entity objEnt, float eventType, string argument); ====&lt;br /&gt;
&lt;br /&gt;
:Generic interface for passing on mission events from scripts to the SDK. Available since TDM 1.02&lt;br /&gt;
::&#039;&#039;objEnt&#039;&#039;: the entity that triggered this event (e.g. a readable)&lt;br /&gt;
::&#039;&#039;eventType&#039;&#039;: a numeric identifier (enumerated both in MissionData.h and tdm_defs.script) specifying the type of event&lt;br /&gt;
::&#039;&#039;argument&#039;&#039;: an optional string parameter, eventtype-specific.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true when an entity has a specific animation.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasEnemies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the actor has one or more enemies.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:checks if an entity&#039;s script object has a specific function&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasSeenEvidence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns 1 when the AI has seen evidence of intruders before (an enemy, a body...)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;heal&#039;&#039;&#039;(string healDefName, float healScale); ====&lt;br /&gt;
&lt;br /&gt;
:Heals the entity this is called on using the specified healing entityDef. Returns 1 if the entity could be healed, 0 otherwise (if the entity is already at full health, for ex.)&lt;br /&gt;
::&#039;&#039;healDefName&#039;&#039;: the name of the entityDef containing the healing information (e.g. &amp;quot;heal_potion&amp;quot;)&lt;br /&gt;
::&#039;&#039;healScale&#039;&#039;: the scaling value to be applied to the healAmount found in the healEntityDef&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;heldEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity currently being held, or $null_entity if the player&#039;s hands are empty.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hide&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity invisible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hideByLODBias&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;holdEntity&#039;&#039;&#039;(entity entity); ====&lt;br /&gt;
&lt;br /&gt;
:Forces the player to hold an entity (e.g. puts it into the grabber). Drops whatever is in the player&#039;s hands if $null_entity is passed to it. Returns 1 if successful, 0 if not.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;idleAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given idle animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ignoreDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can no longer take damage.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inAnimState&#039;&#039;&#039;(float channel, string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given animation state script function is currently used for the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;influenceActive&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if an influence is active&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inPVS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns non-zero if this entity is in PVS. For lights, it will return true when the light&#039;s bounding box is in PVS, even though the light may not actually be in PVS. (an unmoved shadowcasting light may not be visible to PVS areas its bounding box intersects with)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isAtRest&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if object is not moving&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMoveable&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isClient&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:networking - checks for client&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isDroppable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether an item may be dropped from the inventory&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEnemy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is an enemy.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEntityHidden&#039;&#039;&#039;(entity ent, float f_sightThreshold); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee, using FOV, distance and lighting.&lt;br /&gt;
::&#039;&#039;f_sightThreshold&#039;&#039;: goes from 0.0 (entity visible in complete darkness) to 1.0 (entity only visible if completely lit up).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFriend&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is a friend.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFrobable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHidden&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if the entity&#039;s model is invisible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHilighted&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if entity is currently frobhilighted.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInLiquid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the entity is in or touching a liquid.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInvisible&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsLocked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is currently locked.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is moving&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMultiplayer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if it&#039;s a multiplayer game&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isNeutral&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is neutral.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is open, which is basically the same as &amp;quot;not closed&amp;quot;. A mover is considered closed when it is at its close position.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsPickable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if this frobmover is pickable.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isPlayerResponsibleForDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player was responsible for the AI&#039;s caller&#039;s death.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is rotating&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isType&#039;&#039;&#039;(string spawnclass); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity is of the given type.&lt;br /&gt;
::&#039;&#039;spawnclass&#039;&#039;: spawn class name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isVineFriendly&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Vine-arrow event&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kickObstacles&#039;&#039;&#039;(entity kickEnt, float force); ====&lt;br /&gt;
&lt;br /&gt;
:Kicks any obstacle in the character&#039;s path.&lt;br /&gt;
::&#039;&#039;kickEnt&#039;&#039;: pass in $null_entity if you don&#039;t have a specific entity to kick&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kill&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Kills the monster.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;killthread&#039;&#039;&#039;(string threadName); ====&lt;br /&gt;
&lt;br /&gt;
:Kills all threads with the specified name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;KO_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: is the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launch&#039;&#039;&#039;(vector start, vector dir, vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Launches the projectile from &amp;lt;start&amp;gt; in direction &amp;lt;dir&amp;gt; with the given &amp;lt;velocity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idProjectile&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;launchMissile&#039;&#039;&#039;(vector origin, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the projectile entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchMissiles&#039;&#039;&#039;(string projectilename, string sound, string launchbone, string targetbone, float numshots, float framedelay); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a projectile.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimated&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchProjectiles&#039;&#039;&#039;(float num_projectiles, float spread, float fuseOffset, float launchPower, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;, &#039;&#039;idTestModel&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;loadExternalData&#039;&#039;&#039;(string declFile, string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Load an external xdata declaration.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;locateEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Updates the last known position of the enemy independent from whether or not the enemy is visible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Lock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Locks the mover. Calls to Open() will not succeed after this call. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;log&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the log of the given argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;logString&#039;&#039;&#039;(float logClass, float logType, string output); ====&lt;br /&gt;
&lt;br /&gt;
:This is the script counterpart to DM_LOG&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAt&#039;&#039;&#039;(entity focusEntity, float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward an entity for a period of time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtAngles&#039;&#039;&#039;(float yawAngleClockwise, float pitchAngleUp, float rollAngle, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:A look at event that just looks at a set of angles relative  to the current body facing of the AI. This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but it looks at the specified angles from the current body facing of the AI.&lt;br /&gt;
::&#039;&#039;yawAngleClockwise&#039;&#039;: Negative angles are to the left of  the AIs body and positive angles are to the right.&lt;br /&gt;
::&#039;&#039;pitchAngleUp&#039;&#039;: Negative values are down and positive values are up  where down and up are defined by the body axis.&lt;br /&gt;
::&#039;&#039;rollAngle&#039;&#039;: This is currently unused and does nothing.&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: The duration to look in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtEnemy&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward the current enemy for a period of time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtPosition&#039;&#039;&#039;(vector lookAtWorldPosition, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but instead of looking at an entity, it looks at a position in worldspace.  That is, it turns the head of the AI to look at the position.&lt;br /&gt;
::&#039;&#039;lookAtWorldPosition&#039;&#039;: position in space to look at&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: duration to look in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;lookupReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current replacement animation for &amp;quot;anim&amp;quot;. Returns empty if no replacement anim &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;markUsed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the combat node if &amp;quot;use_once&amp;quot; is set on the entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idCombatNode&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;melee&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the animation for the melee action has finished.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionHeld&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action reaches the &amp;quot;hold&amp;quot; point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionReleased&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action is released from the hold point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeAttackStarted&#039;&#039;&#039;(float attType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee attack Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeAttackToJoint&#039;&#039;&#039;(string joint, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeBestParry&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type integer of the best parry given the enemy attacks at the time If no attacking enemy is found, returns default of MELEETYPE_RL Follows MELEETYPE_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;meleeNameForNum&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Converts a melee type integer to a string name suffix Used for finding the right animation for a given type, etc. Possible names are, in order: &amp;quot;Over, LR, RL, Thrust, General&amp;quot; Where general blocks all attacks types except unblockable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeParryStarted&#039;&#039;&#039;(float parType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee parry Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionFailed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionSuccess&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;mouseGestureFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player is not currently doing a mouse gesture.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;move&#039;&#039;&#039;(float angle, float distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation with the given distance in the given yaw direction. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveOutOfRange&#039;&#039;&#039;(entity ent, float range); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the moving.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;moveStatus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveTo&#039;&#039;&#039;(entity targetEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to the position of an entity. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToAttackPosition&#039;&#039;&#039;(entity ent, string attack_anim); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCover&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCoverFrom&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemyHeight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to an absolute position. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;music&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Starts playing background music.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;muzzleFlash&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netEndReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;nextEnemy&#039;&#039;&#039;(entity lastEnemy); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the next enemy the actor has acquired.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;nextWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadows&#039;&#039;&#039;(float noShadows); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false, turning shadowcasting on or off for this entity.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadowsDelayed&#039;&#039;&#039;(float noShadows, float delay); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false after delay in ms, turning shadows cast by this entity on or off.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
::&#039;&#039;delay&#039;&#039;: delay in ms&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numBindChildren&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bound entities lower down in the bind chain than this entity, but be sure to give it the topmost bindmaster&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numSmokeEmitters&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the # of emitters defined by &#039;smokeParticleSystem&#039; in the entitydef&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numTargets&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of entities this entity has targeted.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveCompUnlatch&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective component that has latched into a state&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveUnlatch&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective that has latched into a state&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Off&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity off.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idSound&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;offsetRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;On&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity on.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idSound&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;onSignal&#039;&#039;&#039;(float signalNum, entity ent, string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a script callback function for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Open&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the frobmover, regardless of its previous state. The mover will not move when it&#039;s locked. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;, &#039;&#039;CFrobLock&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;OpenDoor&#039;&#039;&#039;(float master); ====&lt;br /&gt;
&lt;br /&gt;
:The OpenDoor method is necessary to give the FrobDoorHandles a  &amp;quot;low level&amp;quot; open routine. The CFrobDoor::Open() call is re-routed to the FrobDoorHandle::Tap() method, so there must be a way to actually let the door open. Which is what this method does.  Note: Shouldn&#039;t be called directly by scripters, call handle-&amp;gt;Tap() instead. Unless you know what you&#039;re doing.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobDoor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;openPortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Operate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to operate this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobButton&#039;&#039;, &#039;&#039;CFrobLever&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;overrideAnim&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the animation currently playing on the given channel and syncs the animation with the animation of the nearest animating channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pause&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the current thread.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseAnim&#039;&#039;&#039;(float channel, float bPause); ====&lt;br /&gt;
&lt;br /&gt;
:Pause all animations playing on the given channel. NOTE: Can also be used used by idWeapons&lt;br /&gt;
::&#039;&#039;bPause&#039;&#039;: true = pause, false = unpause&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the game. This should only be called for threads that are explicitly maintained by a special SDK method, because ordinary threads won&#039;t get executed during g_stopTime == true. Note: This is used by the objective GUI threads. Note: Must be called on the player entity, not the sys entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;performRelight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Deal with doused lights.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAndLipSync&#039;&#039;&#039;(string soundName, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Play the given sound, using the given lipsync animation. The lipsync animation should just be a simple non-loopable animation of the mouth opening in a linear fashion. The code will select individual frames from this to construct a simple lipsyncing effect which is in time with the sound.  Returns the length of the played sound in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Do not use, this is part of TDM&#039;s internal mechanics. Use playCustomAnim() on AI.in scripts instead of this. Plays the given animation on the given channel. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCustomAnim&#039;&#039;&#039;(string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given animation on legs and torso. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCycle&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Continuously repeats the given animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;playStartSound&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pointInLiquid&#039;&#039;&#039;(vector point, entity ignoreEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if a point is in a liquid, returns 1 if this is the case.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pow&#039;&#039;&#039;(float x, float y); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the power of x to y.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;predictEnemyPos&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to predict the player&#039;s movement based on the AAS and his direction of movement.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preventPain&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Prevents any pain animation from being played for the given time in seconds.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: time in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;print&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given string to the console.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;println&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given line to the console.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processBlindStim&#039;&#039;&#039;(entity stimSource, float skipVisibilityCheck); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processVisualStim&#039;&#039;&#039;(entity stimSource); ====&lt;br /&gt;
&lt;br /&gt;
:Use this call to let the AI react to a visual stim (coming from the source entity).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propagateSound&#039;&#039;&#039;(string soundName, float propVolMod, float msgTag); ====&lt;br /&gt;
&lt;br /&gt;
:Generates a propagated sound&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSound&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunctions on all entities propagate a sound directly without playing an audible sound&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSoundMod&#039;&#039;&#039;(string name, float volMod); ====&lt;br /&gt;
&lt;br /&gt;
:propagate a sound directly with a volume modifier&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;pushPointIntoAAS&#039;&#039;&#039;(vector post); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to push the point into a valid AAS area&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pushState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Pushes the state with the given name, current one is postponed.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamage&#039;&#039;&#039;(vector origin, entity inflictor, entity attacker, entity ignore, string damageDefName, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:damages entities within a radius defined by the damageDef.  inflictor is the entity  causing the damage and can be the same as the attacker (in the case   of projectiles, the projectile is the inflictor, while the attacker is the character  that fired the projectile).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage&lt;br /&gt;
::&#039;&#039;ignore&#039;&#039;: an entity to not cause damage to&lt;br /&gt;
::&#039;&#039;dmgPower&#039;&#039;: scales the damage (for cases where damage is dependent on time)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamageFromJoint&#039;&#039;&#039;(string jointname, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;random&#039;&#039;&#039;(float range); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random value X where 0 &amp;lt;= X &amp;lt; range.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomPath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;, &#039;&#039;idPathCorner&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomTarget&#039;&#039;&#039;(string ignoreName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random targeted entity. Pass in an entity name to skip that entity.&lt;br /&gt;
::&#039;&#039;ignoreName&#039;&#039;: the name of an entity to ignore&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;rangedThreatTo&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Could this entity threaten the given (target) entity from a distance?&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;readLightgemModifierFromWorldspawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToCoords&#039;&#039;&#039;(string attName, string joint, vector offset, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach. &lt;br /&gt;
::&#039;&#039;joint&#039;&#039;: the name of the joint to attach to&lt;br /&gt;
::&#039;&#039;offset&#039;&#039;: the translation offset from joint&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: a (pitch, yaw, roll) angle vector that defines the rotation  of the attachment relative to the joint&#039;s orientation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToPos&#039;&#039;&#039;(string attName, string position); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment to a named attachment position. Example: reAttachToPos( melee_weapon, right_hand_held )&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach.&lt;br /&gt;
::&#039;&#039;position&#039;&#039;: the new position we want to attach it to.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reloadTorchReplacementAnims&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:If actor has a torch, reload the torch&#039;s replacement anims.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;remove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the entity from the game. For AI, use kill() instead.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idClass&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeBinds&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes all attached entities from the game&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeInitialSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Subtracts the initial spline angles to maintain the initial orientation of the mover.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Removes a key from an object&#039;s spawnargs, so things like getNextKey() don&#039;t retrieve it.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to remove&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the replacement for the given &amp;quot;anim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Remove a target from this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to remove from the targets&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;replaceInvItem&#039;&#039;&#039;(entity oldItem, entity newItem); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the entity &amp;lt;oldItem&amp;gt; with &amp;lt;newItem&amp;gt; in the inventory, while keeping &amp;lt;oldItem&amp;gt;&#039;s inventory position intact.  Note: The position guarantee only applies if &amp;lt;oldItem&amp;gt; and newItem  share the same category. If the categories are different, the position of &amp;lt;newItem&amp;gt; is likely to be different than the one of &amp;lt;oldItem&amp;gt;.  Note that &amp;lt;oldItem&amp;gt; will be removed from the inventory.  If &amp;lt;newItem&amp;gt; is the $null_entity, &amp;lt;oldItem&amp;gt; is just removed and no replacement happens.  Returns 1 if the operation was successful, 0 otherwise.&lt;br /&gt;
::&#039;&#039;newItem&#039;&#039;: can be $null_entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResetTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetWeaponProjectile&#039;&#039;&#039;(string weaponName); ====&lt;br /&gt;
&lt;br /&gt;
:Reloads the original projectile def name from the weaponDef. Used to revert a change made by the event changeWeaponProjectile().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetZoom&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cancels any pending zoom transitions and resets the FOV to normal.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reskinCollisionModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:For use after setSkin() on moveables and static models, if the CM needs to be refreshed to update surface properties after a skin change. CM will be regenerated from the original model file with the new skin.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;respawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Respawn&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idItem&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAdd&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAllow&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseIgnore&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:This functions must be called on the stim entity. It will add the response to the ignore list, so that subsequent stims, should not trigger the stim anymore.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseSetAction&#039;&#039;&#039;(float type, string action); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseTrigger&#039;&#039;&#039;(entity source, float stimType); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a response on this entity, without a stim (a stand-alone response, so to say)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restartPatrol&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;RestartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreAddedEnts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restorePosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns this entity to the position stored in the &amp;quot;origin&amp;quot; spawn arg. This is the position the entity was spawned in unless the &amp;quot;origin&amp;quot; key is changed. Note that there is no guarantee that the entity won&#039;t be stuck in another entity when moved, so care should be taken to make sure that isn&#039;t possible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;, &#039;&#039;idTestModel&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ropeRemovalCleanup&#039;&#039;&#039;(entity ropeEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Called when rope arrow ropes are removed, removes stale pointers on the player object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotate&#039;&#039;&#039;(vector angleSpeed); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation with the given angular speed. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateDownTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by decreasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateOnce&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the current angles plus the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateTo&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateUpTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by increasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveGame&#039;&#039;&#039;(string filename); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;say&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Multiplayer - Print this line on the network&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;scaleVine&#039;&#039;&#039;(float factor); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;selectWeapon&#039;&#039;&#039;(string weapon); ====&lt;br /&gt;
&lt;br /&gt;
:Selects the weapon the player is holding.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sessionCommand&#039;&#039;&#039;(string cmd); ====&lt;br /&gt;
&lt;br /&gt;
:Sends the sessioncommand to the game&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setActiveInventoryMapEnt&#039;&#039;&#039;(entity mapEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Notify the player about a new active map entity. This clears out any previously active maps.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAcuity&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertGracePeriod&#039;&#039;&#039;(float frac, float duration, float count); ====&lt;br /&gt;
&lt;br /&gt;
:This starts the alert grace period for an AI. Should be called in the same frame as the alert that pushes them into a higher state.&lt;br /&gt;
::&#039;&#039;frac&#039;&#039;: the fraction of the alert below which they should ignore alerts during the grace period.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: the duration of the period in seconds&lt;br /&gt;
::&#039;&#039;count&#039;&#039;: the number of alerts ignored above which the grace period is invalid&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertLevel&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the alert level (AI_AlertLevel). This should always be called instead of setting AI_AlertLevel directly.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current orientation of this entity (relative to bind parent if any)&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: the new orientation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the angular velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAnimPrefix&#039;&#039;&#039;(string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a string which is placed in front of any animation names.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAttackFlag&#039;&#039;&#039;(float combatType, float enabled); ====&lt;br /&gt;
&lt;br /&gt;
:Activate or deactivate the given attack flag&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAudThresh&#039;&#039;&#039;(float val); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBlendFrames&#039;&#039;&#039;(float channel, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBoneMod&#039;&#039;&#039;(float allowBoneMod); ====&lt;br /&gt;
&lt;br /&gt;
:Enables or disables head looking (may be obsolete).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setCamera&#039;&#039;&#039;(entity cameraEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Turns over view control to the given camera entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setClipMask&#039;&#039;&#039;(float clipMask); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setColor&#039;&#039;&#039;(float parm0, float parm1, float parm2); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the RGB color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetConstraintPosition&#039;&#039;&#039;(string constraintName, vector position); ====&lt;br /&gt;
&lt;br /&gt;
:Moves the constraint with the given name that binds this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setContents&#039;&#039;&#039;(float contents); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setController&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Let a player assume movement control of an AI vehicle (may be remote control as in a player on a coach pulled by a horse)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;setCurInvCategory&#039;&#039;&#039;(string categoryName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the first item of the named category. Returns 1 on success, 0 on failure (e.g. wrong category name)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;setCurInvItem&#039;&#039;&#039;(string itemName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the named item. Returns: the item entity of the newly selected item (can be $null_entity).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setcvar&#039;&#039;&#039;(string name, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a cvar.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setDroppable&#039;&#039;&#039;(float droppable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether an item may be dropped from the inventory. &lt;br /&gt;
::&#039;&#039;droppable&#039;&#039;: if non-zero the item becomes droppable, when called with 0 the item becomes non-droppable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEnemy&#039;&#039;&#039;(entity enemy); ====&lt;br /&gt;
&lt;br /&gt;
:Make the given entity an enemy.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEntityRelation&#039;&#039;&#039;(entity ent, float relation); ====&lt;br /&gt;
&lt;br /&gt;
:Set a relation to another entity, this can be friendly (&amp;gt;0), neutral(0) or hostile (&amp;lt;0)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlyOffset&#039;&#039;&#039;(float offset); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlySpeed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Set the speed flying creatures move at. Also sets speed for moveTypeSlide.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobable&#039;&#039;&#039;(float frobable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobOnlyUsedByInv&#039;&#039;&#039;(float OnOff); ====&lt;br /&gt;
&lt;br /&gt;
:Engages or disengages a mode where we only frobhilight entities that can be used by our current inventory item. This also disables general frobactions and only allows &amp;quot;used by&amp;quot; frob actions.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGui&#039;&#039;&#039;(float handle, string guiFile); ====&lt;br /&gt;
&lt;br /&gt;
:Loads a new file into an existing GUI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiFloat&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiInt&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiString&#039;&#039;&#039;(float handle, string key, string val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiStringFromKey&#039;&#039;&#039;(float handle, string key, entity src, string srcKey); ====&lt;br /&gt;
&lt;br /&gt;
:This is a kludge. It is equivelant to: setGuiString( handle, key, src.getKey(srcKey) ) However, it&#039;s used to bypass the 127 char size limit on script strings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHealth&#039;&#039;&#039;(float health); ====&lt;br /&gt;
&lt;br /&gt;
:Use these to set the health of AI or players (this also updates the AI_DEAD flag)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set hinderance from a source.&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setImmobilization&#039;&#039;&#039;(string source, float type); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointAngle&#039;&#039;&#039;(float jointnum, float transform_type, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the orientation of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointPos&#039;&#039;&#039;(float jointnum, float transform_type, vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the position of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setKey&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key on this entity&#039;s spawn args. Note that most spawn args are evaluated when this entity spawns in, so this will not change the entity&#039;s behavior in most cases. This is chiefly for saving data the script needs in an entity for later retrieval.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to set&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: the value to store&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightgemModifier&#039;&#039;&#039;(string modifierName, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the named lightgem modifier to a certain value. An example would be the player lantern: setLightgemModifier(&amp;quot;lantern&amp;quot;, 32). This way multiple modifiers can be set by concurrent script threads.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightOrigin&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Set origin of lights independent of model origin&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParm&#039;&#039;&#039;(float parmNum, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the red/green/blue/alpha shader parms on the light and the model.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current linear velocity of this entity in units per second. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the linear velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setModel&#039;&#039;&#039;(string modelName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the model this entity uses&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setMoveType&#039;&#039;&#039;(float movetype); ====&lt;br /&gt;
&lt;br /&gt;
:Set the current movetype.  movetypes are defined in tdm_ai.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setName&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of this entity.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: the new name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNeverDormant&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enables or prevents an entity from going dormant&lt;br /&gt;
::&#039;&#039;enable&#039;&#039;: 1 = enable, 0 = disable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNextState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and waits until thread exits, or a frame delay before calling it. Handy for setting the state in the constructor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum, float state); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: objective number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: component number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 or 0 for true or false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveEnabling&#039;&#039;&#039;(float ObjNum, string strIn); ====&lt;br /&gt;
&lt;br /&gt;
:Set an objective&#039;s enabling objectives (objectives that must be completed before that objective may be completed).&lt;br /&gt;
::&#039;&#039;strIn&#039;&#039;: takes the form of a string that is a space-delimited list of integer objectives representing the new enabling objectives. E.g. : &#039;1 2 3 4&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOngoing&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective ongoing.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOptional&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective mandatory.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveState&#039;&#039;&#039;(float ObjNum, float State); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of objectives from the script. For example, use this to invalidate an objective when something happens in your mission. The first argument is the numerical index of the objective (taking &#039;user&#039; objective indices, starting at 1). Choose from the following for the second argument: OBJ_INCOMPLETE, OBJ_COMPLETE, OBJ_INVALID, OBJ_FAILED. Use this on $player1 like $player1.setObjectiveState(1, OBJ_COMPLETE);&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveText&#039;&#039;&#039;(float ObjNum, string newText); ====&lt;br /&gt;
&lt;br /&gt;
:Modify the displayed text for an objective. Can also be a string template like #str_20000&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveVisible&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective visibility.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (relative to it&#039;s bind parent if any)&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: the new origin&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOwner&#039;&#039;&#039;(entity owner); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the owner of this entity. Entities will never collide with their owner.&lt;br /&gt;
::&#039;&#039;owner&#039;&#039;: the entity which will be made owner of this entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPersistantArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair that persists between maps&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortAISoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortPlayerSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPrime&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadius&#039;&#039;&#039;(float radius); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of the bounding box, x=y=z=radius.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadiusXYZ&#039;&#039;&#039;(float x, float y, float z); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the width/length/height of the light bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setReplacementAnim&#039;&#039;&#039;(string animToReplace, string replacement); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the animation &amp;quot;animToReplace&amp;quot; with &amp;quot;replacement&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSavePermissions&#039;&#039;&#039;(float permission); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;permission&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShader&#039;&#039;&#039;(string shader); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the shader to be used for the light.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParm&#039;&#039;&#039;(float parm, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: new value&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets shader parms Parm0, Parm1, Parm2, and Parm3 (red, green, blue, and alpha respectively).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
::&#039;&#039;parm3&#039;&#039;: alpha&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSize&#039;&#039;&#039;(vector min, vector max); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of this entity&#039;s bounding box.&lt;br /&gt;
::&#039;&#039;min&#039;&#039;: minimum corner coordinates&lt;br /&gt;
::&#039;&#039;max&#039;&#039;: maximum corner coordinates&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSkin&#039;&#039;&#039;(string skinName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the skin this entity uses.  Set to &amp;quot;&amp;quot; to turn off the skin.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSmokeVisibility&#039;&#039;&#039;(float particle_num, float on); ====&lt;br /&gt;
&lt;br /&gt;
:enables/disables smoke particles on bones.  pass in the particle #, or ALL_PARTICLES for turning on/off all particle systems. particles are spawned in the order they appear in the entityDef&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundLoss&#039;&#039;&#039;(float loss); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPortalEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundVolume&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the volume of the sound to play, must be issued before startSoundShader.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpawnArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair to be used when a new entity is spawned.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpyglassOverlayBackground&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the background overlay for the spyglass, depending on aspect ratio.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setStartedOff&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and goes to it immediately&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSyncedAnimWeight&#039;&#039;&#039;(float channel, float animindex, float weight); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the blend amount on multi-point anims.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Sets whether the player can talk to this character or not.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTeam&#039;&#039;&#039;(float newTeam); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the team number of this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetTimerState&#039;&#039;&#039;(float stimId, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Set the hinderance on the view turning from a source&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnRate&#039;&#039;&#039;(float rate); ====&lt;br /&gt;
&lt;br /&gt;
:Set the rate the character turns at&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setViewAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the player view angles, e.g. make the player facing this direction. 0 0 0 is east (along the X axis in DR), 0 90 0 north (along the Y axis in DR) 0 180 0 west, 0 270 0 south.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWorldOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterFireProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a projectile.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the ammonition&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of this shooter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetAmmo&#039;&#039;&#039;(float newAmmo); ====&lt;br /&gt;
&lt;br /&gt;
:Set the ammonition&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Activates / deactivates the shooter entity.&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = active, 0 = inactive&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;show&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity visible if it has a model.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachment&#039;&#039;&#039;(string attName, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment.&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachmentInd&#039;&#039;&#039;(float index, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment by array index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shrivel&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sin&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;slideTo&#039;&#039;&#039;(vector position, float time); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;smoking&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:flame is now smoking (1), or not (0)&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = smoking, 0 = not smoking&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawn&#039;&#039;&#039;(string classname); ====&lt;br /&gt;
&lt;br /&gt;
:Creates an entity of the specified classname and returns a reference to the entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;SpawnFloat&#039;&#039;&#039;(string key, float default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;SpawnString&#039;&#039;&#039;(string key, string default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawnThrowableProjectile&#039;&#039;&#039;(string projectileName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:This method spawns a projectile of the type named by the caller and attaches it to the joint given by the caller.  The projectile becomes the AI&#039;s firable projectile. Returns a pointer to a projectile entity that can be  thrown by the AI. You can use AI_LaunchMissle (e* = launchMissle(v,v) ) to throw the stone.&lt;br /&gt;
::&#039;&#039;projectileName&#039;&#039;: The name of the projectile to spawn (as seen in a .def file) Must be descended from idProjectile&lt;br /&gt;
::&#039;&#039;jointName&#039;&#039;: The name of the joint on the model to which the particle should be attached for throwing. If this is NULL or the empty string, then it is attached to the model center.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;SpawnVector&#039;&#039;&#039;(string key, vector default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;speed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement speed. Set this speed before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sqrt&#039;&#039;&#039;(float square); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the square root of the given number.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;start&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Starts a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idCameraAnim&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startFx&#039;&#039;&#039;(string fx); ====&lt;br /&gt;
&lt;br /&gt;
:Starts an FX on this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startGamePlayTimer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Resets the game play timer to zero and (re)starts it.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startMouseGesture&#039;&#039;&#039;(float key, float thresh, float test, float inverted, float turnHinderance, float decideTime, float deadTime); ====&lt;br /&gt;
&lt;br /&gt;
:Start tracking a mouse gesture that started when the key impulse was pressed. Discretizes analog mouse movement into a few different gesture possibilities. Impulse arg can also be a button, see the UB_* enum in usercmdgen.h. For now, only one mouse gesture check at a time.&lt;br /&gt;
::&#039;&#039;thresh&#039;&#039;: Waits until the threshold mouse input thresh is reached before deciding.&lt;br /&gt;
::&#039;&#039;test&#039;&#039;: determines which test to do (0 = up/down, 1 = left/right, 2 = 4 directions, 3 = 8 directions).&lt;br /&gt;
::&#039;&#039;inverted&#039;&#039;: inverts the movement if set to 1, does not if 0&lt;br /&gt;
::&#039;&#039;turnHinderance&#039;&#039;: Sets the max player view turn rate when checking this mouse gesture (0 =&amp;gt; player view locked, 1.0 =&amp;gt; no effect on view turning)&lt;br /&gt;
::&#039;&#039;decideTime&#039;&#039;: time in milliseconds after which the mouse gesture is auto-decided, in the event that the mouse movement threshold was not reached. A DecideTime of -1 means wait forever until the button is released.&lt;br /&gt;
::&#039;&#039;deadTime&#039;&#039;: how long after attack is pressed that mouse control remains dampened by the fraction turnHinderance.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to a ragdoll taking over the animation.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimated&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSound&#039;&#039;&#039;(string sound, float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the sound specified by the snd_* key/value pair on the channel and returns the length of the sound in seconds. This is the preferred method for playing sounds on an entity since it ensures that the sound is precached.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: the spawnarg to reference, e.g. &#039;snd_move&#039;&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSoundShader&#039;&#039;&#039;(string shaderName, float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Plays a specific sound shader on the channel and returns the length of the sound in seconds. This is not the preferred method of playing a sound since you must ensure that the sound is loaded.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to play&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play the sound on&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startSpline&#039;&#039;&#039;(entity spline); ====&lt;br /&gt;
&lt;br /&gt;
:Starts moving along a spline stored on the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startZoom&#039;&#039;&#039;(float duration, float startFOV, float endFOV); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to start the zoom in event. The player FOV is gradually zoomed in until over the given timespan.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
::&#039;&#039;startFOV&#039;&#039;: The start FOV, this is clamped to [1..179]&lt;br /&gt;
::&#039;&#039;endFOV&#039;&#039;: The end FOV, this is clamped to [1..179]&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimAdd&#039;&#039;&#039;(float type, float radius); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimClearIgnoreList&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:This clears the ignore list for the stim of the given type It can be used if an entity changes state in some way that it would no longer be ignored&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stop&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idCameraAnim&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopAnim&#039;&#039;&#039;(float channel, float frames); ====&lt;br /&gt;
&lt;br /&gt;
:Stops the animation currently playing on the given channel over the given number of frames.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopFxFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any translational movement.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:turns off the ragdoll&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any rotational movement.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSound&#039;&#039;&#039;(float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a specific sound shader on the channel.&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to stop playback on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSpline&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops moving along a spline.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopThinking&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StopTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strFind&#039;&#039;&#039;(string text, string find, float casesensitive, float start, float end); ====&lt;br /&gt;
&lt;br /&gt;
:Return the position of the given substring, counting from 0, or -1 if not found.&lt;br /&gt;
::&#039;&#039;casesensitive&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;start&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;end&#039;&#039;: -1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strLeft&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the first num characters&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strLength&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of characters in the string&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strMid&#039;&#039;&#039;(string text, float start, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the characters from start to start + num&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRemove&#039;&#039;&#039;(string text, string remove); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given substring with &amp;quot;&amp;quot;. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;) results in &amp;quot;aa&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strReplace&#039;&#039;&#039;(string text, string remove, string replace); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given string with the replacement string. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;,&amp;quot;ccc&amp;quot;) results in &amp;quot;accca&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRight&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the last num characters&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strSkip&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string following the first num characters&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToFloat&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the numeric value of the given string.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToInt&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the integer value of the given string.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sway&#039;&#039;&#039;(float speed, float phase, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation back and forth along the given angles with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Switch&#039;&#039;&#039;(float newState); ====&lt;br /&gt;
&lt;br /&gt;
:Move the lever to the on or off position (0 = off).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobLever&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;switchState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to the state with the given name, current one is ended.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;syncAnimChannels&#039;&#039;&#039;(float fromChannel, float toChannel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Synchronises the channels&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Tap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Operates this handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobHandle&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;, &#039;&#039;CFrobLock&#039;&#039;, &#039;&#039;idProjectile&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_StatusUpdate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;, &#039;&#039;CFrobLock&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;teleportTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Teleports the entity to the position of the other entity, plus a possible offset and random offset (defined on the spawnargs of the entity to be teleported)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;terminate&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Terminates a thread.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimAttack&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMove&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMoveTowardEnemy&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testChargeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testEvent1&#039;&#039;&#039;(float float_pi, float int_beef, float float_exp, string string_tdm, float float_exp10, float int_food); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;testEvent2&#039;&#039;&#039;(float int_prevres, vector vec_123, float int_food, entity ent_player, entity ent_null, float float_pi, float float_exp); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;testEvent3&#039;&#039;&#039;(entity ent_prevres, vector vec_123, float float_pi, entity ent_player); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMeleeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMoveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;threadname&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of the current thread.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwAF&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwMoveable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;time&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement time. Set this time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Toggle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the forcefield on and off.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idForceField&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_light&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the spotlight on/off.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idSecurityCamera&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_sweep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the camera sweep.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idSecurityCamera&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the lock state. Unlocked movers will be locked and vice versa. The notes above concerning Unlock() still apply if this call unlocks the mover. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the mover state. Closes when fully open, opens when fully closed. If the mover is &amp;quot;interrupted&amp;quot; (e.g. when the player frobbed the mover in between), the move direction depends on the state of the internal &amp;quot;intent_open&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;totalAmmoCount&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Amount of ammo in inventory. since each shot may use more than 1 ammo, this is different than ammoAvailable()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;touches&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity touches the other entity.&lt;br /&gt;
::&#039;&#039;other&#039;&#039;: the entity to check against&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;trace&#039;&#039;&#039;(vector start, vector end, vector mins, vector maxs, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the box from &#039;mins&#039; to &#039;maxs&#039; hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;tracePoint&#039;&#039;&#039;(vector start, vector end, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the trace hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;translate&#039;&#039;&#039;(string input); ====&lt;br /&gt;
&lt;br /&gt;
:Translates a string (like #str_12345) into the current language&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenEntities&#039;&#039;&#039;(entity source, entity dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenPoints&#039;&#039;&#039;(vector source, vector dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two points.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToPoint&#039;&#039;&#039;(vector destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;trigger&#039;&#039;&#039;(entity entityToTrigger); ====&lt;br /&gt;
&lt;br /&gt;
:Triggers the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerMissionEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerParticles&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnTo&#039;&#039;&#039;(float yaw); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unbind&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Detaches this entity from its master.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Unlock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unlocks the mover. Calls to Open() will succeed after this call. Depending on the value of the spawnarg &amp;quot;open_on_unlock&amp;quot; the mover might automatically open after this call. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unpauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unpauses the game. Most scripts are not executed during g_stopTime == true and won&#039;t get into the position of calling this.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;useAmmo&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Eats the specified amount of ammo&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;vecLength&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the given vector.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;vecNormalize&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normalized version of the given vector.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;VecToAngles&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns Euler angles for the given direction.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;visScan&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks for enemies or player in the AI&#039;s FOV, using light level and distance. For now the check is only done on the player.  Returns a reference to the sighted actor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wait&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of the current thread for the given number of seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitAction&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFor&#039;&#039;&#039;(entity mover); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given entity to complete its move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForRender&#039;&#039;&#039;(entity e); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends the current thread until &#039;e&#039; might have been rendered. It&#039;s event based, so it doesn&#039;t waste CPU repeatedly checking inPVS(). e.inPVS() will very likely be true when the thread resumes. If e.inPVS() is true, calling waitForRender() will probably just wait a frame, unless D3 can figure out that the entity doesn&#039;t need to be rendered. Optimizations regarding shadowcasting lights may not apply to this function - it is based purely off whether or not the entity&#039;s bounding box is visible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForThread&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given thread to terminate.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFrame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of current thread for one game frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wakeOnFlashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Tells the monster to activate when flashlight shines on them.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wander&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;warning&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues a warning.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;wasDamaged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Check if the player was damaged this frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponHolstered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponLowering&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponOutOfAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReady&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReloading&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponRising&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponState&#039;&#039;&#039;(string stateFunction, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Events by Spawnclass / Entity Type ==&lt;br /&gt;
=== idClass ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;remove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the entity from the game. For AI, use kill() instead.&lt;br /&gt;
&lt;br /&gt;
=== idActor ===&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDistance&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance that the anim travels. If the entity has multiple anims with animName, the distance may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animDistance.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDone&#039;&#039;&#039;(float channel, float blendOutFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the animation playing on the given channel is completed considering a number of blend frames.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animIsPaused&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Return whether the given anim channel is paused&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animLength&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the anim in seconds. If the entity has multiple anims with animName, length may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animLength.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animState&#039;&#039;&#039;(float channel, string stateFunction, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a new animation state script function for the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attach&#039;&#039;&#039;(entity ent, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI. Entity spawnArgs checked for attachments are:  - &amp;quot;origin&amp;quot;, &amp;quot;angles&amp;quot;, and &amp;quot;joint&amp;quot;. These must be set prior to calling attach.&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attachToPos&#039;&#039;&#039;(entity ent, string position, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI, using a named attachment position&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensures that the animation exists and causes an error if it doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;chooseAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Chooses a random anim and returns the name. Useful for doing move tests on anims.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestEnemyToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the enemy closest to the given location.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAnimchannel&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Used to disable a certain animchannel (for example if the ai is dead)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables eye focus.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:disables leg IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables pain animations.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:disables walk IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given attachment name.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAnim&#039;&#039;&#039;(float channel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Enables animation on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables eye focus.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:enables leg IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables pain animations.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables walk IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishAction&#039;&#039;&#039;(string action); ====&lt;br /&gt;
&lt;br /&gt;
:Finishes the given wait action.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishChannelAction&#039;&#039;&#039;(float channel, string animname); ====&lt;br /&gt;
&lt;br /&gt;
:Overloaded finishAction function for setting the waitstate on each channel separately&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;footstep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getAnimState&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current animation state script function used for the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity with the given attachment name Will be NULL if the name is invalid or if the entity no longer exists&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity at the given index. Will be NULL if the index is invalid or the entity no longer exists&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAttackFlag&#039;&#039;&#039;(float combatType); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the given attack flag is activated.&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBlendFrames&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get eye position of the player and the AI&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getHead&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity used for the character&#039;s head, if it has one.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getHealth&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current health.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActPhase&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action phase (holding,recovering,etc).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action state (attacking/defending).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action type (overhead,thrust,etc.).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastActTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type of the last attack to hit this actor. Defaults to MELEETYPE_UNBLOCKABLE if we were not hit before.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastHitByType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the game time that the most recent melee action ended (in ms)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeResult&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the result of the last melee action Follows MELEERESULT_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumAttachments&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Return the number of attachments on an AI. Used to iterate through the attachments if desired.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumMeleeWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of melee weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_melee&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumRangedWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of ranged weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_ranged&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPainAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the pain animation.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true when an entity has a specific animation.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasEnemies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the actor has one or more enemies.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;idleAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given idle animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inAnimState&#039;&#039;&#039;(float channel, string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given animation state script function is currently used for the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;lookupReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current replacement animation for &amp;quot;anim&amp;quot;. Returns empty if no replacement anim &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the animation for the melee action has finished.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionHeld&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action reaches the &amp;quot;hold&amp;quot; point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionReleased&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action is released from the hold point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeAttackStarted&#039;&#039;&#039;(float attType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee attack Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeBestParry&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type integer of the best parry given the enemy attacks at the time If no attacking enemy is found, returns default of MELEETYPE_RL Follows MELEETYPE_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;meleeNameForNum&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Converts a melee type integer to a string name suffix Used for finding the right animation for a given type, etc. Possible names are, in order: &amp;quot;Over, LR, RL, Thrust, General&amp;quot; Where general blocks all attacks types except unblockable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeParryStarted&#039;&#039;&#039;(float parType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee parry Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;nextEnemy&#039;&#039;&#039;(entity lastEnemy); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the next enemy the actor has acquired.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;overrideAnim&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the animation currently playing on the given channel and syncs the animation with the animation of the nearest animating channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseAnim&#039;&#039;&#039;(float channel, float bPause); ====&lt;br /&gt;
&lt;br /&gt;
:Pause all animations playing on the given channel. NOTE: Can also be used used by idWeapons&lt;br /&gt;
::&#039;&#039;bPause&#039;&#039;: true = pause, false = unpause&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Do not use, this is part of TDM&#039;s internal mechanics. Use playCustomAnim() on AI.in scripts instead of this. Plays the given animation on the given channel. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCycle&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Continuously repeats the given animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preventPain&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Prevents any pain animation from being played for the given time in seconds.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: time in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToCoords&#039;&#039;&#039;(string attName, string joint, vector offset, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach. &lt;br /&gt;
::&#039;&#039;joint&#039;&#039;: the name of the joint to attach to&lt;br /&gt;
::&#039;&#039;offset&#039;&#039;: the translation offset from joint&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: a (pitch, yaw, roll) angle vector that defines the rotation  of the attachment relative to the joint&#039;s orientation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToPos&#039;&#039;&#039;(string attName, string position); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment to a named attachment position. Example: reAttachToPos( melee_weapon, right_hand_held )&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach.&lt;br /&gt;
::&#039;&#039;position&#039;&#039;: the new position we want to attach it to.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reloadTorchReplacementAnims&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:If actor has a torch, reload the torch&#039;s replacement anims.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the replacement for the given &amp;quot;anim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAnimPrefix&#039;&#039;&#039;(string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a string which is placed in front of any animation names.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAttackFlag&#039;&#039;&#039;(float combatType, float enabled); ====&lt;br /&gt;
&lt;br /&gt;
:Activate or deactivate the given attack flag&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBlendFrames&#039;&#039;&#039;(float channel, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHealth&#039;&#039;&#039;(float health); ====&lt;br /&gt;
&lt;br /&gt;
:Use these to set the health of AI or players (this also updates the AI_DEAD flag)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNextState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and waits until thread exits, or a frame delay before calling it. Handy for setting the state in the constructor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setReplacementAnim&#039;&#039;&#039;(string animToReplace, string replacement); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the animation &amp;quot;animToReplace&amp;quot; with &amp;quot;replacement&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and goes to it immediately&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSyncedAnimWeight&#039;&#039;&#039;(float channel, float animindex, float weight); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the blend amount on multi-point anims.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachment&#039;&#039;&#039;(string attName, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment.&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachmentInd&#039;&#039;&#039;(float index, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment by array index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopAnim&#039;&#039;&#039;(float channel, float frames); ====&lt;br /&gt;
&lt;br /&gt;
:Stops the animation currently playing on the given channel over the given number of frames.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;syncAnimChannels&#039;&#039;&#039;(float fromChannel, float toChannel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Synchronises the channels&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_Base ===&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the angular velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the linear velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumBodies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bodies in the AF. If the AF physics pointer is NULL, it returns 0.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreAddedEnts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the angular velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetConstraintPosition&#039;&#039;&#039;(string constraintName, vector position); ====&lt;br /&gt;
&lt;br /&gt;
:Moves the constraint with the given name that binds this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the linear velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_Gibbable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;gib&#039;&#039;&#039;(string damageDefName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_Generic ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_WithAttachedHead ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CAIVehicle ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearController&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Need separate clearController because scripting doesn&#039;t like passing in $null_entity? (greebo: one could remove this function and set the argument type of setController to &#039;E&#039;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobRidable&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Called when a player directly mounts or dismounts a ridable AI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getMoveAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the player-requested movement anim for a player controlled AI vehicle&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setController&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Let a player assume movement control of an AI vehicle (may be remote control as in a player on a coach pulled by a horse)&lt;br /&gt;
&lt;br /&gt;
=== idCombatNode ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;markUsed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the combat node if &amp;quot;use_once&amp;quot; is set on the entity.&lt;br /&gt;
&lt;br /&gt;
=== idAI ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alert&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alertAI&#039;&#039;&#039;(string type, float amount, entity actor); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: alert type&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: alert amount&lt;br /&gt;
::&#039;&#039;actor&#039;&#039;: actor causing alert&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can take damage again.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowHiddenMovement&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Normally, when hidden, monsters do not run physics. This enables physics when hidden.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowMovement&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animTurn&#039;&#039;&#039;(float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Enable/disable animation controlled turning.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Pass in the maximum # of degrees the animation turns. Use an amount of 0 to disable.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackBegin&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;attackMelee&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the attack hit&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;attackMissile&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile fired&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bark&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Let the AI bark a certain sound.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: sound name, e.g. &#039;snd_warn_response&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeNonSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes the moveable non-solid for other entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;becomeRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables the ragdoll if the entity has one&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;burn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBecomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromJoint&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to enemy&#039;s position. For walking monsters, enemy should be near the floor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to entity&#039;s position. For walking monsters, entity should be near the floor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachPosition&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to specified position. For walking monsters, position should be near the floor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSee&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeExt&#039;&#039;&#039;(entity ent, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee that can optionally choose to use field of vision and lighting calculations.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If b_useLighting is 0 the entity will be visible in complete darkness. If it is 1, the entity will only be visible if there is light shining on it, but the slightest light is enought. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold instead.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeePositionExt&#039;&#039;&#039;(vector position, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSeeExt that tests a location rather than an entity. Note that any actor at the position may make it not seeable from a distance.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If 0 the entity will be visible in complete darkness&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;chargeAttack&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the enemy entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearFlyOffset&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at to the value set in the def file.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Used for determining tactile alert targets&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemyOfEntity&#039;&#039;&#039;(entity team_mate); ====&lt;br /&gt;
&lt;br /&gt;
:Finds another character&#039;s closest reachable enemy&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissile&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile created&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissileFromDef&#039;&#039;&#039;(string defName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;directDamage&#039;&#039;&#039;(entity damageTarget, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropTorch&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emptyHand&#039;&#039;&#039;(string hand); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;endState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Ends the current state with the given name, returns TRUE if more than one state is remaining.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyInCombatCone&#039;&#039;&#039;(entity combatNode, float use_current_enemy_location); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyPositionValid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange2D&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;entityInAttackCone&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;facingIdeal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findActorsInBounds&#039;&#039;&#039;(vector mins, vector maxs); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an entity within the bounds specified&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemy&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in PVS&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyAI&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy monster in PVS&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyInCombatNodes&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in attack cones&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findFriendlyAI&#039;&#039;&#039;(float team); ====&lt;br /&gt;
&lt;br /&gt;
:Use this to find a visible AI friendly to ourselves. It basically iterates over all active entities in the map and looks for friendly actors. The pythagorean distance is taken to evaluate the distance.  Don&#039;t call this every frame, this might get expensive in larger maps. Returns the nearest visible actor entity or the $null_entity, if none was found.&lt;br /&gt;
::&#039;&#039;team&#039;&#039;: used to constrain the search to a given team. Set this to -1 to let the code ignore this argument&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;fireMissileAtTarget&#039;&#039;&#039;(string jointname, string targetname); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a missile at entity specified by &#039;attack_target&#039;.  returns projectile fired&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;flee&#039;&#039;&#039;(entity entToFleeFrom, float algorithm, float distanceOption); ====&lt;br /&gt;
&lt;br /&gt;
:Flee from the given entity. Pass the escape point lookup algorithm (e.g. EP_FIND_GUARDED) and the distanceOption (e.g. EP_DIST_NEAREST) to specify how the best escape point can be found. Refer to the tdm_defs.script file to see all the constants.  When algorithm is set to EP_FIND_AAS_AREA_FAR_FROM_THREAT, the distanceOption is interpreted as minimum threat distance. Returns FALSE if no escape point could be found.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;foundBody&#039;&#039;&#039;(entity body); ====&lt;br /&gt;
&lt;br /&gt;
:Objective callback for when an AI finds a body.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Gas_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAcuity&#039;&#039;&#039;(string type); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAlertActor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the actor that alerted the AI in this frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAlertLevelOfOtherAI&#039;&#039;&#039;(entity otherEntity); ====&lt;br /&gt;
&lt;br /&gt;
:This event gets the alert number of another AI (AI_AlertLevel variable value) Returns the alert number of the other AI, 0.0 if its not an AI or is NULL&lt;br /&gt;
::&#039;&#039;otherEntity&#039;&#039;: the other AI entity who&#039;s alert number is being queried&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttacker&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the attacking entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAudThresh&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getClosestHiddenTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds the closest targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCombatNode&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentYaw&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJumpVelocity&#039;&#039;&#039;(vector pos, float speed, float max_jump_height); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current movetype&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextIdleAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the name of the next idle anim to be played on this AI (used by AnimState scripts).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getObservationPosition&#039;&#039;&#039;(vector targetPoint, float visualAcuityZeroToOne); ====&lt;br /&gt;
&lt;br /&gt;
:This event is used to get a position that the AI can move to observe a  given position.  It is useful for looking at hiding spots that can&#039;t be reached, and performing other investigation functions.  Returns a world position from which the observation can take place. Returns the current AI origin if no such point is found.  @sideEffect This uses the AI_DEST_UNREACHABLE flag variable  to indicate if a point was found. It will be true if none was found, false if one was found.&lt;br /&gt;
::&#039;&#039;targetPoint&#039;&#039;: the world position to be observed&lt;br /&gt;
::&#039;&#039;visualAcuityZeroToOne&#039;&#039;: the visual acuity of the AI on a scale of 0.0 to 1.0 where 0.0 is blind and 1.0 is perfect vision.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getObstacle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the obstacle in the character&#039;s path&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getRandomTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds a random targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getReachableEntityPosition&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the entity within the AAS if possible, otherwise just the entity position.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelationEnt&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSndDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai hearing of sound &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTactEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai sense of touch&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTalkTarget&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnDelta&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnRate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the rate the character turns.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVisDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns position of the last visual alert.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasSeenEvidence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns 1 when the AI has seen evidence of intruders before (an enemy, a body...)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ignoreDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can no longer take damage.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEntityHidden&#039;&#039;&#039;(entity ent, float f_sightThreshold); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee, using FOV, distance and lighting.&lt;br /&gt;
::&#039;&#039;f_sightThreshold&#039;&#039;: goes from 0.0 (entity visible in complete darkness) to 1.0 (entity only visible if completely lit up).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isPlayerResponsibleForDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player was responsible for the AI&#039;s caller&#039;s death.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kickObstacles&#039;&#039;&#039;(entity kickEnt, float force); ====&lt;br /&gt;
&lt;br /&gt;
:Kicks any obstacle in the character&#039;s path.&lt;br /&gt;
::&#039;&#039;kickEnt&#039;&#039;: pass in $null_entity if you don&#039;t have a specific entity to kick&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kill&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Kills the monster.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;KO_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: is the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;launchMissile&#039;&#039;&#039;(vector origin, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the projectile entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;locateEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Updates the last known position of the enemy independent from whether or not the enemy is visible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAt&#039;&#039;&#039;(entity focusEntity, float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward an entity for a period of time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtAngles&#039;&#039;&#039;(float yawAngleClockwise, float pitchAngleUp, float rollAngle, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:A look at event that just looks at a set of angles relative  to the current body facing of the AI. This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but it looks at the specified angles from the current body facing of the AI.&lt;br /&gt;
::&#039;&#039;yawAngleClockwise&#039;&#039;: Negative angles are to the left of  the AIs body and positive angles are to the right.&lt;br /&gt;
::&#039;&#039;pitchAngleUp&#039;&#039;: Negative values are down and positive values are up  where down and up are defined by the body axis.&lt;br /&gt;
::&#039;&#039;rollAngle&#039;&#039;: This is currently unused and does nothing.&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: The duration to look in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtEnemy&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward the current enemy for a period of time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtPosition&#039;&#039;&#039;(vector lookAtWorldPosition, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but instead of looking at an entity, it looks at a position in worldspace.  That is, it turns the head of the AI to look at the position.&lt;br /&gt;
::&#039;&#039;lookAtWorldPosition&#039;&#039;: position in space to look at&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: duration to look in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeAttackToJoint&#039;&#039;&#039;(string joint, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveOutOfRange&#039;&#039;&#039;(entity ent, float range); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;moveStatus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToAttackPosition&#039;&#039;&#039;(entity ent, string attack_anim); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCover&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCoverFrom&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemyHeight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;muzzleFlash&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numSmokeEmitters&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the # of emitters defined by &#039;smokeParticleSystem&#039; in the entitydef&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;performRelight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Deal with doused lights.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAndLipSync&#039;&#039;&#039;(string soundName, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Play the given sound, using the given lipsync animation. The lipsync animation should just be a simple non-loopable animation of the mouth opening in a linear fashion. The code will select individual frames from this to construct a simple lipsyncing effect which is in time with the sound.  Returns the length of the played sound in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCustomAnim&#039;&#039;&#039;(string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given animation on legs and torso. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;predictEnemyPos&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to predict the player&#039;s movement based on the AAS and his direction of movement.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processBlindStim&#039;&#039;&#039;(entity stimSource, float skipVisibilityCheck); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processVisualStim&#039;&#039;&#039;(entity stimSource); ====&lt;br /&gt;
&lt;br /&gt;
:Use this call to let the AI react to a visual stim (coming from the source entity).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;pushPointIntoAAS&#039;&#039;&#039;(vector post); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to push the point into a valid AAS area&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pushState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Pushes the state with the given name, current one is postponed.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamageFromJoint&#039;&#039;&#039;(string jointname, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomPath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restartPatrol&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAcuity&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertGracePeriod&#039;&#039;&#039;(float frac, float duration, float count); ====&lt;br /&gt;
&lt;br /&gt;
:This starts the alert grace period for an AI. Should be called in the same frame as the alert that pushes them into a higher state.&lt;br /&gt;
::&#039;&#039;frac&#039;&#039;: the fraction of the alert below which they should ignore alerts during the grace period.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: the duration of the period in seconds&lt;br /&gt;
::&#039;&#039;count&#039;&#039;: the number of alerts ignored above which the grace period is invalid&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertLevel&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the alert level (AI_AlertLevel). This should always be called instead of setting AI_AlertLevel directly.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAudThresh&#039;&#039;&#039;(float val); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBoneMod&#039;&#039;&#039;(float allowBoneMod); ====&lt;br /&gt;
&lt;br /&gt;
:Enables or disables head looking (may be obsolete).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEnemy&#039;&#039;&#039;(entity enemy); ====&lt;br /&gt;
&lt;br /&gt;
:Make the given entity an enemy.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlyOffset&#039;&#039;&#039;(float offset); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlySpeed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Set the speed flying creatures move at. Also sets speed for moveTypeSlide.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setMoveType&#039;&#039;&#039;(float movetype); ====&lt;br /&gt;
&lt;br /&gt;
:Set the current movetype.  movetypes are defined in tdm_ai.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSmokeVisibility&#039;&#039;&#039;(float particle_num, float on); ====&lt;br /&gt;
&lt;br /&gt;
:enables/disables smoke particles on bones.  pass in the particle #, or ALL_PARTICLES for turning on/off all particle systems. particles are spawned in the order they appear in the entityDef&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Sets whether the player can talk to this character or not.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnRate&#039;&#039;&#039;(float rate); ====&lt;br /&gt;
&lt;br /&gt;
:Set the rate the character turns at&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shrivel&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;slideTo&#039;&#039;&#039;(vector position, float time); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawnThrowableProjectile&#039;&#039;&#039;(string projectileName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:This method spawns a projectile of the type named by the caller and attaches it to the joint given by the caller.  The projectile becomes the AI&#039;s firable projectile. Returns a pointer to a projectile entity that can be  thrown by the AI. You can use AI_LaunchMissle (e* = launchMissle(v,v) ) to throw the stone.&lt;br /&gt;
::&#039;&#039;projectileName&#039;&#039;: The name of the projectile to spawn (as seen in a .def file) Must be descended from idProjectile&lt;br /&gt;
::&#039;&#039;jointName&#039;&#039;: The name of the joint on the model to which the particle should be attached for throwing. If this is NULL or the empty string, then it is attached to the model center.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:turns off the ragdoll&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopThinking&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;switchState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to the state with the given name, current one is ended.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimAttack&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMove&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMoveTowardEnemy&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testChargeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMeleeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMoveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwAF&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwMoveable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenEntities&#039;&#039;&#039;(entity source, entity dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenPoints&#039;&#039;&#039;(vector source, vector dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two points.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToPoint&#039;&#039;&#039;(vector destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerParticles&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnTo&#039;&#039;&#039;(float yaw); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;visScan&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks for enemies or player in the AI&#039;s FOV, using light level and distance. For now the check is only done on the player.  Returns a reference to the sighted actor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitAction&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wakeOnFlashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Tells the monster to activate when flashlight shines on them.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wander&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
=== idTestModel ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
=== CBinaryFrobMover ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Close&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the frobmover, regardless of its previous state. Mover must be open, otherwise nothing happens.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;GetFractionalPosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a fraction between 0.00 (closed) and 1.00 (open).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsLocked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is currently locked.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is open, which is basically the same as &amp;quot;not closed&amp;quot;. A mover is considered closed when it is at its close position.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsPickable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if this frobmover is pickable.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Lock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Locks the mover. Calls to Open() will not succeed after this call. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Open&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the frobmover, regardless of its previous state. The mover will not move when it&#039;s locked. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_StatusUpdate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the lock state. Unlocked movers will be locked and vice versa. The notes above concerning Unlock() still apply if this call unlocks the mover. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the mover state. Closes when fully open, opens when fully closed. If the mover is &amp;quot;interrupted&amp;quot; (e.g. when the player frobbed the mover in between), the move direction depends on the state of the internal &amp;quot;intent_open&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Unlock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unlocks the mover. Calls to Open() will succeed after this call. Depending on the value of the spawnarg &amp;quot;open_on_unlock&amp;quot; the mover might automatically open after this call. &lt;br /&gt;
&lt;br /&gt;
=== idBrittleFracture ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dampenSound&#039;&#039;&#039;(float dampen); ====&lt;br /&gt;
&lt;br /&gt;
:Toggle whether the shattering sound is dampened on the window, e.g., when covered by moss.&lt;br /&gt;
::&#039;&#039;dampen&#039;&#039;: 1 = dampened, 0 = not dampened&lt;br /&gt;
&lt;br /&gt;
=== idCameraView ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idCameraAnim ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;start&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Starts a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stop&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
=== idFuncEmitter ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emitterAddModel&#039;&#039;&#039;(string modelName, vector modelOffset); ====&lt;br /&gt;
&lt;br /&gt;
:Adds a new particle (or regular, if you wish) model to the emitter, located at modelOffset units away from the emitter&#039;s origin.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitterGetNumModels&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of models/particles this emitter has. Always &amp;gt;= 1.&lt;br /&gt;
&lt;br /&gt;
=== idEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateContacts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Activate objects sitting on this object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateTargets&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Causes this entity to activate all it&#039;s targets. Similar to how a trigger activates entities.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addInvItem&#039;&#039;&#039;(entity inv_item); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the given item to the inventory. Depending on the type the passed entity will be removed from the game (as for loot items) or hidden.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addItemToInv&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the entity to the given entity&#039;s inventory. Depending on the type the entity will be removed from the game (as for loot items) or hidden. Example: $book-&amp;gt;addItemToInv($player1);&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Add a target to this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to add as target&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;applyImpulse&#039;&#039;&#039;(entity source, float bodyid, vector point, vector impulse); ====&lt;br /&gt;
&lt;br /&gt;
:Applies an impulse to the entity. Example: entity.applyImpulse($player1, 0, entity.getOrigin(), &#039;0 0 2&#039;);&lt;br /&gt;
::&#039;&#039;source&#039;&#039;: Pass $null_entity or the entity that applies the impulse&lt;br /&gt;
::&#039;&#039;bodyid&#039;&#039;: For articulated figures, ID of the body, 0 for the first (main) body. Otherwise use 0.&lt;br /&gt;
::&#039;&#039;point&#039;&#039;: Point on the body where the impulse is applied to&lt;br /&gt;
::&#039;&#039;impulse&#039;&#039;: Vector of the impulse&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bind&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindPosition&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position (but not orientation) relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToBody&#039;&#039;&#039;(entity master, float bodyID, float orientated); ====&lt;br /&gt;
&lt;br /&gt;
:Bind to AF body&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: entity to bind to&lt;br /&gt;
::&#039;&#039;bodyID&#039;&#039;: AF body ID to bind to&lt;br /&gt;
::&#039;&#039;orientated&#039;&#039;: binds the orientation as well as position, if set to 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToJoint&#039;&#039;&#039;(entity master, string boneName, float rotateWithMaster); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to a bone on another entity, such that when the master&#039;s bone moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
::&#039;&#039;boneName&#039;&#039;: the bone name&lt;br /&gt;
::&#039;&#039;rotateWithMaster&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cacheSoundShader&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensure the specified sound shader is loaded by the system. Prevents cache misses when playing sound shaders.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to cache&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a function on an entity&#039;s script object. See also callGlobalFunction().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGlobalFunction&#039;&#039;&#039;(string functionName, entity other); ====&lt;br /&gt;
&lt;br /&gt;
:calls a global function and passes the other entity along as the first argument calls the function in a new thread, so it continues executing in the current thread right away (unlike entity.callFunction( &amp;quot;blah&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGui&#039;&#039;&#039;(float handle, string namedEvent); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a named event in a GUI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBeUsedBy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the entity can be used by the argument entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeEntity&#039;&#039;&#039;(entity target, float useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is a general version of idAI::canSee, that can be used by all entities. It doesn&#039;t regard FOV, it just performs a trace to check whether the target is occluded by world geometry. Is probably useful for stim/response as well Pass useLighting = true to take the lighting of the target entity into account. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold. The constant threshold value for useLighting is defined within the SDK in game/entity.h.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeEntityRelation&#039;&#039;&#039;(entity ent, float relationChange); ====&lt;br /&gt;
&lt;br /&gt;
:This changes the current relation to an entity by adding the new amount.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvIcon&#039;&#039;&#039;(string name, string category, string icon); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory icon of the given item in the given category to &amp;lt;icon&amp;gt;.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvItemCount&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Decreases the inventory item stack count by amount. The item is addressed using the name and category of the item. These are usually defined on the inventory item entity (&amp;quot;inv_name&amp;quot;, &amp;quot;inv_category&amp;quot;)  Amount can be both negative and positive.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvLightgemModifier&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the lightgem modifier value of the given item. Valid arguments are between 0 and 32 (which is the maximum lightgem value).&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;changeLootAmount&#039;&#039;&#039;(float type, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the loot amount of the given Type (e.g. GOODS) by &amp;lt;amount&amp;gt;.  The mission statisic for loot found gets changed too.  The new value of the changed type is returned (e.g. the new GOODS value if this has been changed).  Note: The LOOT_TOTAL type can&#039;t be changed and 0 is returned.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: can be negative&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAbsence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:description missing&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copyBind&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:copy bind information of other to this entity (i.e., bind this entity to the same entity that other is bound to)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;createOverlay&#039;&#039;&#039;(string guiFile, float layer); ====&lt;br /&gt;
&lt;br /&gt;
:Creates a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;CreateTimer&#039;&#039;&#039;(float stimId, float hour, float minutes, float seconds, float milliseconds); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;damage&#039;&#039;&#039;(entity inflictor, entity attacker, vector dir, string damageDefName, float damageScale); ====&lt;br /&gt;
&lt;br /&gt;
:Deals damage to this entity (gets translated into the idEntity::Damage() method within the SDK).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage (maybe a projectile)&lt;br /&gt;
::&#039;&#039;attacker&#039;&#039;: the &amp;quot;parent&amp;quot; entity of the inflictor, the one that is responsible for the inflictor (can be the same)&lt;br /&gt;
::&#039;&#039;dir&#039;&#039;: the direction the attack is coming from.&lt;br /&gt;
::&#039;&#039;damageDefName&#039;&#039;: the name of the damage entityDef to know what damage is being dealt to &amp;lt;self&amp;gt; (e.g. &amp;quot;damage_lava&amp;quot;)&lt;br /&gt;
::&#039;&#039;damageScale&#039;&#039;: the scale of the damage (pass 1.0 as default, this should be ok).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;destroyOverlay&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Destroys a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to a point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;extinguishLights&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Extinguishes all lights (i.e. the &amp;lt;self&amp;gt; entity plus all bound lights)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeSound&#039;&#039;&#039;(float channel, float newLevel, float fadeTime); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the sound on this entity to a new level over a period of time.  Use SND_CHANNEL_ANY for all currently playing sounds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;frob&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Frobs the entity (i.e. simulates a frob action performed by the player). Returns TRUE if the entity is frobable, FALSE otherwise.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobHilight&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:ishtvan: Tries to make the entity frobhilight or not&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current orientation of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindChild&#039;&#039;&#039;(float ind); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the ind_th bind child of this entity or NULL if index is invalid. NOTE: indices start at zero&lt;br /&gt;
::&#039;&#039;ind&#039;&#039;: child index&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindMaster&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity&#039;s bindmaster&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBoolKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the boolean value of a specific spawn arg, defaulting to false.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getClipMask&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getColor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getContents&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvCategory&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory category.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvIcon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the icon of the currently highlighted inventory item.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCurInvItemEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently highlighted inventory item entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemId&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_item_id&amp;quot;). Most items will return an empty string, unless the &amp;quot;inv_item_id&amp;quot; is set on purpose.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_name&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntityKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the entity specified by the spawn arg.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFloatKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the floating point value of a specific spawn arg, defaulting to 0.0f.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGui&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the file currently loaded by a GUI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiFloat&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiInt&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGuiString&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIntKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the integer value of a specific spawn arg, defaulting to 0.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the value of a specific spawn arg, defaulting to &#039;&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightInPVS&#039;&#039;&#039;(float falloff, float scaling); ====&lt;br /&gt;
&lt;br /&gt;
:Computes the sum of all light in the PVS of the entity you call this on, and returns a vector with the sum.&lt;br /&gt;
::&#039;&#039;falloff&#039;&#039;: 0: no falloff with distance  0.5: sqrt(linear) falloff	(dist 100 =&amp;gt; 1/10)  1: linear falloff			(dist 100 =&amp;gt; 1/100)  2: square falloff			(dist 100 =&amp;gt; 1/10000) &lt;br /&gt;
::&#039;&#039;scaling&#039;&#039;: factor to scale the distance, can be used to lower/raise distance factor  after the linear or square scaling has been used good looking values are approx: sqrt(linear): 0.01, linear: 0.1, square 1.0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current linear velocity of this entity. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getLocation&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the idLocation entity corresponding to the entity&#039;s current location. This was player-specific before, but is now available to all entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLootAmount&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the amount of loot for the given type (e.g. LOOT_GOODS). Pass LOOT_TOTAL to return the sum of all loot types.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY, LOOT_TOTAL&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMass&#039;&#039;&#039;(float body); ====&lt;br /&gt;
&lt;br /&gt;
:Gets mass of a body for an entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMaxs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the maximum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMins&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the minimum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the next inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextKey&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Searches for the name of a spawn arg that matches the prefix.  For example, passing in &amp;quot;attack_target&amp;quot; matches &amp;quot;attack_target1&amp;quot;, &amp;quot;attack_targetx&amp;quot;, &amp;quot;attack_target_enemy&amp;quot;,  etc. The returned string is the name of the key which can then be passed into functions like getKey() to lookup the value of that spawn arg.  This is useful for when you have multiple values to look up, like when you target multiple objects.  To find the next matching key, pass in the previous result and the next key returned will be the first one that matches after the previous result. Pass in &amp;quot;&amp;quot; to get the first match. Passing in a non-existent key is the same as passing in &amp;quot;&amp;quot;. Returns &amp;quot;&amp;quot; when no  more keys match.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current position of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrevInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the previous inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetResponseEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity which should take the response. Some entities like AI heads are not responding themselves to stims, but relay it to another entity (i.e. the bodies they&#039;re attached to).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getShaderParm&#039;&#039;&#039;(float parm); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the size of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundVolume&#039;&#039;&#039;(string soundName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the volume of the sound to play.&lt;br /&gt;
::&#039;&#039;soundName&#039;&#039;: the name of the sound&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTarget&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the requested target entity.&lt;br /&gt;
::&#039;&#039;num&#039;&#039;: The target number. Starts at 0.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTeam&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current team number.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVectorKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the vector value of a specific spawn arg, defaulting to &#039;0 0 0&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantLoc&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getWorldOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current world-space position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:checks if an entity&#039;s script object has a specific function&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;heal&#039;&#039;&#039;(string healDefName, float healScale); ====&lt;br /&gt;
&lt;br /&gt;
:Heals the entity this is called on using the specified healing entityDef. Returns 1 if the entity could be healed, 0 otherwise (if the entity is already at full health, for ex.)&lt;br /&gt;
::&#039;&#039;healDefName&#039;&#039;: the name of the entityDef containing the healing information (e.g. &amp;quot;heal_potion&amp;quot;)&lt;br /&gt;
::&#039;&#039;healScale&#039;&#039;: the scaling value to be applied to the healAmount found in the healEntityDef&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hide&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity invisible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hideByLODBias&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inPVS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns non-zero if this entity is in PVS. For lights, it will return true when the light&#039;s bounding box is in PVS, even though the light may not actually be in PVS. (an unmoved shadowcasting light may not be visible to PVS areas its bounding box intersects with)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isDroppable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether an item may be dropped from the inventory&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEnemy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is an enemy.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFriend&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is a friend.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFrobable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHidden&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if the entity&#039;s model is invisible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHilighted&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if entity is currently frobhilighted.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInLiquid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the entity is in or touching a liquid.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isNeutral&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is neutral.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isType&#039;&#039;&#039;(string spawnclass); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity is of the given type.&lt;br /&gt;
::&#039;&#039;spawnclass&#039;&#039;: spawn class name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;loadExternalData&#039;&#039;&#039;(string declFile, string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Load an external xdata declaration.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadows&#039;&#039;&#039;(float noShadows); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false, turning shadowcasting on or off for this entity.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadowsDelayed&#039;&#039;&#039;(float noShadows, float delay); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false after delay in ms, turning shadows cast by this entity on or off.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
::&#039;&#039;delay&#039;&#039;: delay in ms&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numBindChildren&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bound entities lower down in the bind chain than this entity, but be sure to give it the topmost bindmaster&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numTargets&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of entities this entity has targeted.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propagateSound&#039;&#039;&#039;(string soundName, float propVolMod, float msgTag); ====&lt;br /&gt;
&lt;br /&gt;
:Generates a propagated sound&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSound&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunctions on all entities propagate a sound directly without playing an audible sound&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSoundMod&#039;&#039;&#039;(string name, float volMod); ====&lt;br /&gt;
&lt;br /&gt;
:propagate a sound directly with a volume modifier&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomTarget&#039;&#039;&#039;(string ignoreName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random targeted entity. Pass in an entity name to skip that entity.&lt;br /&gt;
::&#039;&#039;ignoreName&#039;&#039;: the name of an entity to ignore&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;rangedThreatTo&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Could this entity threaten the given (target) entity from a distance?&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeBinds&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes all attached entities from the game&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Removes a key from an object&#039;s spawnargs, so things like getNextKey() don&#039;t retrieve it.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to remove&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Remove a target from this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to remove from the targets&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;replaceInvItem&#039;&#039;&#039;(entity oldItem, entity newItem); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the entity &amp;lt;oldItem&amp;gt; with &amp;lt;newItem&amp;gt; in the inventory, while keeping &amp;lt;oldItem&amp;gt;&#039;s inventory position intact.  Note: The position guarantee only applies if &amp;lt;oldItem&amp;gt; and newItem  share the same category. If the categories are different, the position of &amp;lt;newItem&amp;gt; is likely to be different than the one of &amp;lt;oldItem&amp;gt;.  Note that &amp;lt;oldItem&amp;gt; will be removed from the inventory.  If &amp;lt;newItem&amp;gt; is the $null_entity, &amp;lt;oldItem&amp;gt; is just removed and no replacement happens.  Returns 1 if the operation was successful, 0 otherwise.&lt;br /&gt;
::&#039;&#039;newItem&#039;&#039;: can be $null_entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResetTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reskinCollisionModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:For use after setSkin() on moveables and static models, if the CM needs to be refreshed to update surface properties after a skin change. CM will be regenerated from the original model file with the new skin.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAdd&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAllow&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseIgnore&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:This functions must be called on the stim entity. It will add the response to the ignore list, so that subsequent stims, should not trigger the stim anymore.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseSetAction&#039;&#039;&#039;(float type, string action); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseTrigger&#039;&#039;&#039;(entity source, float stimType); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a response on this entity, without a stim (a stand-alone response, so to say)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;RestartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restorePosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns this entity to the position stored in the &amp;quot;origin&amp;quot; spawn arg. This is the position the entity was spawned in unless the &amp;quot;origin&amp;quot; key is changed. Note that there is no guarantee that the entity won&#039;t be stuck in another entity when moved, so care should be taken to make sure that isn&#039;t possible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current orientation of this entity (relative to bind parent if any)&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: the new orientation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setClipMask&#039;&#039;&#039;(float clipMask); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setColor&#039;&#039;&#039;(float parm0, float parm1, float parm2); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the RGB color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setContents&#039;&#039;&#039;(float contents); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;setCurInvCategory&#039;&#039;&#039;(string categoryName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the first item of the named category. Returns 1 on success, 0 on failure (e.g. wrong category name)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;setCurInvItem&#039;&#039;&#039;(string itemName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the named item. Returns: the item entity of the newly selected item (can be $null_entity).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setDroppable&#039;&#039;&#039;(float droppable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether an item may be dropped from the inventory. &lt;br /&gt;
::&#039;&#039;droppable&#039;&#039;: if non-zero the item becomes droppable, when called with 0 the item becomes non-droppable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEntityRelation&#039;&#039;&#039;(entity ent, float relation); ====&lt;br /&gt;
&lt;br /&gt;
:Set a relation to another entity, this can be friendly (&amp;gt;0), neutral(0) or hostile (&amp;lt;0)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobable&#039;&#039;&#039;(float frobable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGui&#039;&#039;&#039;(float handle, string guiFile); ====&lt;br /&gt;
&lt;br /&gt;
:Loads a new file into an existing GUI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiFloat&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiInt&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiString&#039;&#039;&#039;(float handle, string key, string val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiStringFromKey&#039;&#039;&#039;(float handle, string key, entity src, string srcKey); ====&lt;br /&gt;
&lt;br /&gt;
:This is a kludge. It is equivelant to: setGuiString( handle, key, src.getKey(srcKey) ) However, it&#039;s used to bypass the 127 char size limit on script strings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setKey&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key on this entity&#039;s spawn args. Note that most spawn args are evaluated when this entity spawns in, so this will not change the entity&#039;s behavior in most cases. This is chiefly for saving data the script needs in an entity for later retrieval.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to set&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: the value to store&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current linear velocity of this entity in units per second. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setModel&#039;&#039;&#039;(string modelName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the model this entity uses&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setName&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of this entity.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: the new name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNeverDormant&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enables or prevents an entity from going dormant&lt;br /&gt;
::&#039;&#039;enable&#039;&#039;: 1 = enable, 0 = disable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (relative to it&#039;s bind parent if any)&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: the new origin&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOwner&#039;&#039;&#039;(entity owner); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the owner of this entity. Entities will never collide with their owner.&lt;br /&gt;
::&#039;&#039;owner&#039;&#039;: the entity which will be made owner of this entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParm&#039;&#039;&#039;(float parm, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: new value&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets shader parms Parm0, Parm1, Parm2, and Parm3 (red, green, blue, and alpha respectively).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
::&#039;&#039;parm3&#039;&#039;: alpha&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSize&#039;&#039;&#039;(vector min, vector max); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of this entity&#039;s bounding box.&lt;br /&gt;
::&#039;&#039;min&#039;&#039;: minimum corner coordinates&lt;br /&gt;
::&#039;&#039;max&#039;&#039;: maximum corner coordinates&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSkin&#039;&#039;&#039;(string skinName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the skin this entity uses.  Set to &amp;quot;&amp;quot; to turn off the skin.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundVolume&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the volume of the sound to play, must be issued before startSoundShader.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTeam&#039;&#039;&#039;(float newTeam); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the team number of this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetTimerState&#039;&#039;&#039;(float stimId, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWorldOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;show&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity visible if it has a model.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startFx&#039;&#039;&#039;(string fx); ====&lt;br /&gt;
&lt;br /&gt;
:Starts an FX on this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSound&#039;&#039;&#039;(string sound, float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the sound specified by the snd_* key/value pair on the channel and returns the length of the sound in seconds. This is the preferred method for playing sounds on an entity since it ensures that the sound is precached.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: the spawnarg to reference, e.g. &#039;snd_move&#039;&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSoundShader&#039;&#039;&#039;(string shaderName, float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Plays a specific sound shader on the channel and returns the length of the sound in seconds. This is not the preferred method of playing a sound since you must ensure that the sound is loaded.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to play&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play the sound on&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimAdd&#039;&#039;&#039;(float type, float radius); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimClearIgnoreList&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:This clears the ignore list for the stim of the given type It can be used if an entity changes state in some way that it would no longer be ignored&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSound&#039;&#039;&#039;(float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a specific sound shader on the channel.&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to stop playback on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StopTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;teleportTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Teleports the entity to the position of the other entity, plus a possible offset and random offset (defined on the spawnargs of the entity to be teleported)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;touches&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity touches the other entity.&lt;br /&gt;
::&#039;&#039;other&#039;&#039;: the entity to check against&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unbind&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Detaches this entity from its master.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wait&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of the current thread for the given number of seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFrame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of current thread for one game frame.&lt;br /&gt;
&lt;br /&gt;
=== idAnimatedEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearAllJoints&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on all joints.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearJoint&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on the specified joint.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointAngle&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the angular orientation of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getJointHandle&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:Looks up the number of the specified joint. Returns INVALID_JOINT if the joint is not found.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointPos&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointAngle&#039;&#039;&#039;(float jointnum, float transform_type, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the orientation of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointPos&#039;&#039;&#039;(float jointnum, float transform_type, vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the position of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
=== CFrobButton ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Operate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to operate this entity.&lt;br /&gt;
&lt;br /&gt;
=== CFrobDoor ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoorhandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the handle entity of this door. Can return NULL (== $null_entity)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;OpenDoor&#039;&#039;&#039;(float master); ====&lt;br /&gt;
&lt;br /&gt;
:The OpenDoor method is necessary to give the FrobDoorHandles a  &amp;quot;low level&amp;quot; open routine. The CFrobDoor::Open() call is re-routed to the FrobDoorHandle::Tap() method, so there must be a way to actually let the door open. Which is what this method does.  Note: Shouldn&#039;t be called directly by scripters, call handle-&amp;gt;Tap() instead. Unless you know what you&#039;re doing.&lt;br /&gt;
&lt;br /&gt;
=== CFrobDoorHandle ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated door entity for this handle.&lt;br /&gt;
&lt;br /&gt;
=== CFrobHandle ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Tap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Operates this handle.&lt;br /&gt;
&lt;br /&gt;
=== CFrobLever ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Operate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to operate this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Switch&#039;&#039;&#039;(float newState); ====&lt;br /&gt;
&lt;br /&gt;
:Move the lever to the on or off position (0 = off).&lt;br /&gt;
&lt;br /&gt;
=== CFrobLock ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Open&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the frobmover, regardless of its previous state. The mover will not move when it&#039;s locked. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_StatusUpdate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
=== CFrobLockHandle ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated lock of this handle.&lt;br /&gt;
&lt;br /&gt;
=== tdmFuncShooter ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterFireProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a projectile.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the ammonition&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of this shooter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetAmmo&#039;&#039;&#039;(float newAmmo); ====&lt;br /&gt;
&lt;br /&gt;
:Set the ammonition&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Activates / deactivates the shooter entity.&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = active, 0 = inactive&lt;br /&gt;
&lt;br /&gt;
=== idEntityFx ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idItem ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;respawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Respawn&lt;br /&gt;
&lt;br /&gt;
=== idMoveableItem ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;gib&#039;&#039;&#039;(string damageDefName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
=== idLight ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeInLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light on over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOutLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light out over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeToLight&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the light to the given color over a given time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get level (intensity) of a light, &amp;lt;= 0.0 indicates it is off&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the light origin (independent of its visual model)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightParm&#039;&#039;&#039;(float parmNum); ====&lt;br /&gt;
&lt;br /&gt;
:Gets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getRadius&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the light radius.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getShader&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the shader name used by the light.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Off&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity off.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;On&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity on.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightOrigin&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Set origin of lights independent of model origin&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParm&#039;&#039;&#039;(float parmNum, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the red/green/blue/alpha shader parms on the light and the model.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadius&#039;&#039;&#039;(float radius); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of the bounding box, x=y=z=radius.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadiusXYZ&#039;&#039;&#039;(float x, float y, float z); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the width/length/height of the light bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShader&#039;&#039;&#039;(string shader); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the shader to be used for the light.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setStartedOff&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;smoking&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:flame is now smoking (1), or not (0)&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = smoking, 0 = not smoking&lt;br /&gt;
&lt;br /&gt;
=== idPlayerStart ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idActivator ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPathCorner ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomPath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
=== idDamagable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idExplodable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idForceField ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Toggle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the forcefield on and off.&lt;br /&gt;
&lt;br /&gt;
=== idAnimated ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;footstep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchMissiles&#039;&#039;&#039;(string projectilename, string sound, string launchbone, string targetbone, float numshots, float framedelay); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a projectile.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to a ragdoll taking over the animation.&lt;br /&gt;
&lt;br /&gt;
=== idStaticEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncSmoke ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idVacuumSeparatorEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPortalEntity ===&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortalHandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the portal handle.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundLoss&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundLoss&#039;&#039;&#039;(float loss); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
=== idBeam ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idShaking ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idEarthQuake ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncPortal ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncAASPortal ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncAASObstacle ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPhantomObjects ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPortalSky ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== tdmVine ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addDescendant&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canWater&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;scaleVine&#039;&#039;&#039;(float factor); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPrime&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
=== idMoveable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeNonSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes the moveable non-solid for other entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableDamage&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enable/disable damage&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isAtRest&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if object is not moving&lt;br /&gt;
&lt;br /&gt;
=== idMover ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover accelerates.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the acceleration time. Set this acceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates an acceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bob&#039;&#039;&#039;(float speed, float phase, vector distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation back and forth along the given vector with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;closePortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover decelerates.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the deceleration time. Set this deceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a deceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveSpeed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the movement speed.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the movement time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is moving&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is rotating&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;move&#039;&#039;&#039;(float angle, float distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation with the given distance in the given yaw direction. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the moving.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveTo&#039;&#039;&#039;(entity targetEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to the position of an entity. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to an absolute position. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;openPortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeInitialSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Subtracts the initial spline angles to maintain the initial orientation of the mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotate&#039;&#039;&#039;(vector angleSpeed); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation with the given angular speed. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateDownTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by decreasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateOnce&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the current angles plus the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateTo&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateUpTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by increasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;speed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement speed. Set this speed before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startSpline&#039;&#039;&#039;(entity spline); ====&lt;br /&gt;
&lt;br /&gt;
:Starts moving along a spline stored on the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any translational movement.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any rotational movement.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSpline&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops moving along a spline.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sway&#039;&#039;&#039;(float speed, float phase, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation back and forth along the given angles with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;time&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement time. Set this time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
=== idMover_Binary ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;closePortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;openPortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
=== idRotater ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idRiser ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPlayer ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponName&#039;&#039;&#039;(string weaponName, string displayName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the display name of the given weapon item to something different. Pass an empty string to reset the display name to the definition as found in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponProjectile&#039;&#039;&#039;(string weaponName, string projectileDefName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the projectile entityDef name of the given weapon (e.g. &amp;quot;broadhead&amp;quot;) to the specified entityDef (e.g. &amp;quot;atdm:projectile_broadhead&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAAS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMapEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearMouseDeadTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;customDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;deathMenu&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Lowers and disables the player weapon.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the player weapon.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;endZoom&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Starts the zoom out event, which performs a gradual transition back to the default FOV. May be called during a transition as well to intercept a pending zoom in transition.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;exitTeleporter&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getButtons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the button state from the current user command.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurrentWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player is currently holding.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurWeaponName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current weapon, as defined by &amp;quot;inv_weapon_name&amp;quot; in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getDragged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently dragged body. Returns $null_entity if the body is shouldered, the player has nothing in his hands, or he has a non-AF entity in his hands. See also getShouldered(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the current FOV of the player. You can modify the current FOV with startZoom() and endZoom().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getFrobbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently frobhilighted entity. This includes entities the player has in his hands. Sets &amp;quot;frob only used by&amp;quot; mode&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getGrabbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently entity in the players hands. Returns $null_entity if the player has nothing in his hands Dragging or shouldering a body counts as grabbing it. See also getDragged(), getShouldered(), getFrobbed().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getImmobilization&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getInventoryOverlay&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the default inventory overlay for the player. All other entities will return an invalid value.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the results of the last mouse gesture in enum form. (see the definition for MOUSEDIR_* for which numbers correspond to which directions)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the movement relative to the player&#039;s view angles from the current user command. vector_x = forward, vector_y = right, vector_z = up&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the next hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextImmobilization&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextTurnHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Get the next hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveState&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of the objective with the number ObjNum.  State is one of the following: OBJ_INCOMPLETE = 0, OBJ_COMPLETE = 1, OBJ_INVALID = 2, OBJ_FAILED = 3&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPreviousWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player was previously holding.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getShouldered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently shouldered body, otherwise $null_entity. See also getDragged(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTurnHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:* Get the hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getViewAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the player view angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWeaponEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity for the player&#039;s weapon&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;giveHealthPool&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:This increases/decreases the healthpool of the player by the given amount. The healthpool is gradually decreased over time, healing (damaging?) the player.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;heldEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity currently being held, or $null_entity if the player&#039;s hands are empty.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;holdEntity&#039;&#039;&#039;(entity entity); ====&lt;br /&gt;
&lt;br /&gt;
:Forces the player to hold an entity (e.g. puts it into the grabber). Drops whatever is in the player&#039;s hands if $null_entity is passed to it. Returns 1 if successful, 0 if not.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionFailed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionSuccess&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;mouseGestureFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player is not currently doing a mouse gesture.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveCompUnlatch&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective component that has latched into a state&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveUnlatch&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective that has latched into a state&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the game. This should only be called for threads that are explicitly maintained by a special SDK method, because ordinary threads won&#039;t get executed during g_stopTime == true. Note: This is used by the objective GUI threads. Note: Must be called on the player entity, not the sys entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;playStartSound&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;readLightgemModifierFromWorldspawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetWeaponProjectile&#039;&#039;&#039;(string weaponName); ====&lt;br /&gt;
&lt;br /&gt;
:Reloads the original projectile def name from the weaponDef. Used to revert a change made by the event changeWeaponProjectile().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetZoom&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cancels any pending zoom transitions and resets the FOV to normal.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ropeRemovalCleanup&#039;&#039;&#039;(entity ropeEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Called when rope arrow ropes are removed, removes stale pointers on the player object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveGame&#039;&#039;&#039;(string filename); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;selectWeapon&#039;&#039;&#039;(string weapon); ====&lt;br /&gt;
&lt;br /&gt;
:Selects the weapon the player is holding.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setActiveInventoryMapEnt&#039;&#039;&#039;(entity mapEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Notify the player about a new active map entity. This clears out any previously active maps.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobOnlyUsedByInv&#039;&#039;&#039;(float OnOff); ====&lt;br /&gt;
&lt;br /&gt;
:Engages or disengages a mode where we only frobhilight entities that can be used by our current inventory item. This also disables general frobactions and only allows &amp;quot;used by&amp;quot; frob actions.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set hinderance from a source.&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setImmobilization&#039;&#039;&#039;(string source, float type); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightgemModifier&#039;&#039;&#039;(string modifierName, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the named lightgem modifier to a certain value. An example would be the player lantern: setLightgemModifier(&amp;quot;lantern&amp;quot;, 32). This way multiple modifiers can be set by concurrent script threads.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum, float state); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: objective number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: component number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 or 0 for true or false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveEnabling&#039;&#039;&#039;(float ObjNum, string strIn); ====&lt;br /&gt;
&lt;br /&gt;
:Set an objective&#039;s enabling objectives (objectives that must be completed before that objective may be completed).&lt;br /&gt;
::&#039;&#039;strIn&#039;&#039;: takes the form of a string that is a space-delimited list of integer objectives representing the new enabling objectives. E.g. : &#039;1 2 3 4&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOngoing&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective ongoing.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOptional&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective mandatory.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveState&#039;&#039;&#039;(float ObjNum, float State); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of objectives from the script. For example, use this to invalidate an objective when something happens in your mission. The first argument is the numerical index of the objective (taking &#039;user&#039; objective indices, starting at 1). Choose from the following for the second argument: OBJ_INCOMPLETE, OBJ_COMPLETE, OBJ_INVALID, OBJ_FAILED. Use this on $player1 like $player1.setObjectiveState(1, OBJ_COMPLETE);&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveText&#039;&#039;&#039;(float ObjNum, string newText); ====&lt;br /&gt;
&lt;br /&gt;
:Modify the displayed text for an objective. Can also be a string template like #str_20000&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveVisible&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective visibility.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSavePermissions&#039;&#039;&#039;(float permission); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;permission&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpyglassOverlayBackground&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the background overlay for the spyglass, depending on aspect ratio.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Set the hinderance on the view turning from a source&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setViewAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the player view angles, e.g. make the player facing this direction. 0 0 0 is east (along the X axis in DR), 0 90 0 north (along the Y axis in DR) 0 180 0 west, 0 270 0 south.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startGamePlayTimer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Resets the game play timer to zero and (re)starts it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startMouseGesture&#039;&#039;&#039;(float key, float thresh, float test, float inverted, float turnHinderance, float decideTime, float deadTime); ====&lt;br /&gt;
&lt;br /&gt;
:Start tracking a mouse gesture that started when the key impulse was pressed. Discretizes analog mouse movement into a few different gesture possibilities. Impulse arg can also be a button, see the UB_* enum in usercmdgen.h. For now, only one mouse gesture check at a time.&lt;br /&gt;
::&#039;&#039;thresh&#039;&#039;: Waits until the threshold mouse input thresh is reached before deciding.&lt;br /&gt;
::&#039;&#039;test&#039;&#039;: determines which test to do (0 = up/down, 1 = left/right, 2 = 4 directions, 3 = 8 directions).&lt;br /&gt;
::&#039;&#039;inverted&#039;&#039;: inverts the movement if set to 1, does not if 0&lt;br /&gt;
::&#039;&#039;turnHinderance&#039;&#039;: Sets the max player view turn rate when checking this mouse gesture (0 =&amp;gt; player view locked, 1.0 =&amp;gt; no effect on view turning)&lt;br /&gt;
::&#039;&#039;decideTime&#039;&#039;: time in milliseconds after which the mouse gesture is auto-decided, in the event that the mouse movement threshold was not reached. A DecideTime of -1 means wait forever until the button is released.&lt;br /&gt;
::&#039;&#039;deadTime&#039;&#039;: how long after attack is pressed that mouse control remains dampened by the fraction turnHinderance.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startZoom&#039;&#039;&#039;(float duration, float startFOV, float endFOV); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to start the zoom in event. The player FOV is gradually zoomed in until over the given timespan.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
::&#039;&#039;startFOV&#039;&#039;: The start FOV, this is clamped to [1..179]&lt;br /&gt;
::&#039;&#039;endFOV&#039;&#039;: The end FOV, this is clamped to [1..179]&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopFxFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testEvent1&#039;&#039;&#039;(float float_pi, float int_beef, float float_exp, string string_tdm, float float_exp10, float int_food); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;testEvent2&#039;&#039;&#039;(float int_prevres, vector vec_123, float int_food, entity ent_player, entity ent_null, float float_pi, float float_exp); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;testEvent3&#039;&#039;&#039;(entity ent_prevres, vector vec_123, float float_pi, entity ent_player); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerMissionEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unpauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unpauses the game. Most scripts are not executed during g_stopTime == true and won&#039;t get into the position of calling this.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;wasDamaged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Check if the player was damaged this frame.&lt;br /&gt;
&lt;br /&gt;
=== idProjectile ===&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjectileState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state of the projectile. States are defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launch&#039;&#039;&#039;(vector start, vector dir, vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Launches the projectile from &amp;lt;start&amp;gt; in direction &amp;lt;dir&amp;gt; with the given &amp;lt;velocity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
=== CProjectileResult ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getActualStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAxialDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalAngVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIncidenceAngle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjMass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSurfNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getSurfType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isVineFriendly&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Vine-arrow event&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetRelations ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetEntityRelation ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ChangeEntityRelation ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idThread ===&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToForward&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a forward vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToRight&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a right vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToUp&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an up vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;assert&#039;&#039;&#039;(float condition); ====&lt;br /&gt;
&lt;br /&gt;
:Breaks if the condition is zero. (Only works in debug builds.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cacheSoundShader&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensure the specified sound shader is loaded by the system. Prevents cache misses when playing sound shaders.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to cache&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canPlant&#039;&#039;&#039;(vector traceStart, vector traceEnd, entity ignore, entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ceil&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the smallest integer that is greater than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearPersistantArgs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears data that persists between maps.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearSignalThread&#039;&#039;&#039;(float signalNum, entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the script callback function set for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copySpawnArgs&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:copies the spawn args from an entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;cos&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cosine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;CrossProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cross product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debug_tdm_material&#039;&#039;&#039;(string file); ====&lt;br /&gt;
&lt;br /&gt;
:For temporary debuging purposes only. Should be removed eventually.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugArrow&#039;&#039;&#039;(vector color, vector start, vector end, float size, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugBounds&#039;&#039;&#039;(vector color, vector mins, vector maxs, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugCircle&#039;&#039;&#039;(vector color, vector origin, vector dir, float radius, float numSteps, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugLine&#039;&#039;&#039;(vector color, vector start, vector end, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;DotProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the dot product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;drawText&#039;&#039;&#039;(string text, vector origin, float scale, vector color, float align, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:text drawing for debugging. lifetime of 0 == 1 frame.&lt;br /&gt;
::&#039;&#039;align&#039;&#039;: 0 = left, 1 = center, 2 = right&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitParticle&#039;&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle); ====&lt;br /&gt;
&lt;br /&gt;
:Start a particle effect in the world without using an entity emitter. Will emit one quad per particle stage when first called with sys.getTime() as the start time. Designed to be called once per frame with the same startTime each call to achieve a normal particle effect, or on demand with sys.getTime() as the startTime for finer grained control, 1 quad at a time. Returns True (1) if there are more particles to be emitted from the stage, False (0) if the stage has released all its quads.&lt;br /&gt;
::&#039;&#039;particle&#039;&#039;: String: name of particle effect.&lt;br /&gt;
::&#039;&#039;startTime&#039;&#039;: Game seconds since map start: use sys.getTime() for the first call unless you want to back-date the particle so that it starts part way through its cycle.&lt;br /&gt;
::&#039;&#039;diversity&#039;&#039;: Randomizer value between 0 and 1. All particles with the same diversity will have the same path and rotation. Use sys.random(1) for a random path.&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: Origin of the particle effect.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Axis for the particle effect. Use $&amp;lt;entityname&amp;gt;.getAngles() to align the particle to an entity. use &#039;0 0 0&#039; for an upright (world-aligned) particle effect.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;error&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues an error.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeIn&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades towards the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOut&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades from the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeTo&#039;&#039;&#039;(vector color, float alpha, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades to the given color up to the given alpha over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;firstPerson&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns view control to the player entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;floor&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the largest integer that is less than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentMissionNum&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the current mission (0-based, the first mission has number 0).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getcvar&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for a cvar.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getDifficultyLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 0 (Easy), 1 (Medium) or 2 (Hard), depending on the difficulty level of the current mission.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getDifficultyName&#039;&#039;&#039;(float difficultyLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the (translated) name of the difficulty level passed as the argument.&lt;br /&gt;
::&#039;&#039;difficultyLevel&#039;&#039;: 0 (Easy), 1 (Medium), 2 (Hard)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntity&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity with the specified name.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFrameTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the length of time between game frames.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getMainAmbientLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity of the main ambient light.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMissionStatistic&#039;&#039;&#039;(string statisticName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns current mission statistic.&lt;br /&gt;
::&#039;&#039;statisticName&#039;&#039;: Can be one of (case insensitive): 	gamePlayTime: gameplay time in seconds 	damageDealt: damage dealt to enemies 	damageReceived: damage received by player 	healthReceived: health received by player 	pocketsPicked: pockets picked by player 	foundLoot: loot found by player 	missionLoot: total loot available in mission 	totalTimePlayerSeen: total time the player was seen by enemies in seconds. Updates only when AI lose sight of player 	numberTimesPlayerSeen: number of times player was seen by enemies 	numberTimesAISuspicious: number of times AI was &#039;observant&#039; or &#039;suspicious&#039;. A single AI passing through both alert levels will add 2 to the score. 	numberTimesAISearched: number of times AI was &#039;investigating&#039; or &#039;searching&#039;. A single AI passing through both alert levels will add 2 to the score. 	sightingScore: sighting score (number of times player was seen * weight) 	stealthScore: stealth score (sighting score + alerts * weights) 	killedByPlayer: number of enemies killed by player 	knockedOutByPlayer: number of enemies knocked out by player 	bodiesFound: number of times enemies have spotted a body &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextEntity&#039;&#039;&#039;(string key, string value, entity lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Discover all entities in the map. Returns $null_entity when no more found.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: Optional string: prefix for spawnarg key match. E.g. &amp;quot;target&amp;quot; will match &amp;quot;target&amp;quot;, &amp;quot;target1&amp;quot; etc.&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: Optional string: spawnarg value to match. Can be used independently of &#039;&#039;key&#039;&#039;. If &#039;&#039;key&#039;&#039; is not set, all spawnargs will be checked for the value.&lt;br /&gt;
::&#039;&#039;lastMatch&#039;&#039;: Last match: search will start after this entity. Use $null_entity or pass an uninitialized entity variable to start a new search.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPersistantFloat&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPersistantString&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getPersistantVector&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortAISoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortPlayerSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss  scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelation&#039;&#039;&#039;(float team1, float team2); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTDMVersion&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the current TDM version as integer. The value will be 108 for v1.08, 109 for v1.09 and 200 for v2.00 etc.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTicsPerSecond&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the number of game frames per second.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current game time in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceBody&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the body part of the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceEndPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position the trace stopped due to a collision with solid geometry during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTraceEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTraceFraction&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed during the last call to trace or tracePoint.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceJoint&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the skeletal joint closest to the location on the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normal of the hit plane during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;handleMissionEvent&#039;&#039;&#039;(entity objEnt, float eventType, string argument); ====&lt;br /&gt;
&lt;br /&gt;
:Generic interface for passing on mission events from scripts to the SDK. Available since TDM 1.02&lt;br /&gt;
::&#039;&#039;objEnt&#039;&#039;: the entity that triggered this event (e.g. a readable)&lt;br /&gt;
::&#039;&#039;eventType&#039;&#039;: a numeric identifier (enumerated both in MissionData.h and tdm_defs.script) specifying the type of event&lt;br /&gt;
::&#039;&#039;argument&#039;&#039;: an optional string parameter, eventtype-specific.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;influenceActive&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if an influence is active&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isClient&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:networking - checks for client&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMultiplayer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if it&#039;s a multiplayer game&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;killthread&#039;&#039;&#039;(string threadName); ====&lt;br /&gt;
&lt;br /&gt;
:Kills all threads with the specified name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;log&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the log of the given argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;logString&#039;&#039;&#039;(float logClass, float logType, string output); ====&lt;br /&gt;
&lt;br /&gt;
:This is the script counterpart to DM_LOG&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;music&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Starts playing background music.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;offsetRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;onSignal&#039;&#039;&#039;(float signalNum, entity ent, string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a script callback function for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pause&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the current thread.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pointInLiquid&#039;&#039;&#039;(vector point, entity ignoreEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if a point is in a liquid, returns 1 if this is the case.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pow&#039;&#039;&#039;(float x, float y); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the power of x to y.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;print&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given string to the console.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;println&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given line to the console.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamage&#039;&#039;&#039;(vector origin, entity inflictor, entity attacker, entity ignore, string damageDefName, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:damages entities within a radius defined by the damageDef.  inflictor is the entity  causing the damage and can be the same as the attacker (in the case   of projectiles, the projectile is the inflictor, while the attacker is the character  that fired the projectile).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage&lt;br /&gt;
::&#039;&#039;ignore&#039;&#039;: an entity to not cause damage to&lt;br /&gt;
::&#039;&#039;dmgPower&#039;&#039;: scales the damage (for cases where damage is dependent on time)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;random&#039;&#039;&#039;(float range); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random value X where 0 &amp;lt;= X &amp;lt; range.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;say&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Multiplayer - Print this line on the network&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sessionCommand&#039;&#039;&#039;(string cmd); ====&lt;br /&gt;
&lt;br /&gt;
:Sends the sessioncommand to the game&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setCamera&#039;&#039;&#039;(entity cameraEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Turns over view control to the given camera entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setcvar&#039;&#039;&#039;(string name, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a cvar.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPersistantArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair that persists between maps&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortAISoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortPlayerSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParm&#039;&#039;&#039;(float parm, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: new value&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpawnArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair to be used when a new entity is spawned.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sin&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawn&#039;&#039;&#039;(string classname); ====&lt;br /&gt;
&lt;br /&gt;
:Creates an entity of the specified classname and returns a reference to the entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;SpawnFloat&#039;&#039;&#039;(string key, float default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;SpawnString&#039;&#039;&#039;(string key, string default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;SpawnVector&#039;&#039;&#039;(string key, vector default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sqrt&#039;&#039;&#039;(float square); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the square root of the given number.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strFind&#039;&#039;&#039;(string text, string find, float casesensitive, float start, float end); ====&lt;br /&gt;
&lt;br /&gt;
:Return the position of the given substring, counting from 0, or -1 if not found.&lt;br /&gt;
::&#039;&#039;casesensitive&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;start&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;end&#039;&#039;: -1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strLeft&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the first num characters&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strLength&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of characters in the string&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strMid&#039;&#039;&#039;(string text, float start, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the characters from start to start + num&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRemove&#039;&#039;&#039;(string text, string remove); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given substring with &amp;quot;&amp;quot;. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;) results in &amp;quot;aa&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strReplace&#039;&#039;&#039;(string text, string remove, string replace); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given string with the replacement string. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;,&amp;quot;ccc&amp;quot;) results in &amp;quot;accca&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRight&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the last num characters&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strSkip&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string following the first num characters&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToFloat&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the numeric value of the given string.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToInt&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the integer value of the given string.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;terminate&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Terminates a thread.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;threadname&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of the current thread.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;trace&#039;&#039;&#039;(vector start, vector end, vector mins, vector maxs, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the box from &#039;mins&#039; to &#039;maxs&#039; hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;tracePoint&#039;&#039;&#039;(vector start, vector end, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the trace hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;translate&#039;&#039;&#039;(string input); ====&lt;br /&gt;
&lt;br /&gt;
:Translates a string (like #str_12345) into the current language&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;trigger&#039;&#039;&#039;(entity entityToTrigger); ====&lt;br /&gt;
&lt;br /&gt;
:Triggers the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;vecLength&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the given vector.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;vecNormalize&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normalized version of the given vector.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;VecToAngles&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns Euler angles for the given direction.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wait&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of the current thread for the given number of seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFor&#039;&#039;&#039;(entity mover); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given entity to complete its move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForRender&#039;&#039;&#039;(entity e); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends the current thread until &#039;e&#039; might have been rendered. It&#039;s event based, so it doesn&#039;t waste CPU repeatedly checking inPVS(). e.inPVS() will very likely be true when the thread resumes. If e.inPVS() is true, calling waitForRender() will probably just wait a frame, unless D3 can figure out that the entity doesn&#039;t need to be rendered. Optimizations regarding shadowcasting lights may not apply to this function - it is based purely off whether or not the entity&#039;s bounding box is visible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForThread&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given thread to terminate.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFrame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of current thread for one game frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;warning&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues a warning.&lt;br /&gt;
&lt;br /&gt;
=== idSecurityCamera ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getSpotLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the spotlight used by the camera. Returns null_entity if none is used.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_light&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the spotlight on/off.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_sweep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the camera sweep.&lt;br /&gt;
&lt;br /&gt;
=== Seed ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cullAll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cull (remove from world) all entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
=== idSound ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Off&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity off.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;On&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity on.&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Remove ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Show ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Damage ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SessionCommand ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_EndLevel ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_WaitForButton ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetGlobalShaderTime ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetShaderParm ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetShaderTime ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_FadeEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_LightFadeIn ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_LightFadeOut ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Give ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetModel ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetInfluence ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetKeyVal ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetFov ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_CallObjectFunction ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_PostScriptEvent ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_EnableLevelWeapons ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_RemoveWeapons ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_FadeSoundClass ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_AddObjectives ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetObjectiveState ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetObjectiveVisibility ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetObjectiveComponentState ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_StartConversation ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetFrobable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_CallScriptFunction ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ChangeLockState ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ChangeTarget ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_InterMissionTrigger ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetTeam ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ItemRemove ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Multi ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_EntityName ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Timer ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Count ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Hurt ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Fade ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Touch ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idWeapon ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addToClip&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDrop&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoAvailable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Number of shots left in inventory&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoInClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDone&#039;&#039;&#039;(float channel, float blendOutFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the animation playing on the given channel is completed considering a number of blend frames.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animIsPaused&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Return whether the given anim channel is paused&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;clipSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ejectBrass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;flashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBlendFrames&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightParm&#039;&#039;&#039;(float parmNum); ====&lt;br /&gt;
&lt;br /&gt;
:Gets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getOwner&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the owning entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWorldModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity that controls the world model&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInvisible&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchProjectiles&#039;&#039;&#039;(float num_projectiles, float spread, float fuseOffset, float launchPower, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;melee&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netEndReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;nextWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseAnim&#039;&#039;&#039;(float channel, float bPause); ====&lt;br /&gt;
&lt;br /&gt;
:Pause all animations playing on the given channel. NOTE: Can also be used used by idWeapons&lt;br /&gt;
::&#039;&#039;bPause&#039;&#039;: true = pause, false = unpause&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Do not use, this is part of TDM&#039;s internal mechanics. Use playCustomAnim() on AI.in scripts instead of this. Plays the given animation on the given channel. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCycle&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Continuously repeats the given animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBlendFrames&#039;&#039;&#039;(float channel, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParm&#039;&#039;&#039;(float parmNum, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the red/green/blue/alpha shader parms on the light and the model.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachment&#039;&#039;&#039;(string attName, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment.&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachmentInd&#039;&#039;&#039;(float index, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment by array index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;totalAmmoCount&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Amount of ammo in inventory. since each shot may use more than 1 ammo, this is different than ammoAvailable()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;useAmmo&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Eats the specified amount of ammo&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponHolstered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponLowering&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponOutOfAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReady&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReloading&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponRising&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponState&#039;&#039;&#039;(string stateFunction, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.06&amp;diff=19972</id>
		<title>TDM Script Reference/2.06</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.06&amp;diff=19972"/>
		<updated>2018-05-07T14:45:24Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been generated automatically by the tdm_gen_script_event_doc console command.&lt;br /&gt;
&lt;br /&gt;
Generated by The Dark Mod 2.06, code revision 7382, last update: 2018-05-07 10:39&lt;br /&gt;
&lt;br /&gt;
{{tdm-scripting-reference-intro}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;toclimit-4&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
= TDM Script Event Reference =&lt;br /&gt;
&lt;br /&gt;
== All Events ==&lt;br /&gt;
=== Alphabetic List ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover accelerates.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the acceleration time. Set this acceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates an acceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CTarget_AddObjectives&#039;&#039;, &#039;&#039;CTarget_CallScriptFunction&#039;&#039;, &#039;&#039;CTarget_ChangeEntityRelation&#039;&#039;, &#039;&#039;CTarget_ChangeLockState&#039;&#039;, &#039;&#039;CTarget_ChangeTarget&#039;&#039;, &#039;&#039;CTarget_InterMissionTrigger&#039;&#039;, &#039;&#039;CTarget_ItemRemove&#039;&#039;, &#039;&#039;CTarget_SetEntityRelation&#039;&#039;, &#039;&#039;CTarget_SetFrobable&#039;&#039;, &#039;&#039;CTarget_SetObjectiveComponentState&#039;&#039;, &#039;&#039;CTarget_SetObjectiveState&#039;&#039;, &#039;&#039;CTarget_SetObjectiveVisibility&#039;&#039;, &#039;&#039;CTarget_SetRelations&#039;&#039;, &#039;&#039;CTarget_SetTeam&#039;&#039;, &#039;&#039;CTarget_StartConversation&#039;&#039;, &#039;&#039;idAFEntity_Generic&#039;&#039;, &#039;&#039;idAFEntity_WithAttachedHead&#039;&#039;, &#039;&#039;idAI&#039;&#039;, &#039;&#039;idActivator&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;, &#039;&#039;idBeam&#039;&#039;, &#039;&#039;idBrittleFracture&#039;&#039;, &#039;&#039;idCameraAnim&#039;&#039;, &#039;&#039;idCameraView&#039;&#039;, &#039;&#039;idCombatNode&#039;&#039;, &#039;&#039;idDamagable&#039;&#039;, &#039;&#039;idEarthQuake&#039;&#039;, &#039;&#039;idEntityFx&#039;&#039;, &#039;&#039;idExplodable&#039;&#039;, &#039;&#039;idForceField&#039;&#039;, &#039;&#039;idFuncAASObstacle&#039;&#039;, &#039;&#039;idFuncAASPortal&#039;&#039;, &#039;&#039;idFuncPortal&#039;&#039;, &#039;&#039;idFuncSmoke&#039;&#039;, &#039;&#039;idItem&#039;&#039;, &#039;&#039;idLight&#039;&#039;, &#039;&#039;idMoveable&#039;&#039;, &#039;&#039;idMover&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;, &#039;&#039;idPhantomObjects&#039;&#039;, &#039;&#039;idPlayerStart&#039;&#039;, &#039;&#039;idPortalSky&#039;&#039;, &#039;&#039;idRiser&#039;&#039;, &#039;&#039;idRotater&#039;&#039;, &#039;&#039;idShaking&#039;&#039;, &#039;&#039;idSound&#039;&#039;, &#039;&#039;idStaticEntity&#039;&#039;, &#039;&#039;idTarget_CallObjectFunction&#039;&#039;, &#039;&#039;idTarget_Damage&#039;&#039;, &#039;&#039;idTarget_EnableLevelWeapons&#039;&#039;, &#039;&#039;idTarget_EndLevel&#039;&#039;, &#039;&#039;idTarget_FadeEntity&#039;&#039;, &#039;&#039;idTarget_FadeSoundClass&#039;&#039;, &#039;&#039;idTarget_Give&#039;&#039;, &#039;&#039;idTarget_LightFadeIn&#039;&#039;, &#039;&#039;idTarget_LightFadeOut&#039;&#039;, &#039;&#039;idTarget_PostScriptEvent&#039;&#039;, &#039;&#039;idTarget_Remove&#039;&#039;, &#039;&#039;idTarget_RemoveWeapons&#039;&#039;, &#039;&#039;idTarget_SessionCommand&#039;&#039;, &#039;&#039;idTarget_SetFov&#039;&#039;, &#039;&#039;idTarget_SetGlobalShaderTime&#039;&#039;, &#039;&#039;idTarget_SetInfluence&#039;&#039;, &#039;&#039;idTarget_SetKeyVal&#039;&#039;, &#039;&#039;idTarget_SetModel&#039;&#039;, &#039;&#039;idTarget_SetShaderParm&#039;&#039;, &#039;&#039;idTarget_SetShaderTime&#039;&#039;, &#039;&#039;idTarget_Show&#039;&#039;, &#039;&#039;idTarget_WaitForButton&#039;&#039;, &#039;&#039;idTrigger_Count&#039;&#039;, &#039;&#039;idTrigger_EntityName&#039;&#039;, &#039;&#039;idTrigger_Fade&#039;&#039;, &#039;&#039;idTrigger_Hurt&#039;&#039;, &#039;&#039;idTrigger_Multi&#039;&#039;, &#039;&#039;idTrigger_Timer&#039;&#039;, &#039;&#039;idTrigger_Touch&#039;&#039;, &#039;&#039;idVacuumSeparatorEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateContacts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Activate objects sitting on this object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateTargets&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Causes this entity to activate all it&#039;s targets. Similar to how a trigger activates entities.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addDescendant&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addInvItem&#039;&#039;&#039;(entity inv_item); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the given item to the inventory. Depending on the type the passed entity will be removed from the game (as for loot items) or hidden.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addItemToInv&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the entity to the given entity&#039;s inventory. Depending on the type the entity will be removed from the game (as for loot items) or hidden. Example: $book-&amp;gt;addItemToInv($player1);&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Add a target to this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to add as target&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addToClip&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alert&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alertAI&#039;&#039;&#039;(string type, float amount, entity actor); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: alert type&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: alert amount&lt;br /&gt;
::&#039;&#039;actor&#039;&#039;: actor causing alert&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can take damage again.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDrop&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowHiddenMovement&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Normally, when hidden, monsters do not run physics. This enables physics when hidden.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowMovement&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoAvailable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Number of shots left in inventory&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoInClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToForward&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a forward vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToRight&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a right vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToUp&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an up vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDistance&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance that the anim travels. If the entity has multiple anims with animName, the distance may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animDistance.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDone&#039;&#039;&#039;(float channel, float blendOutFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the animation playing on the given channel is completed considering a number of blend frames.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animIsPaused&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Return whether the given anim channel is paused&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animLength&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the anim in seconds. If the entity has multiple anims with animName, length may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animLength.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animState&#039;&#039;&#039;(float channel, string stateFunction, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a new animation state script function for the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animTurn&#039;&#039;&#039;(float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Enable/disable animation controlled turning.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Pass in the maximum # of degrees the animation turns. Use an amount of 0 to disable.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;applyImpulse&#039;&#039;&#039;(entity source, float bodyid, vector point, vector impulse); ====&lt;br /&gt;
&lt;br /&gt;
:Applies an impulse to the entity. Example: entity.applyImpulse($player1, 0, entity.getOrigin(), &#039;0 0 2&#039;);&lt;br /&gt;
::&#039;&#039;source&#039;&#039;: Pass $null_entity or the entity that applies the impulse&lt;br /&gt;
::&#039;&#039;bodyid&#039;&#039;: For articulated figures, ID of the body, 0 for the first (main) body. Otherwise use 0.&lt;br /&gt;
::&#039;&#039;point&#039;&#039;: Point on the body where the impulse is applied to&lt;br /&gt;
::&#039;&#039;impulse&#039;&#039;: Vector of the impulse&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;assert&#039;&#039;&#039;(float condition); ====&lt;br /&gt;
&lt;br /&gt;
:Breaks if the condition is zero. (Only works in debug builds.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attach&#039;&#039;&#039;(entity ent, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI. Entity spawnArgs checked for attachments are:  - &amp;quot;origin&amp;quot;, &amp;quot;angles&amp;quot;, and &amp;quot;joint&amp;quot;. These must be set prior to calling attach.&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attachToPos&#039;&#039;&#039;(entity ent, string position, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI, using a named attachment position&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackBegin&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;attackMelee&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the attack hit&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;attackMissile&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile fired&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bark&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Let the AI bark a certain sound.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: sound name, e.g. &#039;snd_warn_response&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeNonSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes the moveable non-solid for other entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;, &#039;&#039;idMoveable&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;becomeRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables the ragdoll if the entity has one&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bind&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindPosition&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position (but not orientation) relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToBody&#039;&#039;&#039;(entity master, float bodyID, float orientated); ====&lt;br /&gt;
&lt;br /&gt;
:Bind to AF body&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: entity to bind to&lt;br /&gt;
::&#039;&#039;bodyID&#039;&#039;: AF body ID to bind to&lt;br /&gt;
::&#039;&#039;orientated&#039;&#039;: binds the orientation as well as position, if set to 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToJoint&#039;&#039;&#039;(entity master, string boneName, float rotateWithMaster); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to a bone on another entity, such that when the master&#039;s bone moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
::&#039;&#039;boneName&#039;&#039;: the bone name&lt;br /&gt;
::&#039;&#039;rotateWithMaster&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bob&#039;&#039;&#039;(float speed, float phase, vector distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation back and forth along the given vector with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;burn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cacheSoundShader&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensure the specified sound shader is loaded by the system. Prevents cache misses when playing sound shaders.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to cache&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a function on an entity&#039;s script object. See also callGlobalFunction().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGlobalFunction&#039;&#039;&#039;(string functionName, entity other); ====&lt;br /&gt;
&lt;br /&gt;
:calls a global function and passes the other entity along as the first argument calls the function in a new thread, so it continues executing in the current thread right away (unlike entity.callFunction( &amp;quot;blah&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGui&#039;&#039;&#039;(float handle, string namedEvent); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a named event in a GUI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBecomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBeUsedBy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the entity can be used by the argument entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromJoint&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canPlant&#039;&#039;&#039;(vector traceStart, vector traceEnd, entity ignore, entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to enemy&#039;s position. For walking monsters, enemy should be near the floor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to entity&#039;s position. For walking monsters, entity should be near the floor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachPosition&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to specified position. For walking monsters, position should be near the floor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSee&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeEntity&#039;&#039;&#039;(entity target, float useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is a general version of idAI::canSee, that can be used by all entities. It doesn&#039;t regard FOV, it just performs a trace to check whether the target is occluded by world geometry. Is probably useful for stim/response as well Pass useLighting = true to take the lighting of the target entity into account. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold. The constant threshold value for useLighting is defined within the SDK in game/entity.h.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeExt&#039;&#039;&#039;(entity ent, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee that can optionally choose to use field of vision and lighting calculations.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If b_useLighting is 0 the entity will be visible in complete darkness. If it is 1, the entity will only be visible if there is light shining on it, but the slightest light is enought. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold instead.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeePositionExt&#039;&#039;&#039;(vector position, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSeeExt that tests a location rather than an entity. Note that any actor at the position may make it not seeable from a distance.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If 0 the entity will be visible in complete darkness&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canWater&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ceil&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the smallest integer that is greater than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeEntityRelation&#039;&#039;&#039;(entity ent, float relationChange); ====&lt;br /&gt;
&lt;br /&gt;
:This changes the current relation to an entity by adding the new amount.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvIcon&#039;&#039;&#039;(string name, string category, string icon); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory icon of the given item in the given category to &amp;lt;icon&amp;gt;.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvItemCount&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Decreases the inventory item stack count by amount. The item is addressed using the name and category of the item. These are usually defined on the inventory item entity (&amp;quot;inv_name&amp;quot;, &amp;quot;inv_category&amp;quot;)  Amount can be both negative and positive.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvLightgemModifier&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the lightgem modifier value of the given item. Valid arguments are between 0 and 32 (which is the maximum lightgem value).&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;changeLootAmount&#039;&#039;&#039;(float type, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the loot amount of the given Type (e.g. GOODS) by &amp;lt;amount&amp;gt;.  The mission statisic for loot found gets changed too.  The new value of the changed type is returned (e.g. the new GOODS value if this has been changed).  Note: The LOOT_TOTAL type can&#039;t be changed and 0 is returned.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: can be negative&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponName&#039;&#039;&#039;(string weaponName, string displayName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the display name of the given weapon item to something different. Pass an empty string to reset the display name to the definition as found in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponProjectile&#039;&#039;&#039;(string weaponName, string projectileDefName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the projectile entityDef name of the given weapon (e.g. &amp;quot;broadhead&amp;quot;) to the specified entityDef (e.g. &amp;quot;atdm:projectile_broadhead&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;chargeAttack&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAAS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAbsence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:description missing&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensures that the animation exists and causes an error if it doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;chooseAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Chooses a random anim and returns the name. Useful for doing move tests on anims.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMapEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearAllJoints&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on all joints.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearController&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Need separate clearController because scripting doesn&#039;t like passing in $null_entity? (greebo: one could remove this function and set the argument type of setController to &#039;E&#039;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the enemy entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearFlyOffset&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at to the value set in the def file.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearJoint&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on the specified joint.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearMouseDeadTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearPersistantArgs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears data that persists between maps.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearSignal&#039;&#039;&#039;(float signalNum); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the callback function on the specified signal.&lt;br /&gt;
::&#039;&#039;signalNum&#039;&#039;: signal number&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearSignalThread&#039;&#039;&#039;(float signalNum, entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the script callback function set for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;clipSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Close&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the frobmover, regardless of its previous state. Mover must be open, otherwise nothing happens.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;closePortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestEnemyToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the enemy closest to the given location.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Used for determining tactile alert targets&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemyOfEntity&#039;&#039;&#039;(entity team_mate); ====&lt;br /&gt;
&lt;br /&gt;
:Finds another character&#039;s closest reachable enemy&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copyBind&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:copy bind information of other to this entity (i.e., bind this entity to the same entity that other is bound to)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copySpawnArgs&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:copies the spawn args from an entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;cos&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cosine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissile&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile created&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissileFromDef&#039;&#039;&#039;(string defName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;createOverlay&#039;&#039;&#039;(string guiFile, float layer); ====&lt;br /&gt;
&lt;br /&gt;
:Creates a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;CreateTimer&#039;&#039;&#039;(float stimId, float hour, float minutes, float seconds, float milliseconds); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;CrossProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cross product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cullAll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cull (remove from world) all entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;Seed&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;customDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;damage&#039;&#039;&#039;(entity inflictor, entity attacker, vector dir, string damageDefName, float damageScale); ====&lt;br /&gt;
&lt;br /&gt;
:Deals damage to this entity (gets translated into the idEntity::Damage() method within the SDK).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage (maybe a projectile)&lt;br /&gt;
::&#039;&#039;attacker&#039;&#039;: the &amp;quot;parent&amp;quot; entity of the inflictor, the one that is responsible for the inflictor (can be the same)&lt;br /&gt;
::&#039;&#039;dir&#039;&#039;: the direction the attack is coming from.&lt;br /&gt;
::&#039;&#039;damageDefName&#039;&#039;: the name of the damage entityDef to know what damage is being dealt to &amp;lt;self&amp;gt; (e.g. &amp;quot;damage_lava&amp;quot;)&lt;br /&gt;
::&#039;&#039;damageScale&#039;&#039;: the scale of the damage (pass 1.0 as default, this should be ok).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dampenSound&#039;&#039;&#039;(float dampen); ====&lt;br /&gt;
&lt;br /&gt;
:Toggle whether the shattering sound is dampened on the window, e.g., when covered by moss.&lt;br /&gt;
::&#039;&#039;dampen&#039;&#039;: 1 = dampened, 0 = not dampened&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idBrittleFracture&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;deathMenu&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debug_tdm_material&#039;&#039;&#039;(string file); ====&lt;br /&gt;
&lt;br /&gt;
:For temporary debuging purposes only. Should be removed eventually.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugArrow&#039;&#039;&#039;(vector color, vector start, vector end, float size, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugBounds&#039;&#039;&#039;(vector color, vector mins, vector maxs, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugCircle&#039;&#039;&#039;(vector color, vector origin, vector dir, float radius, float numSteps, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugLine&#039;&#039;&#039;(vector color, vector start, vector end, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover decelerates.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the deceleration time. Set this deceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a deceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;destroyOverlay&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Destroys a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;directDamage&#039;&#039;&#039;(entity damageTarget, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;Seed&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;, &#039;&#039;idTrigger&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAnimchannel&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Used to disable a certain animchannel (for example if the ai is dead)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables eye focus.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:disables leg IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables pain animations.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:disables walk IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Lowers and disables the player weapon.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to a point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;DotProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the dot product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;drawText&#039;&#039;&#039;(string text, vector origin, float scale, vector color, float align, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:text drawing for debugging. lifetime of 0 == 1 frame.&lt;br /&gt;
::&#039;&#039;align&#039;&#039;: 0 = left, 1 = center, 2 = right&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given attachment name.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropTorch&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ejectBrass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitParticle&#039;&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle); ====&lt;br /&gt;
&lt;br /&gt;
:Start a particle effect in the world without using an entity emitter. Will emit one quad per particle stage when first called with sys.getTime() as the start time. Designed to be called once per frame with the same startTime each call to achieve a normal particle effect, or on demand with sys.getTime() as the startTime for finer grained control, 1 quad at a time. Returns True (1) if there are more particles to be emitted from the stage, False (0) if the stage has released all its quads.&lt;br /&gt;
::&#039;&#039;particle&#039;&#039;: String: name of particle effect.&lt;br /&gt;
::&#039;&#039;startTime&#039;&#039;: Game seconds since map start: use sys.getTime() for the first call unless you want to back-date the particle so that it starts part way through its cycle.&lt;br /&gt;
::&#039;&#039;diversity&#039;&#039;: Randomizer value between 0 and 1. All particles with the same diversity will have the same path and rotation. Use sys.random(1) for a random path.&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: Origin of the particle effect.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Axis for the particle effect. Use $&amp;lt;entityname&amp;gt;.getAngles() to align the particle to an entity. use &#039;0 0 0&#039; for an upright (world-aligned) particle effect.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emitterAddModel&#039;&#039;&#039;(string modelName, vector modelOffset); ====&lt;br /&gt;
&lt;br /&gt;
:Adds a new particle (or regular, if you wish) model to the emitter, located at modelOffset units away from the emitter&#039;s origin.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idFuncEmitter&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitterGetNumModels&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of models/particles this emitter has. Always &amp;gt;= 1.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idFuncEmitter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emptyHand&#039;&#039;&#039;(string hand); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;Seed&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;, &#039;&#039;idTrigger&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAnim&#039;&#039;&#039;(float channel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Enables animation on the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableDamage&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enable/disable damage&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMoveable&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables eye focus.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:enables leg IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables pain animations.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables walk IK&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the player weapon.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;endState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Ends the current state with the given name, returns TRUE if more than one state is remaining.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;endZoom&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Starts the zoom out event, which performs a gradual transition back to the default FOV. May be called during a transition as well to intercept a pending zoom in transition.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyInCombatCone&#039;&#039;&#039;(entity combatNode, float use_current_enemy_location); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyPositionValid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange2D&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;entityInAttackCone&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;error&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues an error.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;exitTeleporter&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;extinguishLights&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Extinguishes all lights (i.e. the &amp;lt;self&amp;gt; entity plus all bound lights)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;facingIdeal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeIn&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades towards the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeInLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light on over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOut&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades from the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOutLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light out over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeSound&#039;&#039;&#039;(float channel, float newLevel, float fadeTime); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the sound on this entity to a new level over a period of time.  Use SND_CHANNEL_ANY for all currently playing sounds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeTo&#039;&#039;&#039;(vector color, float alpha, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades to the given color up to the given alpha over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeToLight&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the light to the given color over a given time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findActorsInBounds&#039;&#039;&#039;(vector mins, vector maxs); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an entity within the bounds specified&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemy&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in PVS&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyAI&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy monster in PVS&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyInCombatNodes&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in attack cones&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findFriendlyAI&#039;&#039;&#039;(float team); ====&lt;br /&gt;
&lt;br /&gt;
:Use this to find a visible AI friendly to ourselves. It basically iterates over all active entities in the map and looks for friendly actors. The pythagorean distance is taken to evaluate the distance.  Don&#039;t call this every frame, this might get expensive in larger maps. Returns the nearest visible actor entity or the $null_entity, if none was found.&lt;br /&gt;
::&#039;&#039;team&#039;&#039;: used to constrain the search to a given team. Set this to -1 to let the code ignore this argument&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishAction&#039;&#039;&#039;(string action); ====&lt;br /&gt;
&lt;br /&gt;
:Finishes the given wait action.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishChannelAction&#039;&#039;&#039;(float channel, string animname); ====&lt;br /&gt;
&lt;br /&gt;
:Overloaded finishAction function for setting the waitstate on each channel separately&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;fireMissileAtTarget&#039;&#039;&#039;(string jointname, string targetname); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a missile at entity specified by &#039;attack_target&#039;.  returns projectile fired&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;firstPerson&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns view control to the player entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;flashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;flee&#039;&#039;&#039;(entity entToFleeFrom, float algorithm, float distanceOption); ====&lt;br /&gt;
&lt;br /&gt;
:Flee from the given entity. Pass the escape point lookup algorithm (e.g. EP_FIND_GUARDED) and the distanceOption (e.g. EP_DIST_NEAREST) to specify how the best escape point can be found. Refer to the tdm_defs.script file to see all the constants.  When algorithm is set to EP_FIND_AAS_AREA_FAR_FROM_THREAT, the distanceOption is interpreted as minimum threat distance. Returns FALSE if no escape point could be found.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;floor&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the largest integer that is less than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;footstep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;foundBody&#039;&#039;&#039;(entity body); ====&lt;br /&gt;
&lt;br /&gt;
:Objective callback for when an AI finds a body.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;frob&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Frobs the entity (i.e. simulates a frob action performed by the player). Returns TRUE if the entity is frobable, FALSE otherwise.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobHilight&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:ishtvan: Tries to make the entity frobhilight or not&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobRidable&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Called when a player directly mounts or dismounts a ridable AI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Gas_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getActualStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAcuity&#039;&#039;&#039;(string type); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAlertActor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the actor that alerted the AI in this frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAlertLevelOfOtherAI&#039;&#039;&#039;(entity otherEntity); ====&lt;br /&gt;
&lt;br /&gt;
:This event gets the alert number of another AI (AI_AlertLevel variable value) Returns the alert number of the other AI, 0.0 if its not an AI or is NULL&lt;br /&gt;
::&#039;&#039;otherEntity&#039;&#039;: the other AI entity who&#039;s alert number is being queried&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current orientation of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the angular velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getAnimState&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current animation state script function used for the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity with the given attachment name Will be NULL if the name is invalid or if the entity no longer exists&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity at the given index. Will be NULL if the index is invalid or the entity no longer exists&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttacker&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the attacking entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAttackFlag&#039;&#039;&#039;(float combatType); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the given attack flag is activated.&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAudThresh&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAxialDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindChild&#039;&#039;&#039;(float ind); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the ind_th bind child of this entity or NULL if index is invalid. NOTE: indices start at zero&lt;br /&gt;
::&#039;&#039;ind&#039;&#039;: child index&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindMaster&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity&#039;s bindmaster&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBlendFrames&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBoolKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the boolean value of a specific spawn arg, defaulting to false.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getButtons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the button state from the current user command.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getClipMask&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getClosestHiddenTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds the closest targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getColor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCombatNode&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getContents&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvCategory&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory category.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvIcon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the icon of the currently highlighted inventory item.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCurInvItemEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently highlighted inventory item entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemId&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_item_id&amp;quot;). Most items will return an empty string, unless the &amp;quot;inv_item_id&amp;quot; is set on purpose.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_name&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentMissionNum&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the current mission (0-based, the first mission has number 0).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurrentWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player is currently holding.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentYaw&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurWeaponName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current weapon, as defined by &amp;quot;inv_weapon_name&amp;quot; in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getcvar&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for a cvar.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getDifficultyLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 0 (Easy), 1 (Medium) or 2 (Hard), depending on the difficulty level of the current mission.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getDifficultyName&#039;&#039;&#039;(float difficultyLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the (translated) name of the difficulty level passed as the argument.&lt;br /&gt;
::&#039;&#039;difficultyLevel&#039;&#039;: 0 (Easy), 1 (Medium), 2 (Hard)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated door entity for this handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobDoorHandle&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoorhandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the handle entity of this door. Can return NULL (== $null_entity)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobDoor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getDragged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently dragged body. Returns $null_entity if the body is shouldered, the player has nothing in his hands, or he has a non-AF entity in his hands. See also getShouldered(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntity&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity with the specified name.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntityKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the entity specified by the spawn arg.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get eye position of the player and the AI&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalAngVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFloatKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the floating point value of a specific spawn arg, defaulting to 0.0f.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the current FOV of the player. You can modify the current FOV with startZoom() and endZoom().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;GetFractionalPosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a fraction between 0.00 (closed) and 1.00 (open).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFrameTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the length of time between game frames.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getFrobbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently frobhilighted entity. This includes entities the player has in his hands. Sets &amp;quot;frob only used by&amp;quot; mode&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getGrabbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently entity in the players hands. Returns $null_entity if the player has nothing in his hands Dragging or shouldering a body counts as grabbing it. See also getDragged(), getShouldered(), getFrobbed().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGui&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the file currently loaded by a GUI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiFloat&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiInt&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGuiString&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getHead&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity used for the character&#039;s head, if it has one.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getHealth&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current health.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getIdealWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getImmobilization&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIncidenceAngle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIntKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the integer value of a specific spawn arg, defaulting to 0.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getInventoryOverlay&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the default inventory overlay for the player. All other entities will return an invalid value.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointAngle&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the angular orientation of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getJointHandle&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:Looks up the number of the specified joint. Returns INVALID_JOINT if the joint is not found.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointPos&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJumpVelocity&#039;&#039;&#039;(vector pos, float speed, float max_jump_height); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the value of a specific spawn arg, defaulting to &#039;&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightInPVS&#039;&#039;&#039;(float falloff, float scaling); ====&lt;br /&gt;
&lt;br /&gt;
:Computes the sum of all light in the PVS of the entity you call this on, and returns a vector with the sum.&lt;br /&gt;
::&#039;&#039;falloff&#039;&#039;: 0: no falloff with distance  0.5: sqrt(linear) falloff	(dist 100 =&amp;gt; 1/10)  1: linear falloff			(dist 100 =&amp;gt; 1/100)  2: square falloff			(dist 100 =&amp;gt; 1/10000) &lt;br /&gt;
::&#039;&#039;scaling&#039;&#039;: factor to scale the distance, can be used to lower/raise distance factor  after the linear or square scaling has been used good looking values are approx: sqrt(linear): 0.01, linear: 0.1, square 1.0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get level (intensity) of a light, &amp;lt;= 0.0 indicates it is off&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the light origin (independent of its visual model)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightParm&#039;&#039;&#039;(float parmNum); ====&lt;br /&gt;
&lt;br /&gt;
:Gets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current linear velocity of this entity. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the linear velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getLocation&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the idLocation entity corresponding to the entity&#039;s current location. This was player-specific before, but is now available to all entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated lock of this handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobLockHandle&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLootAmount&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the amount of loot for the given type (e.g. LOOT_GOODS). Pass LOOT_TOTAL to return the sum of all loot types.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY, LOOT_TOTAL&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getMainAmbientLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity of the main ambient light.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMass&#039;&#039;&#039;(float body); ====&lt;br /&gt;
&lt;br /&gt;
:Gets mass of a body for an entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMaxs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the maximum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActPhase&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action phase (holding,recovering,etc).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action state (attacking/defending).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action type (overhead,thrust,etc.).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastActTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type of the last attack to hit this actor. Defaults to MELEETYPE_UNBLOCKABLE if we were not hit before.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastHitByType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the game time that the most recent melee action ended (in ms)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeResult&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the result of the last melee action Follows MELEERESULT_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMins&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the minimum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMissionStatistic&#039;&#039;&#039;(string statisticName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns current mission statistic.&lt;br /&gt;
::&#039;&#039;statisticName&#039;&#039;: Can be one of (case insensitive): 	gamePlayTime: gameplay time in seconds 	damageDealt: damage dealt to enemies 	damageReceived: damage received by player 	healthReceived: health received by player 	pocketsPicked: pockets picked by player 	foundLoot: loot found by player 	missionLoot: total loot available in mission 	totalTimePlayerSeen: total time the player was seen by enemies in seconds. Updates only when AI lose sight of player 	numberTimesPlayerSeen: number of times player was seen by enemies 	numberTimesAISuspicious: number of times AI was &#039;observant&#039; or &#039;suspicious&#039;. A single AI passing through both alert levels will add 2 to the score. 	numberTimesAISearched: number of times AI was &#039;investigating&#039; or &#039;searching&#039;. A single AI passing through both alert levels will add 2 to the score. 	sightingScore: sighting score (number of times player was seen * weight) 	stealthScore: stealth score (sighting score + alerts * weights) 	killedByPlayer: number of enemies killed by player 	knockedOutByPlayer: number of enemies knocked out by player 	bodiesFound: number of times enemies have spotted a body &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the results of the last mouse gesture in enum form. (see the definition for MOUSEDIR_* for which numbers correspond to which directions)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the movement relative to the player&#039;s view angles from the current user command. vector_x = forward, vector_y = right, vector_z = up&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getMoveAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the player-requested movement anim for a player controlled AI vehicle&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveSpeed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the movement speed.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the movement time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current movetype&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextEntity&#039;&#039;&#039;(string key, string value, entity lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Discover all entities in the map. Returns $null_entity when no more found.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: Optional string: prefix for spawnarg key match. E.g. &amp;quot;target&amp;quot; will match &amp;quot;target&amp;quot;, &amp;quot;target1&amp;quot; etc.&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: Optional string: spawnarg value to match. Can be used independently of &#039;&#039;key&#039;&#039;. If &#039;&#039;key&#039;&#039; is not set, all spawnargs will be checked for the value.&lt;br /&gt;
::&#039;&#039;lastMatch&#039;&#039;: Last match: search will start after this entity. Use $null_entity or pass an uninitialized entity variable to start a new search.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the next hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextIdleAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the name of the next idle anim to be played on this AI (used by AnimState scripts).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextImmobilization&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the next inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextKey&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Searches for the name of a spawn arg that matches the prefix.  For example, passing in &amp;quot;attack_target&amp;quot; matches &amp;quot;attack_target1&amp;quot;, &amp;quot;attack_targetx&amp;quot;, &amp;quot;attack_target_enemy&amp;quot;,  etc. The returned string is the name of the key which can then be passed into functions like getKey() to lookup the value of that spawn arg.  This is useful for when you have multiple values to look up, like when you target multiple objects.  To find the next matching key, pass in the previous result and the next key returned will be the first one that matches after the previous result. Pass in &amp;quot;&amp;quot; to get the first match. Passing in a non-existent key is the same as passing in &amp;quot;&amp;quot;. Returns &amp;quot;&amp;quot; when no  more keys match.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextTurnHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Get the next hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumAttachments&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Return the number of attachments on an AI. Used to iterate through the attachments if desired.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumBodies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bodies in the AF. If the AF physics pointer is NULL, it returns 0.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumMeleeWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of melee weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_melee&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumRangedWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of ranged weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_ranged&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveState&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of the objective with the number ObjNum.  State is one of the following: OBJ_INCOMPLETE = 0, OBJ_COMPLETE = 1, OBJ_INVALID = 2, OBJ_FAILED = 3&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getObservationPosition&#039;&#039;&#039;(vector targetPoint, float visualAcuityZeroToOne); ====&lt;br /&gt;
&lt;br /&gt;
:This event is used to get a position that the AI can move to observe a  given position.  It is useful for looking at hiding spots that can&#039;t be reached, and performing other investigation functions.  Returns a world position from which the observation can take place. Returns the current AI origin if no such point is found.  @sideEffect This uses the AI_DEST_UNREACHABLE flag variable  to indicate if a point was found. It will be true if none was found, false if one was found.&lt;br /&gt;
::&#039;&#039;targetPoint&#039;&#039;: the world position to be observed&lt;br /&gt;
::&#039;&#039;visualAcuityZeroToOne&#039;&#039;: the visual acuity of the AI on a scale of 0.0 to 1.0 where 0.0 is blind and 1.0 is perfect vision.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getObstacle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the obstacle in the character&#039;s path&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current position of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getOwner&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the owning entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPainAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the pain animation.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPersistantFloat&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPersistantString&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getPersistantVector&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortAISoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortalHandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the portal handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPortalEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortPlayerSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss  scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrevInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the previous inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPreviousWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player was previously holding.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjectileState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state of the projectile. States are defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idProjectile&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjMass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getRadius&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the light radius.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getRandomTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds a random targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getReachableEntityPosition&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the entity within the AAS if possible, otherwise just the entity position.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelation&#039;&#039;&#039;(float team1, float team2); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelationEnt&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetResponseEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity which should take the response. Some entities like AI heads are not responding themselves to stims, but relay it to another entity (i.e. the bodies they&#039;re attached to).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getShader&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the shader name used by the light.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getShaderParm&#039;&#039;&#039;(float parm); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getShouldered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently shouldered body, otherwise $null_entity. See also getDragged(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the size of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSndDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai hearing of sound &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundLoss&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPortalEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundVolume&#039;&#039;&#039;(string soundName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the volume of the sound to play.&lt;br /&gt;
::&#039;&#039;soundName&#039;&#039;: the name of the sound&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getSpotLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the spotlight used by the camera. Returns null_entity if none is used.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idSecurityCamera&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSurfNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getSurfType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTactEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai sense of touch&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTalkTarget&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTarget&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the requested target entity.&lt;br /&gt;
::&#039;&#039;num&#039;&#039;: The target number. Starts at 0.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTDMVersion&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the current TDM version as integer. The value will be 108 for v1.08, 109 for v1.09 and 200 for v2.00 etc.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTeam&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current team number.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTicsPerSecond&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the number of game frames per second.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current game time in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceBody&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the body part of the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceEndPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position the trace stopped due to a collision with solid geometry during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTraceEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTraceFraction&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed during the last call to trace or tracePoint.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceJoint&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the skeletal joint closest to the location on the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normal of the hit plane during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnDelta&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTurnHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:* Get the hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnRate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the rate the character turns.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVectorKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the vector value of a specific spawn arg, defaulting to &#039;0 0 0&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getViewAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the player view angles.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantLoc&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVisDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns position of the last visual alert.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWeaponEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity for the player&#039;s weapon&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWorldModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity that controls the world model&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getWorldOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current world-space position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;gib&#039;&#039;&#039;(string damageDefName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Gibbable&#039;&#039;, &#039;&#039;idMoveableItem&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;giveHealthPool&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:This increases/decreases the healthpool of the player by the given amount. The healthpool is gradually decreased over time, healing (damaging?) the player.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;handleMissionEvent&#039;&#039;&#039;(entity objEnt, float eventType, string argument); ====&lt;br /&gt;
&lt;br /&gt;
:Generic interface for passing on mission events from scripts to the SDK. Available since TDM 1.02&lt;br /&gt;
::&#039;&#039;objEnt&#039;&#039;: the entity that triggered this event (e.g. a readable)&lt;br /&gt;
::&#039;&#039;eventType&#039;&#039;: a numeric identifier (enumerated both in MissionData.h and tdm_defs.script) specifying the type of event&lt;br /&gt;
::&#039;&#039;argument&#039;&#039;: an optional string parameter, eventtype-specific.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true when an entity has a specific animation.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasEnemies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the actor has one or more enemies.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:checks if an entity&#039;s script object has a specific function&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasSeenEvidence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns 1 when the AI has seen evidence of intruders before (an enemy, a body...)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;heal&#039;&#039;&#039;(string healDefName, float healScale); ====&lt;br /&gt;
&lt;br /&gt;
:Heals the entity this is called on using the specified healing entityDef. Returns 1 if the entity could be healed, 0 otherwise (if the entity is already at full health, for ex.)&lt;br /&gt;
::&#039;&#039;healDefName&#039;&#039;: the name of the entityDef containing the healing information (e.g. &amp;quot;heal_potion&amp;quot;)&lt;br /&gt;
::&#039;&#039;healScale&#039;&#039;: the scaling value to be applied to the healAmount found in the healEntityDef&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;heldEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity currently being held, or $null_entity if the player&#039;s hands are empty.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hide&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity invisible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hideByLODBias&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;holdEntity&#039;&#039;&#039;(entity entity); ====&lt;br /&gt;
&lt;br /&gt;
:Forces the player to hold an entity (e.g. puts it into the grabber). Drops whatever is in the player&#039;s hands if $null_entity is passed to it. Returns 1 if successful, 0 if not.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;idleAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given idle animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ignoreDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can no longer take damage.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inAnimState&#039;&#039;&#039;(float channel, string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given animation state script function is currently used for the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;influenceActive&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if an influence is active&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inPVS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns non-zero if this entity is in PVS. For lights, it will return true when the light&#039;s bounding box is in PVS, even though the light may not actually be in PVS. (an unmoved shadowcasting light may not be visible to PVS areas its bounding box intersects with)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isAtRest&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if object is not moving&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMoveable&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isClient&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:networking - checks for client&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isDroppable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether an item may be dropped from the inventory&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEnemy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is an enemy.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEntityHidden&#039;&#039;&#039;(entity ent, float f_sightThreshold); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee, using FOV, distance and lighting.&lt;br /&gt;
::&#039;&#039;f_sightThreshold&#039;&#039;: goes from 0.0 (entity visible in complete darkness) to 1.0 (entity only visible if completely lit up).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFriend&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is a friend.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFrobable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHidden&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if the entity&#039;s model is invisible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHilighted&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if entity is currently frobhilighted.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInLiquid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the entity is in or touching a liquid.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInvisible&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsLocked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is currently locked.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is moving&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMultiplayer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if it&#039;s a multiplayer game&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isNeutral&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is neutral.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is open, which is basically the same as &amp;quot;not closed&amp;quot;. A mover is considered closed when it is at its close position.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsPickable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if this frobmover is pickable.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isPlayerResponsibleForDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player was responsible for the AI&#039;s caller&#039;s death.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is rotating&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isType&#039;&#039;&#039;(string spawnclass); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity is of the given type.&lt;br /&gt;
::&#039;&#039;spawnclass&#039;&#039;: spawn class name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isVineFriendly&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Vine-arrow event&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CProjectileResult&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kickObstacles&#039;&#039;&#039;(entity kickEnt, float force); ====&lt;br /&gt;
&lt;br /&gt;
:Kicks any obstacle in the character&#039;s path.&lt;br /&gt;
::&#039;&#039;kickEnt&#039;&#039;: pass in $null_entity if you don&#039;t have a specific entity to kick&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kill&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Kills the monster.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;killthread&#039;&#039;&#039;(string threadName); ====&lt;br /&gt;
&lt;br /&gt;
:Kills all threads with the specified name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;KO_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: is the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launch&#039;&#039;&#039;(vector start, vector dir, vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Launches the projectile from &amp;lt;start&amp;gt; in direction &amp;lt;dir&amp;gt; with the given &amp;lt;velocity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idProjectile&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;launchMissile&#039;&#039;&#039;(vector origin, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the projectile entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchMissiles&#039;&#039;&#039;(string projectilename, string sound, string launchbone, string targetbone, float numshots, float framedelay); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a projectile.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimated&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchProjectiles&#039;&#039;&#039;(float num_projectiles, float spread, float fuseOffset, float launchPower, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;, &#039;&#039;idTestModel&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;loadExternalData&#039;&#039;&#039;(string declFile, string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Load an external xdata declaration.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;locateEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Updates the last known position of the enemy independent from whether or not the enemy is visible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Lock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Locks the mover. Calls to Open() will not succeed after this call. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;log&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the log of the given argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;logString&#039;&#039;&#039;(float logClass, float logType, string output); ====&lt;br /&gt;
&lt;br /&gt;
:This is the script counterpart to DM_LOG&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAt&#039;&#039;&#039;(entity focusEntity, float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward an entity for a period of time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtAngles&#039;&#039;&#039;(float yawAngleClockwise, float pitchAngleUp, float rollAngle, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:A look at event that just looks at a set of angles relative  to the current body facing of the AI. This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but it looks at the specified angles from the current body facing of the AI.&lt;br /&gt;
::&#039;&#039;yawAngleClockwise&#039;&#039;: Negative angles are to the left of  the AIs body and positive angles are to the right.&lt;br /&gt;
::&#039;&#039;pitchAngleUp&#039;&#039;: Negative values are down and positive values are up  where down and up are defined by the body axis.&lt;br /&gt;
::&#039;&#039;rollAngle&#039;&#039;: This is currently unused and does nothing.&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: The duration to look in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtEnemy&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward the current enemy for a period of time.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtPosition&#039;&#039;&#039;(vector lookAtWorldPosition, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but instead of looking at an entity, it looks at a position in worldspace.  That is, it turns the head of the AI to look at the position.&lt;br /&gt;
::&#039;&#039;lookAtWorldPosition&#039;&#039;: position in space to look at&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: duration to look in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;lookupReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current replacement animation for &amp;quot;anim&amp;quot;. Returns empty if no replacement anim &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;markUsed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the combat node if &amp;quot;use_once&amp;quot; is set on the entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idCombatNode&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;melee&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the animation for the melee action has finished.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionHeld&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action reaches the &amp;quot;hold&amp;quot; point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionReleased&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action is released from the hold point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeAttackStarted&#039;&#039;&#039;(float attType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee attack Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeAttackToJoint&#039;&#039;&#039;(string joint, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeBestParry&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type integer of the best parry given the enemy attacks at the time If no attacking enemy is found, returns default of MELEETYPE_RL Follows MELEETYPE_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;meleeNameForNum&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Converts a melee type integer to a string name suffix Used for finding the right animation for a given type, etc. Possible names are, in order: &amp;quot;Over, LR, RL, Thrust, General&amp;quot; Where general blocks all attacks types except unblockable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeParryStarted&#039;&#039;&#039;(float parType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee parry Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionFailed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionSuccess&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;mouseGestureFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player is not currently doing a mouse gesture.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;move&#039;&#039;&#039;(float angle, float distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation with the given distance in the given yaw direction. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveOutOfRange&#039;&#039;&#039;(entity ent, float range); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the moving.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;moveStatus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveTo&#039;&#039;&#039;(entity targetEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to the position of an entity. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToAttackPosition&#039;&#039;&#039;(entity ent, string attack_anim); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCover&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCoverFrom&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemyHeight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to an absolute position. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;music&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Starts playing background music.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;muzzleFlash&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netEndReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;nextEnemy&#039;&#039;&#039;(entity lastEnemy); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the next enemy the actor has acquired.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;nextWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadows&#039;&#039;&#039;(float noShadows); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false, turning shadowcasting on or off for this entity.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadowsDelayed&#039;&#039;&#039;(float noShadows, float delay); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false after delay in ms, turning shadows cast by this entity on or off.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
::&#039;&#039;delay&#039;&#039;: delay in ms&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numBindChildren&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bound entities lower down in the bind chain than this entity, but be sure to give it the topmost bindmaster&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numSmokeEmitters&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the # of emitters defined by &#039;smokeParticleSystem&#039; in the entitydef&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numTargets&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of entities this entity has targeted.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveCompUnlatch&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective component that has latched into a state&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveUnlatch&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective that has latched into a state&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Off&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity off.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idSound&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;offsetRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;On&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity on.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idSound&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;onSignal&#039;&#039;&#039;(float signalNum, entity ent, string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a script callback function for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Open&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the frobmover, regardless of its previous state. The mover will not move when it&#039;s locked. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;, &#039;&#039;CFrobLock&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;OpenDoor&#039;&#039;&#039;(float master); ====&lt;br /&gt;
&lt;br /&gt;
:The OpenDoor method is necessary to give the FrobDoorHandles a  &amp;quot;low level&amp;quot; open routine. The CFrobDoor::Open() call is re-routed to the FrobDoorHandle::Tap() method, so there must be a way to actually let the door open. Which is what this method does.  Note: Shouldn&#039;t be called directly by scripters, call handle-&amp;gt;Tap() instead. Unless you know what you&#039;re doing.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobDoor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;openPortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;, &#039;&#039;idMover_Binary&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Operate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to operate this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobButton&#039;&#039;, &#039;&#039;CFrobLever&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;overrideAnim&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the animation currently playing on the given channel and syncs the animation with the animation of the nearest animating channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pause&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the current thread.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseAnim&#039;&#039;&#039;(float channel, float bPause); ====&lt;br /&gt;
&lt;br /&gt;
:Pause all animations playing on the given channel. NOTE: Can also be used used by idWeapons&lt;br /&gt;
::&#039;&#039;bPause&#039;&#039;: true = pause, false = unpause&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the game. This should only be called for threads that are explicitly maintained by a special SDK method, because ordinary threads won&#039;t get executed during g_stopTime == true. Note: This is used by the objective GUI threads. Note: Must be called on the player entity, not the sys entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;performRelight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Deal with doused lights.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAndLipSync&#039;&#039;&#039;(string soundName, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Play the given sound, using the given lipsync animation. The lipsync animation should just be a simple non-loopable animation of the mouth opening in a linear fashion. The code will select individual frames from this to construct a simple lipsyncing effect which is in time with the sound.  Returns the length of the played sound in seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Do not use, this is part of TDM&#039;s internal mechanics. Use playCustomAnim() on AI.in scripts instead of this. Plays the given animation on the given channel. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCustomAnim&#039;&#039;&#039;(string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given animation on legs and torso. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCycle&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Continuously repeats the given animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;playStartSound&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pointInLiquid&#039;&#039;&#039;(vector point, entity ignoreEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if a point is in a liquid, returns 1 if this is the case.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pow&#039;&#039;&#039;(float x, float y); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the power of x to y.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;predictEnemyPos&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to predict the player&#039;s movement based on the AAS and his direction of movement.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preventPain&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Prevents any pain animation from being played for the given time in seconds.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: time in seconds&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;print&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given string to the console.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;println&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given line to the console.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processBlindStim&#039;&#039;&#039;(entity stimSource, float skipVisibilityCheck); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processVisualStim&#039;&#039;&#039;(entity stimSource); ====&lt;br /&gt;
&lt;br /&gt;
:Use this call to let the AI react to a visual stim (coming from the source entity).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propagateSound&#039;&#039;&#039;(string soundName, float propVolMod, float msgTag); ====&lt;br /&gt;
&lt;br /&gt;
:Generates a propagated sound&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSound&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunctions on all entities propagate a sound directly without playing an audible sound&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSoundMod&#039;&#039;&#039;(string name, float volMod); ====&lt;br /&gt;
&lt;br /&gt;
:propagate a sound directly with a volume modifier&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;pushPointIntoAAS&#039;&#039;&#039;(vector post); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to push the point into a valid AAS area&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pushState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Pushes the state with the given name, current one is postponed.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamage&#039;&#039;&#039;(vector origin, entity inflictor, entity attacker, entity ignore, string damageDefName, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:damages entities within a radius defined by the damageDef.  inflictor is the entity  causing the damage and can be the same as the attacker (in the case   of projectiles, the projectile is the inflictor, while the attacker is the character  that fired the projectile).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage&lt;br /&gt;
::&#039;&#039;ignore&#039;&#039;: an entity to not cause damage to&lt;br /&gt;
::&#039;&#039;dmgPower&#039;&#039;: scales the damage (for cases where damage is dependent on time)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamageFromJoint&#039;&#039;&#039;(string jointname, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;random&#039;&#039;&#039;(float range); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random value X where 0 &amp;lt;= X &amp;lt; range.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomPath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;, &#039;&#039;idPathCorner&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomTarget&#039;&#039;&#039;(string ignoreName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random targeted entity. Pass in an entity name to skip that entity.&lt;br /&gt;
::&#039;&#039;ignoreName&#039;&#039;: the name of an entity to ignore&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;rangedThreatTo&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Could this entity threaten the given (target) entity from a distance?&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;readLightgemModifierFromWorldspawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToCoords&#039;&#039;&#039;(string attName, string joint, vector offset, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach. &lt;br /&gt;
::&#039;&#039;joint&#039;&#039;: the name of the joint to attach to&lt;br /&gt;
::&#039;&#039;offset&#039;&#039;: the translation offset from joint&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: a (pitch, yaw, roll) angle vector that defines the rotation  of the attachment relative to the joint&#039;s orientation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToPos&#039;&#039;&#039;(string attName, string position); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment to a named attachment position. Example: reAttachToPos( melee_weapon, right_hand_held )&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach.&lt;br /&gt;
::&#039;&#039;position&#039;&#039;: the new position we want to attach it to.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reloadTorchReplacementAnims&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:If actor has a torch, reload the torch&#039;s replacement anims.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;remove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the entity from the game. For AI, use kill() instead.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idClass&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeBinds&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes all attached entities from the game&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeInitialSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Subtracts the initial spline angles to maintain the initial orientation of the mover.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Removes a key from an object&#039;s spawnargs, so things like getNextKey() don&#039;t retrieve it.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to remove&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the replacement for the given &amp;quot;anim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Remove a target from this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to remove from the targets&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;replaceInvItem&#039;&#039;&#039;(entity oldItem, entity newItem); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the entity &amp;lt;oldItem&amp;gt; with &amp;lt;newItem&amp;gt; in the inventory, while keeping &amp;lt;oldItem&amp;gt;&#039;s inventory position intact.  Note: The position guarantee only applies if &amp;lt;oldItem&amp;gt; and newItem  share the same category. If the categories are different, the position of &amp;lt;newItem&amp;gt; is likely to be different than the one of &amp;lt;oldItem&amp;gt;.  Note that &amp;lt;oldItem&amp;gt; will be removed from the inventory.  If &amp;lt;newItem&amp;gt; is the $null_entity, &amp;lt;oldItem&amp;gt; is just removed and no replacement happens.  Returns 1 if the operation was successful, 0 otherwise.&lt;br /&gt;
::&#039;&#039;newItem&#039;&#039;: can be $null_entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResetTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetWeaponProjectile&#039;&#039;&#039;(string weaponName); ====&lt;br /&gt;
&lt;br /&gt;
:Reloads the original projectile def name from the weaponDef. Used to revert a change made by the event changeWeaponProjectile().&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetZoom&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cancels any pending zoom transitions and resets the FOV to normal.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reskinCollisionModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:For use after setSkin() on moveables and static models, if the CM needs to be refreshed to update surface properties after a skin change. CM will be regenerated from the original model file with the new skin.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;respawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Respawn&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idItem&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAdd&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAllow&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseIgnore&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:This functions must be called on the stim entity. It will add the response to the ignore list, so that subsequent stims, should not trigger the stim anymore.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseSetAction&#039;&#039;&#039;(float type, string action); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseTrigger&#039;&#039;&#039;(entity source, float stimType); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a response on this entity, without a stim (a stand-alone response, so to say)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restartPatrol&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;RestartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreAddedEnts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restorePosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns this entity to the position stored in the &amp;quot;origin&amp;quot; spawn arg. This is the position the entity was spawned in unless the &amp;quot;origin&amp;quot; key is changed. Note that there is no guarantee that the entity won&#039;t be stuck in another entity when moved, so care should be taken to make sure that isn&#039;t possible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idAnimated&#039;&#039;, &#039;&#039;idTestModel&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ropeRemovalCleanup&#039;&#039;&#039;(entity ropeEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Called when rope arrow ropes are removed, removes stale pointers on the player object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotate&#039;&#039;&#039;(vector angleSpeed); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation with the given angular speed. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateDownTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by decreasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateOnce&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the current angles plus the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateTo&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateUpTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by increasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveGame&#039;&#039;&#039;(string filename); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;say&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Multiplayer - Print this line on the network&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;scaleVine&#039;&#039;&#039;(float factor); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;selectWeapon&#039;&#039;&#039;(string weapon); ====&lt;br /&gt;
&lt;br /&gt;
:Selects the weapon the player is holding.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sessionCommand&#039;&#039;&#039;(string cmd); ====&lt;br /&gt;
&lt;br /&gt;
:Sends the sessioncommand to the game&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setActiveInventoryMapEnt&#039;&#039;&#039;(entity mapEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Notify the player about a new active map entity. This clears out any previously active maps.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAcuity&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertGracePeriod&#039;&#039;&#039;(float frac, float duration, float count); ====&lt;br /&gt;
&lt;br /&gt;
:This starts the alert grace period for an AI. Should be called in the same frame as the alert that pushes them into a higher state.&lt;br /&gt;
::&#039;&#039;frac&#039;&#039;: the fraction of the alert below which they should ignore alerts during the grace period.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: the duration of the period in seconds&lt;br /&gt;
::&#039;&#039;count&#039;&#039;: the number of alerts ignored above which the grace period is invalid&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertLevel&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the alert level (AI_AlertLevel). This should always be called instead of setting AI_AlertLevel directly.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current orientation of this entity (relative to bind parent if any)&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: the new orientation&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the angular velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAnimPrefix&#039;&#039;&#039;(string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a string which is placed in front of any animation names.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAttackFlag&#039;&#039;&#039;(float combatType, float enabled); ====&lt;br /&gt;
&lt;br /&gt;
:Activate or deactivate the given attack flag&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAudThresh&#039;&#039;&#039;(float val); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBlendFrames&#039;&#039;&#039;(float channel, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBoneMod&#039;&#039;&#039;(float allowBoneMod); ====&lt;br /&gt;
&lt;br /&gt;
:Enables or disables head looking (may be obsolete).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setCamera&#039;&#039;&#039;(entity cameraEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Turns over view control to the given camera entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setClipMask&#039;&#039;&#039;(float clipMask); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setColor&#039;&#039;&#039;(float parm0, float parm1, float parm2); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the RGB color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetConstraintPosition&#039;&#039;&#039;(string constraintName, vector position); ====&lt;br /&gt;
&lt;br /&gt;
:Moves the constraint with the given name that binds this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setContents&#039;&#039;&#039;(float contents); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setController&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Let a player assume movement control of an AI vehicle (may be remote control as in a player on a coach pulled by a horse)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CAIVehicle&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;setCurInvCategory&#039;&#039;&#039;(string categoryName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the first item of the named category. Returns 1 on success, 0 on failure (e.g. wrong category name)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;setCurInvItem&#039;&#039;&#039;(string itemName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the named item. Returns: the item entity of the newly selected item (can be $null_entity).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setcvar&#039;&#039;&#039;(string name, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a cvar.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setDroppable&#039;&#039;&#039;(float droppable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether an item may be dropped from the inventory. &lt;br /&gt;
::&#039;&#039;droppable&#039;&#039;: if non-zero the item becomes droppable, when called with 0 the item becomes non-droppable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEnemy&#039;&#039;&#039;(entity enemy); ====&lt;br /&gt;
&lt;br /&gt;
:Make the given entity an enemy.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEntityRelation&#039;&#039;&#039;(entity ent, float relation); ====&lt;br /&gt;
&lt;br /&gt;
:Set a relation to another entity, this can be friendly (&amp;gt;0), neutral(0) or hostile (&amp;lt;0)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlyOffset&#039;&#039;&#039;(float offset); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlySpeed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Set the speed flying creatures move at. Also sets speed for moveTypeSlide.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobable&#039;&#039;&#039;(float frobable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobOnlyUsedByInv&#039;&#039;&#039;(float OnOff); ====&lt;br /&gt;
&lt;br /&gt;
:Engages or disengages a mode where we only frobhilight entities that can be used by our current inventory item. This also disables general frobactions and only allows &amp;quot;used by&amp;quot; frob actions.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGui&#039;&#039;&#039;(float handle, string guiFile); ====&lt;br /&gt;
&lt;br /&gt;
:Loads a new file into an existing GUI.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiFloat&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiInt&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiString&#039;&#039;&#039;(float handle, string key, string val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiStringFromKey&#039;&#039;&#039;(float handle, string key, entity src, string srcKey); ====&lt;br /&gt;
&lt;br /&gt;
:This is a kludge. It is equivelant to: setGuiString( handle, key, src.getKey(srcKey) ) However, it&#039;s used to bypass the 127 char size limit on script strings.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHealth&#039;&#039;&#039;(float health); ====&lt;br /&gt;
&lt;br /&gt;
:Use these to set the health of AI or players (this also updates the AI_DEAD flag)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set hinderance from a source.&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setImmobilization&#039;&#039;&#039;(string source, float type); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointAngle&#039;&#039;&#039;(float jointnum, float transform_type, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the orientation of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointPos&#039;&#039;&#039;(float jointnum, float transform_type, vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the position of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimatedEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setKey&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key on this entity&#039;s spawn args. Note that most spawn args are evaluated when this entity spawns in, so this will not change the entity&#039;s behavior in most cases. This is chiefly for saving data the script needs in an entity for later retrieval.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to set&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: the value to store&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightgemModifier&#039;&#039;&#039;(string modifierName, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the named lightgem modifier to a certain value. An example would be the player lantern: setLightgemModifier(&amp;quot;lantern&amp;quot;, 32). This way multiple modifiers can be set by concurrent script threads.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightOrigin&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Set origin of lights independent of model origin&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParm&#039;&#039;&#039;(float parmNum, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the red/green/blue/alpha shader parms on the light and the model.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current linear velocity of this entity in units per second. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the linear velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAFEntity_Base&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setModel&#039;&#039;&#039;(string modelName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the model this entity uses&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setMoveType&#039;&#039;&#039;(float movetype); ====&lt;br /&gt;
&lt;br /&gt;
:Set the current movetype.  movetypes are defined in tdm_ai.script&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setName&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of this entity.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: the new name&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNeverDormant&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enables or prevents an entity from going dormant&lt;br /&gt;
::&#039;&#039;enable&#039;&#039;: 1 = enable, 0 = disable&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNextState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and waits until thread exits, or a frame delay before calling it. Handy for setting the state in the constructor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum, float state); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: objective number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: component number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 or 0 for true or false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveEnabling&#039;&#039;&#039;(float ObjNum, string strIn); ====&lt;br /&gt;
&lt;br /&gt;
:Set an objective&#039;s enabling objectives (objectives that must be completed before that objective may be completed).&lt;br /&gt;
::&#039;&#039;strIn&#039;&#039;: takes the form of a string that is a space-delimited list of integer objectives representing the new enabling objectives. E.g. : &#039;1 2 3 4&#039;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOngoing&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective ongoing.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOptional&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective mandatory.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveState&#039;&#039;&#039;(float ObjNum, float State); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of objectives from the script. For example, use this to invalidate an objective when something happens in your mission. The first argument is the numerical index of the objective (taking &#039;user&#039; objective indices, starting at 1). Choose from the following for the second argument: OBJ_INCOMPLETE, OBJ_COMPLETE, OBJ_INVALID, OBJ_FAILED. Use this on $player1 like $player1.setObjectiveState(1, OBJ_COMPLETE);&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveText&#039;&#039;&#039;(float ObjNum, string newText); ====&lt;br /&gt;
&lt;br /&gt;
:Modify the displayed text for an objective. Can also be a string template like #str_20000&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveVisible&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective visibility.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (relative to it&#039;s bind parent if any)&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: the new origin&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOwner&#039;&#039;&#039;(entity owner); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the owner of this entity. Entities will never collide with their owner.&lt;br /&gt;
::&#039;&#039;owner&#039;&#039;: the entity which will be made owner of this entity&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPersistantArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair that persists between maps&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortAISoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortPlayerSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPrime&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadius&#039;&#039;&#039;(float radius); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of the bounding box, x=y=z=radius.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadiusXYZ&#039;&#039;&#039;(float x, float y, float z); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the width/length/height of the light bounding box.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setReplacementAnim&#039;&#039;&#039;(string animToReplace, string replacement); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the animation &amp;quot;animToReplace&amp;quot; with &amp;quot;replacement&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSavePermissions&#039;&#039;&#039;(float permission); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;permission&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShader&#039;&#039;&#039;(string shader); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the shader to be used for the light.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParm&#039;&#039;&#039;(float parm, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: new value&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets shader parms Parm0, Parm1, Parm2, and Parm3 (red, green, blue, and alpha respectively).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
::&#039;&#039;parm3&#039;&#039;: alpha&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSize&#039;&#039;&#039;(vector min, vector max); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of this entity&#039;s bounding box.&lt;br /&gt;
::&#039;&#039;min&#039;&#039;: minimum corner coordinates&lt;br /&gt;
::&#039;&#039;max&#039;&#039;: maximum corner coordinates&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSkin&#039;&#039;&#039;(string skinName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the skin this entity uses.  Set to &amp;quot;&amp;quot; to turn off the skin.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSmokeVisibility&#039;&#039;&#039;(float particle_num, float on); ====&lt;br /&gt;
&lt;br /&gt;
:enables/disables smoke particles on bones.  pass in the particle #, or ALL_PARTICLES for turning on/off all particle systems. particles are spawned in the order they appear in the entityDef&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundLoss&#039;&#039;&#039;(float loss); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPortalEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundVolume&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the volume of the sound to play, must be issued before startSoundShader.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpawnArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair to be used when a new entity is spawned.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpyglassOverlayBackground&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the background overlay for the spyglass, depending on aspect ratio.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setStartedOff&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and goes to it immediately&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSyncedAnimWeight&#039;&#039;&#039;(float channel, float animindex, float weight); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the blend amount on multi-point anims.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Sets whether the player can talk to this character or not.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTeam&#039;&#039;&#039;(float newTeam); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the team number of this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetTimerState&#039;&#039;&#039;(float stimId, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Set the hinderance on the view turning from a source&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnRate&#039;&#039;&#039;(float rate); ====&lt;br /&gt;
&lt;br /&gt;
:Set the rate the character turns at&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setViewAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the player view angles, e.g. make the player facing this direction. 0 0 0 is east (along the X axis in DR), 0 90 0 north (along the Y axis in DR) 0 180 0 west, 0 270 0 south.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmVine&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWorldOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterFireProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a projectile.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the ammonition&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of this shooter.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetAmmo&#039;&#039;&#039;(float newAmmo); ====&lt;br /&gt;
&lt;br /&gt;
:Set the ammonition&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Activates / deactivates the shooter entity.&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = active, 0 = inactive&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;tdmFuncShooter&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;show&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity visible if it has a model.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachment&#039;&#039;&#039;(string attName, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment.&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachmentInd&#039;&#039;&#039;(float index, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment by array index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;, &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shrivel&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sin&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;slideTo&#039;&#039;&#039;(vector position, float time); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;smoking&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:flame is now smoking (1), or not (0)&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = smoking, 0 = not smoking&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idLight&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawn&#039;&#039;&#039;(string classname); ====&lt;br /&gt;
&lt;br /&gt;
:Creates an entity of the specified classname and returns a reference to the entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;SpawnFloat&#039;&#039;&#039;(string key, float default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;SpawnString&#039;&#039;&#039;(string key, string default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawnThrowableProjectile&#039;&#039;&#039;(string projectileName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:This method spawns a projectile of the type named by the caller and attaches it to the joint given by the caller.  The projectile becomes the AI&#039;s firable projectile. Returns a pointer to a projectile entity that can be  thrown by the AI. You can use AI_LaunchMissle (e* = launchMissle(v,v) ) to throw the stone.&lt;br /&gt;
::&#039;&#039;projectileName&#039;&#039;: The name of the projectile to spawn (as seen in a .def file) Must be descended from idProjectile&lt;br /&gt;
::&#039;&#039;jointName&#039;&#039;: The name of the joint on the model to which the particle should be attached for throwing. If this is NULL or the empty string, then it is attached to the model center.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;SpawnVector&#039;&#039;&#039;(string key, vector default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;speed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement speed. Set this speed before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sqrt&#039;&#039;&#039;(float square); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the square root of the given number.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;start&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Starts a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idCameraAnim&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startFx&#039;&#039;&#039;(string fx); ====&lt;br /&gt;
&lt;br /&gt;
:Starts an FX on this entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startGamePlayTimer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Resets the game play timer to zero and (re)starts it.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startMouseGesture&#039;&#039;&#039;(float key, float thresh, float test, float inverted, float turnHinderance, float decideTime, float deadTime); ====&lt;br /&gt;
&lt;br /&gt;
:Start tracking a mouse gesture that started when the key impulse was pressed. Discretizes analog mouse movement into a few different gesture possibilities. Impulse arg can also be a button, see the UB_* enum in usercmdgen.h. For now, only one mouse gesture check at a time.&lt;br /&gt;
::&#039;&#039;thresh&#039;&#039;: Waits until the threshold mouse input thresh is reached before deciding.&lt;br /&gt;
::&#039;&#039;test&#039;&#039;: determines which test to do (0 = up/down, 1 = left/right, 2 = 4 directions, 3 = 8 directions).&lt;br /&gt;
::&#039;&#039;inverted&#039;&#039;: inverts the movement if set to 1, does not if 0&lt;br /&gt;
::&#039;&#039;turnHinderance&#039;&#039;: Sets the max player view turn rate when checking this mouse gesture (0 =&amp;gt; player view locked, 1.0 =&amp;gt; no effect on view turning)&lt;br /&gt;
::&#039;&#039;decideTime&#039;&#039;: time in milliseconds after which the mouse gesture is auto-decided, in the event that the mouse movement threshold was not reached. A DecideTime of -1 means wait forever until the button is released.&lt;br /&gt;
::&#039;&#039;deadTime&#039;&#039;: how long after attack is pressed that mouse control remains dampened by the fraction turnHinderance.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to a ragdoll taking over the animation.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAnimated&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSound&#039;&#039;&#039;(string sound, float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the sound specified by the snd_* key/value pair on the channel and returns the length of the sound in seconds. This is the preferred method for playing sounds on an entity since it ensures that the sound is precached.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: the spawnarg to reference, e.g. &#039;snd_move&#039;&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSoundShader&#039;&#039;&#039;(string shaderName, float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Plays a specific sound shader on the channel and returns the length of the sound in seconds. This is not the preferred method of playing a sound since you must ensure that the sound is loaded.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to play&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play the sound on&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startSpline&#039;&#039;&#039;(entity spline); ====&lt;br /&gt;
&lt;br /&gt;
:Starts moving along a spline stored on the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startZoom&#039;&#039;&#039;(float duration, float startFOV, float endFOV); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to start the zoom in event. The player FOV is gradually zoomed in until over the given timespan.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
::&#039;&#039;startFOV&#039;&#039;: The start FOV, this is clamped to [1..179]&lt;br /&gt;
::&#039;&#039;endFOV&#039;&#039;: The end FOV, this is clamped to [1..179]&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimAdd&#039;&#039;&#039;(float type, float radius); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimClearIgnoreList&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:This clears the ignore list for the stim of the given type It can be used if an entity changes state in some way that it would no longer be ignored&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stop&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idCameraAnim&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopAnim&#039;&#039;&#039;(float channel, float frames); ====&lt;br /&gt;
&lt;br /&gt;
:Stops the animation currently playing on the given channel over the given number of frames.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopFxFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any translational movement.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:turns off the ragdoll&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any rotational movement.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSound&#039;&#039;&#039;(float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a specific sound shader on the channel.&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to stop playback on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSpline&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops moving along a spline.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopThinking&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StopTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strFind&#039;&#039;&#039;(string text, string find, float casesensitive, float start, float end); ====&lt;br /&gt;
&lt;br /&gt;
:Return the position of the given substring, counting from 0, or -1 if not found.&lt;br /&gt;
::&#039;&#039;casesensitive&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;start&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;end&#039;&#039;: -1&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strLeft&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the first num characters&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strLength&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of characters in the string&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strMid&#039;&#039;&#039;(string text, float start, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the characters from start to start + num&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRemove&#039;&#039;&#039;(string text, string remove); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given substring with &amp;quot;&amp;quot;. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;) results in &amp;quot;aa&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strReplace&#039;&#039;&#039;(string text, string remove, string replace); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given string with the replacement string. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;,&amp;quot;ccc&amp;quot;) results in &amp;quot;accca&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRight&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the last num characters&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strSkip&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string following the first num characters&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToFloat&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the numeric value of the given string.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToInt&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the integer value of the given string.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sway&#039;&#039;&#039;(float speed, float phase, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation back and forth along the given angles with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Switch&#039;&#039;&#039;(float newState); ====&lt;br /&gt;
&lt;br /&gt;
:Move the lever to the on or off position (0 = off).&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobLever&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;switchState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to the state with the given name, current one is ended.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;syncAnimChannels&#039;&#039;&#039;(float fromChannel, float toChannel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Synchronises the channels&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idActor&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Tap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Operates this handle.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CFrobHandle&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;, &#039;&#039;CFrobLock&#039;&#039;, &#039;&#039;idProjectile&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_StatusUpdate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;, &#039;&#039;CFrobLock&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;teleportTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Teleports the entity to the position of the other entity, plus a possible offset and random offset (defined on the spawnargs of the entity to be teleported)&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;terminate&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Terminates a thread.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimAttack&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMove&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMoveTowardEnemy&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testChargeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testEvent1&#039;&#039;&#039;(float float_pi, float int_beef, float float_exp, string string_tdm, float float_exp10, float int_food); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;testEvent2&#039;&#039;&#039;(float int_prevres, vector vec_123, float int_food, entity ent_player, entity ent_null, float float_pi, float float_exp); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;testEvent3&#039;&#039;&#039;(entity ent_prevres, vector vec_123, float float_pi, entity ent_player); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMeleeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMoveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;threadname&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of the current thread.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwAF&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwMoveable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;time&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement time. Set this time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Toggle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the forcefield on and off.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idForceField&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_light&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the spotlight on/off.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idSecurityCamera&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_sweep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the camera sweep.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idSecurityCamera&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the lock state. Unlocked movers will be locked and vice versa. The notes above concerning Unlock() still apply if this call unlocks the mover. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the mover state. Closes when fully open, opens when fully closed. If the mover is &amp;quot;interrupted&amp;quot; (e.g. when the player frobbed the mover in between), the move direction depends on the state of the internal &amp;quot;intent_open&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;totalAmmoCount&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Amount of ammo in inventory. since each shot may use more than 1 ammo, this is different than ammoAvailable()&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;touches&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity touches the other entity.&lt;br /&gt;
::&#039;&#039;other&#039;&#039;: the entity to check against&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;trace&#039;&#039;&#039;(vector start, vector end, vector mins, vector maxs, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the box from &#039;mins&#039; to &#039;maxs&#039; hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;tracePoint&#039;&#039;&#039;(vector start, vector end, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the trace hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;translate&#039;&#039;&#039;(string input); ====&lt;br /&gt;
&lt;br /&gt;
:Translates a string (like #str_12345) into the current language&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenEntities&#039;&#039;&#039;(entity source, entity dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two entities.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenPoints&#039;&#039;&#039;(vector source, vector dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two points.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToPoint&#039;&#039;&#039;(vector destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to point.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;trigger&#039;&#039;&#039;(entity entityToTrigger); ====&lt;br /&gt;
&lt;br /&gt;
:Triggers the given entity.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerMissionEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerParticles&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnTo&#039;&#039;&#039;(float yaw); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unbind&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Detaches this entity from its master.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Unlock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unlocks the mover. Calls to Open() will succeed after this call. Depending on the value of the spawnarg &amp;quot;open_on_unlock&amp;quot; the mover might automatically open after this call. &lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;CBinaryFrobMover&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unpauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unpauses the game. Most scripts are not executed during g_stopTime == true and won&#039;t get into the position of calling this.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;useAmmo&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Eats the specified amount of ammo&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;vecLength&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the given vector.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;vecNormalize&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normalized version of the given vector.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;VecToAngles&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns Euler angles for the given direction.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;visScan&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks for enemies or player in the AI&#039;s FOV, using light level and distance. For now the check is only done on the player.  Returns a reference to the sighted actor.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wait&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of the current thread for the given number of seconds.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitAction&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFor&#039;&#039;&#039;(entity mover); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given entity to complete its move.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForRender&#039;&#039;&#039;(entity e); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends the current thread until &#039;e&#039; might have been rendered. It&#039;s event based, so it doesn&#039;t waste CPU repeatedly checking inPVS(). e.inPVS() will very likely be true when the thread resumes. If e.inPVS() is true, calling waitForRender() will probably just wait a frame, unless D3 can figure out that the entity doesn&#039;t need to be rendered. Optimizations regarding shadowcasting lights may not apply to this function - it is based purely off whether or not the entity&#039;s bounding box is visible.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForThread&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given thread to terminate.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFrame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of current thread for one game frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idEntity&#039;&#039;, &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wakeOnFlashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Tells the monster to activate when flashlight shines on them.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wander&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idAI&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;warning&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues a warning.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;wasDamaged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Check if the player was damaged this frame.&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idPlayer&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponHolstered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponLowering&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponOutOfAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReady&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReloading&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponRising&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponState&#039;&#039;&#039;(string stateFunction, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idWeapon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Events by Spawnclass / Entity Type ==&lt;br /&gt;
=== idClass ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;remove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the entity from the game. For AI, use kill() instead.&lt;br /&gt;
&lt;br /&gt;
=== idActor ===&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDistance&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance that the anim travels. If the entity has multiple anims with animName, the distance may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animDistance.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDone&#039;&#039;&#039;(float channel, float blendOutFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the animation playing on the given channel is completed considering a number of blend frames.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animIsPaused&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Return whether the given anim channel is paused&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animLength&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the anim in seconds. If the entity has multiple anims with animName, length may not match the anim that is played. Use chooseAnim to get a non-random anim and pass that string into animLength.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animState&#039;&#039;&#039;(float channel, string stateFunction, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a new animation state script function for the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attach&#039;&#039;&#039;(entity ent, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI. Entity spawnArgs checked for attachments are:  - &amp;quot;origin&amp;quot;, &amp;quot;angles&amp;quot;, and &amp;quot;joint&amp;quot;. These must be set prior to calling attach.&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attachToPos&#039;&#039;&#039;(entity ent, string position, string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Attach an entity to the AI, using a named attachment position&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the desired name of the attachment, e.g., &#039;melee_weapon&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensures that the animation exists and causes an error if it doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;chooseAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Chooses a random anim and returns the name. Useful for doing move tests on anims.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestEnemyToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the enemy closest to the given location.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAnimchannel&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Used to disable a certain animchannel (for example if the ai is dead)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables eye focus.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:disables leg IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables pain animations.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;DisableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:disables walk IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given attachment name.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Drop the attachment for the given index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAnim&#039;&#039;&#039;(float channel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Enables animation on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableEyeFocus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables eye focus.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableLegIK&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:enables leg IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enablePain&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables pain animations.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;EnableWalkIK&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables walk IK&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishAction&#039;&#039;&#039;(string action); ====&lt;br /&gt;
&lt;br /&gt;
:Finishes the given wait action.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;finishChannelAction&#039;&#039;&#039;(float channel, string animname); ====&lt;br /&gt;
&lt;br /&gt;
:Overloaded finishAction function for setting the waitstate on each channel separately&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;footstep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getAnimState&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current animation state script function used for the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachment&#039;&#039;&#039;(string attName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity with the given attachment name Will be NULL if the name is invalid or if the entity no longer exists&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttachmentInd&#039;&#039;&#039;(float index); ====&lt;br /&gt;
&lt;br /&gt;
:Get the attached entity at the given index. Will be NULL if the index is invalid or the entity no longer exists&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAttackFlag&#039;&#039;&#039;(float combatType); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the given attack flag is activated.&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBlendFrames&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get eye position of the player and the AI&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getHead&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity used for the character&#039;s head, if it has one.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getHealth&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current health.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActPhase&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action phase (holding,recovering,etc).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action state (attacking/defending).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeActType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current melee action type (overhead,thrust,etc.).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastActTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type of the last attack to hit this actor. Defaults to MELEETYPE_UNBLOCKABLE if we were not hit before.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeLastHitByType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the game time that the most recent melee action ended (in ms)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMeleeResult&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the result of the last melee action Follows MELEERESULT_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumAttachments&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Return the number of attachments on an AI. Used to iterate through the attachments if desired.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumMeleeWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of melee weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_melee&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumRangedWeapons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of ranged weapons attached to an actor. This refers to the TDM-style attachments with the spawnarg &#039;is_weapon_ranged&#039; set to &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPainAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the pain animation.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true when an entity has a specific animation.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasEnemies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the actor has one or more enemies.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;idleAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given idle animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inAnimState&#039;&#039;&#039;(float channel, string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given animation state script function is currently used for the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;lookupReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current replacement animation for &amp;quot;anim&amp;quot;. Returns empty if no replacement anim &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the animation for the melee action has finished.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionHeld&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action reaches the &amp;quot;hold&amp;quot; point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeActionReleased&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Called when the melee action is released from the hold point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeAttackStarted&#039;&#039;&#039;(float attType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee attack Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeBestParry&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the melee type integer of the best parry given the enemy attacks at the time If no attacking enemy is found, returns default of MELEETYPE_RL Follows MELEETYPE_* enum defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;meleeNameForNum&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Converts a melee type integer to a string name suffix Used for finding the right animation for a given type, etc. Possible names are, in order: &amp;quot;Over, LR, RL, Thrust, General&amp;quot; Where general blocks all attacks types except unblockable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;meleeParryStarted&#039;&#039;&#039;(float parType); ====&lt;br /&gt;
&lt;br /&gt;
:Registers the start of a given melee parry Intended to be called from a script that also starts the animation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;nextEnemy&#039;&#039;&#039;(entity lastEnemy); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the next enemy the actor has acquired.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;overrideAnim&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the animation currently playing on the given channel and syncs the animation with the animation of the nearest animating channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseAnim&#039;&#039;&#039;(float channel, float bPause); ====&lt;br /&gt;
&lt;br /&gt;
:Pause all animations playing on the given channel. NOTE: Can also be used used by idWeapons&lt;br /&gt;
::&#039;&#039;bPause&#039;&#039;: true = pause, false = unpause&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Do not use, this is part of TDM&#039;s internal mechanics. Use playCustomAnim() on AI.in scripts instead of this. Plays the given animation on the given channel. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCycle&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Continuously repeats the given animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preventPain&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Prevents any pain animation from being played for the given time in seconds.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: time in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToCoords&#039;&#039;&#039;(string attName, string joint, vector offset, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach. &lt;br /&gt;
::&#039;&#039;joint&#039;&#039;: the name of the joint to attach to&lt;br /&gt;
::&#039;&#039;offset&#039;&#039;: the translation offset from joint&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: a (pitch, yaw, roll) angle vector that defines the rotation  of the attachment relative to the joint&#039;s orientation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reAttachToPos&#039;&#039;&#039;(string attName, string position); ====&lt;br /&gt;
&lt;br /&gt;
:Reattach an existing attachment to a named attachment position. Example: reAttachToPos( melee_weapon, right_hand_held )&lt;br /&gt;
::&#039;&#039;attName&#039;&#039;: the name of the attachment we want to reattach.&lt;br /&gt;
::&#039;&#039;position&#039;&#039;: the new position we want to attach it to.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reloadTorchReplacementAnims&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:If actor has a torch, reload the torch&#039;s replacement anims.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeReplacementAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:Removes the replacement for the given &amp;quot;anim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAnimPrefix&#039;&#039;&#039;(string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a string which is placed in front of any animation names.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAttackFlag&#039;&#039;&#039;(float combatType, float enabled); ====&lt;br /&gt;
&lt;br /&gt;
:Activate or deactivate the given attack flag&lt;br /&gt;
::&#039;&#039;combatType&#039;&#039;: see tdm_defs.script for possible enum values&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBlendFrames&#039;&#039;&#039;(float channel, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHealth&#039;&#039;&#039;(float health); ====&lt;br /&gt;
&lt;br /&gt;
:Use these to set the health of AI or players (this also updates the AI_DEAD flag)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNextState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and waits until thread exits, or a frame delay before calling it. Handy for setting the state in the constructor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setReplacementAnim&#039;&#039;&#039;(string animToReplace, string replacement); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the animation &amp;quot;animToReplace&amp;quot; with &amp;quot;replacement&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setState&#039;&#039;&#039;(string stateFunc); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the next state and goes to it immediately&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSyncedAnimWeight&#039;&#039;&#039;(float channel, float animindex, float weight); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the blend amount on multi-point anims.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachment&#039;&#039;&#039;(string attName, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment.&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachmentInd&#039;&#039;&#039;(float index, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment by array index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopAnim&#039;&#039;&#039;(float channel, float frames); ====&lt;br /&gt;
&lt;br /&gt;
:Stops the animation currently playing on the given channel over the given number of frames.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;syncAnimChannels&#039;&#039;&#039;(float fromChannel, float toChannel, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Synchronises the channels&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_Base ===&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the angular velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocityB&#039;&#039;&#039;(float id); ====&lt;br /&gt;
&lt;br /&gt;
:Get the linear velocitiy of a particular body Returns (0,0,0) if the body ID is invalid.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getNumBodies&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bodies in the AF. If the AF physics pointer is NULL, it returns 0.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreAddedEnts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the angular velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetConstraintPosition&#039;&#039;&#039;(string constraintName, vector position); ====&lt;br /&gt;
&lt;br /&gt;
:Moves the constraint with the given name that binds this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocityB&#039;&#039;&#039;(vector velocity, float id); ====&lt;br /&gt;
&lt;br /&gt;
:Set the linear velocity of a particular body&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_Gibbable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;gib&#039;&#039;&#039;(string damageDefName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_Generic ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idAFEntity_WithAttachedHead ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CAIVehicle ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearController&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Need separate clearController because scripting doesn&#039;t like passing in $null_entity? (greebo: one could remove this function and set the argument type of setController to &#039;E&#039;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobRidable&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Called when a player directly mounts or dismounts a ridable AI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getMoveAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the player-requested movement anim for a player controlled AI vehicle&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setController&#039;&#039;&#039;(entity playerController); ====&lt;br /&gt;
&lt;br /&gt;
:Let a player assume movement control of an AI vehicle (may be remote control as in a player on a coach pulled by a horse)&lt;br /&gt;
&lt;br /&gt;
=== idCombatNode ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;markUsed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the combat node if &amp;quot;use_once&amp;quot; is set on the entity.&lt;br /&gt;
&lt;br /&gt;
=== idAI ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alert&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;alertAI&#039;&#039;&#039;(string type, float amount, entity actor); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: alert type&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: alert amount&lt;br /&gt;
::&#039;&#039;actor&#039;&#039;: actor causing alert&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can take damage again.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowHiddenMovement&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Normally, when hidden, monsters do not run physics. This enables physics when hidden.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowMovement&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;animTurn&#039;&#039;&#039;(float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Enable/disable animation controlled turning.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Pass in the maximum # of degrees the animation turns. Use an amount of 0 to disable.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackBegin&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;attackEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;attackMelee&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the attack hit&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;attackMissile&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile fired&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bark&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Let the AI bark a certain sound.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: sound name, e.g. &#039;snd_warn_response&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeNonSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes the moveable non-solid for other entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;becomeRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:enables the ragdoll if the entity has one&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;burn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBecomeSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromAnim&#039;&#039;&#039;(string anim); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canHitEnemyFromJoint&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to enemy&#039;s position. For walking monsters, enemy should be near the floor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to entity&#039;s position. For walking monsters, entity should be near the floor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canReachPosition&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if character can walk to specified position. For walking monsters, position should be near the floor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSee&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeExt&#039;&#039;&#039;(entity ent, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee that can optionally choose to use field of vision and lighting calculations.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If b_useLighting is 0 the entity will be visible in complete darkness. If it is 1, the entity will only be visible if there is light shining on it, but the slightest light is enought. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold instead.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeePositionExt&#039;&#039;&#039;(vector position, float b_useFOV, float b_useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSeeExt that tests a location rather than an entity. Note that any actor at the position may make it not seeable from a distance.&lt;br /&gt;
::&#039;&#039;b_useFOV&#039;&#039;: If 0 the entity will be visible even if the AI&#039;s back is turned to it&lt;br /&gt;
::&#039;&#039;b_useLighting&#039;&#039;: If 0 the entity will be visible in complete darkness&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;chargeAttack&#039;&#039;&#039;(string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the enemy entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearFlyOffset&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at to the value set in the def file.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Used for determining tactile alert targets&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;closestReachableEnemyOfEntity&#039;&#039;&#039;(entity team_mate); ====&lt;br /&gt;
&lt;br /&gt;
:Finds another character&#039;s closest reachable enemy&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissile&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:returns projectile created&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createMissileFromDef&#039;&#039;&#039;(string defName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;directDamage&#039;&#039;&#039;(entity damageTarget, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dropTorch&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emptyHand&#039;&#039;&#039;(string hand); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableAFPush&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableGravity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;endState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Ends the current state with the given name, returns TRUE if more than one state is remaining.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyInCombatCone&#039;&#039;&#039;(entity combatNode, float use_current_enemy_location); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyPositionValid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;enemyRange2D&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;entityInAttackCone&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;faceEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;facingIdeal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findActorsInBounds&#039;&#039;&#039;(vector mins, vector maxs); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an entity within the bounds specified&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemy&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in PVS&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyAI&#039;&#039;&#039;(float onlyInFov); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy monster in PVS&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findEnemyInCombatNodes&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Finds enemy player in attack cones&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;findFriendlyAI&#039;&#039;&#039;(float team); ====&lt;br /&gt;
&lt;br /&gt;
:Use this to find a visible AI friendly to ourselves. It basically iterates over all active entities in the map and looks for friendly actors. The pythagorean distance is taken to evaluate the distance.  Don&#039;t call this every frame, this might get expensive in larger maps. Returns the nearest visible actor entity or the $null_entity, if none was found.&lt;br /&gt;
::&#039;&#039;team&#039;&#039;: used to constrain the search to a given team. Set this to -1 to let the code ignore this argument&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;fireMissileAtTarget&#039;&#039;&#039;(string jointname, string targetname); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a missile at entity specified by &#039;attack_target&#039;.  returns projectile fired&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;flee&#039;&#039;&#039;(entity entToFleeFrom, float algorithm, float distanceOption); ====&lt;br /&gt;
&lt;br /&gt;
:Flee from the given entity. Pass the escape point lookup algorithm (e.g. EP_FIND_GUARDED) and the distanceOption (e.g. EP_DIST_NEAREST) to specify how the best escape point can be found. Refer to the tdm_defs.script file to see all the constants.  When algorithm is set to EP_FIND_AAS_AREA_FAR_FROM_THREAT, the distanceOption is interpreted as minimum threat distance. Returns FALSE if no escape point could be found.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;foundBody&#039;&#039;&#039;(entity body); ====&lt;br /&gt;
&lt;br /&gt;
:Objective callback for when an AI finds a body.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Gas_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAcuity&#039;&#039;&#039;(string type); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAlertActor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the actor that alerted the AI in this frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAlertLevelOfOtherAI&#039;&#039;&#039;(entity otherEntity); ====&lt;br /&gt;
&lt;br /&gt;
:This event gets the alert number of another AI (AI_AlertLevel variable value) Returns the alert number of the other AI, 0.0 if its not an AI or is NULL&lt;br /&gt;
::&#039;&#039;otherEntity&#039;&#039;: the other AI entity who&#039;s alert number is being queried&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getAttacker&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the attacking entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getAudThresh&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getClosestHiddenTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds the closest targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCombatNode&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentYaw&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyEyePos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getEnemyPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJumpVelocity&#039;&#039;&#039;(vector pos, float speed, float max_jump_height); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current movetype&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextIdleAnim&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the name of the next idle anim to be played on this AI (used by AnimState scripts).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getObservationPosition&#039;&#039;&#039;(vector targetPoint, float visualAcuityZeroToOne); ====&lt;br /&gt;
&lt;br /&gt;
:This event is used to get a position that the AI can move to observe a  given position.  It is useful for looking at hiding spots that can&#039;t be reached, and performing other investigation functions.  Returns a world position from which the observation can take place. Returns the current AI origin if no such point is found.  @sideEffect This uses the AI_DEST_UNREACHABLE flag variable  to indicate if a point was found. It will be true if none was found, false if one was found.&lt;br /&gt;
::&#039;&#039;targetPoint&#039;&#039;: the world position to be observed&lt;br /&gt;
::&#039;&#039;visualAcuityZeroToOne&#039;&#039;: the visual acuity of the AI on a scale of 0.0 to 1.0 where 0.0 is blind and 1.0 is perfect vision.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getObstacle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the obstacle in the character&#039;s path&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getRandomTarget&#039;&#039;&#039;(string entity_type); ====&lt;br /&gt;
&lt;br /&gt;
:Finds a random targeted entity of the specified type.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getReachableEntityPosition&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the entity within the AAS if possible, otherwise just the entity position.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelationEnt&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSndDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai hearing of sound &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTactEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:ai sense of touch&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTalkTarget&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnDelta&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTurnRate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the rate the character turns.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVisDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns position of the last visual alert.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasSeenEvidence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns 1 when the AI has seen evidence of intruders before (an enemy, a body...)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ignoreDamage&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:The AI can no longer take damage.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEntityHidden&#039;&#039;&#039;(entity ent, float f_sightThreshold); ====&lt;br /&gt;
&lt;br /&gt;
:This is an alternate version of canSee, using FOV, distance and lighting.&lt;br /&gt;
::&#039;&#039;f_sightThreshold&#039;&#039;: goes from 0.0 (entity visible in complete darkness) to 1.0 (entity only visible if completely lit up).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isPlayerResponsibleForDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player was responsible for the AI&#039;s caller&#039;s death.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kickObstacles&#039;&#039;&#039;(entity kickEnt, float force); ====&lt;br /&gt;
&lt;br /&gt;
:Kicks any obstacle in the character&#039;s path.&lt;br /&gt;
::&#039;&#039;kickEnt&#039;&#039;: pass in $null_entity if you don&#039;t have a specific entity to kick&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;kill&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Kills the monster.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;KO_Knockout&#039;&#039;&#039;(entity inflictor); ====&lt;br /&gt;
&lt;br /&gt;
:AI knockout&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: is the entity causing the knockout, can be the $null_entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;launchMissile&#039;&#039;&#039;(vector origin, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the projectile entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;locateEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Updates the last known position of the enemy independent from whether or not the enemy is visible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAt&#039;&#039;&#039;(entity focusEntity, float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward an entity for a period of time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtAngles&#039;&#039;&#039;(float yawAngleClockwise, float pitchAngleUp, float rollAngle, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:A look at event that just looks at a set of angles relative  to the current body facing of the AI. This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but it looks at the specified angles from the current body facing of the AI.&lt;br /&gt;
::&#039;&#039;yawAngleClockwise&#039;&#039;: Negative angles are to the left of  the AIs body and positive angles are to the right.&lt;br /&gt;
::&#039;&#039;pitchAngleUp&#039;&#039;: Negative values are down and positive values are up  where down and up are defined by the body axis.&lt;br /&gt;
::&#039;&#039;rollAngle&#039;&#039;: This is currently unused and does nothing.&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: The duration to look in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtEnemy&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Aims the character&#039;s eyes and head toward the current enemy for a period of time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;lookAtPosition&#039;&#039;&#039;(vector lookAtWorldPosition, float durationInSeconds); ====&lt;br /&gt;
&lt;br /&gt;
:This method is just like the vanilla Doom3 lookAt and lookAtEnemy methods, but instead of looking at an entity, it looks at a position in worldspace.  That is, it turns the head of the AI to look at the position.&lt;br /&gt;
::&#039;&#039;lookAtWorldPosition&#039;&#039;: position in space to look at&lt;br /&gt;
::&#039;&#039;durationInSeconds&#039;&#039;: duration to look in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;meleeAttackToJoint&#039;&#039;&#039;(string joint, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveOutOfRange&#039;&#039;&#039;(entity ent, float range); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;moveStatus&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToAttackPosition&#039;&#039;&#039;(entity ent, string attack_anim); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCover&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToCoverFrom&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemy&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEnemyHeight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;muzzleFlash&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numSmokeEmitters&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the # of emitters defined by &#039;smokeParticleSystem&#039; in the entitydef&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;performRelight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Deal with doused lights.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAndLipSync&#039;&#039;&#039;(string soundName, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Play the given sound, using the given lipsync animation. The lipsync animation should just be a simple non-loopable animation of the mouth opening in a linear fashion. The code will select individual frames from this to construct a simple lipsyncing effect which is in time with the sound.  Returns the length of the played sound in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCustomAnim&#039;&#039;&#039;(string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the given animation on legs and torso. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;preBurn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;predictEnemyPos&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to predict the player&#039;s movement based on the AAS and his direction of movement.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processBlindStim&#039;&#039;&#039;(entity stimSource, float skipVisibilityCheck); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;processVisualStim&#039;&#039;&#039;(entity stimSource); ====&lt;br /&gt;
&lt;br /&gt;
:Use this call to let the AI react to a visual stim (coming from the source entity).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;pushPointIntoAAS&#039;&#039;&#039;(vector post); ====&lt;br /&gt;
&lt;br /&gt;
:Tries to push the point into a valid AAS area&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pushState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Pushes the state with the given name, current one is postponed.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamageFromJoint&#039;&#039;&#039;(string jointname, string damageDef); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomPath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restartPatrol&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restoreMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAcuity&#039;&#039;&#039;(string type, float val); ====&lt;br /&gt;
&lt;br /&gt;
:ai generalized alerts&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertGracePeriod&#039;&#039;&#039;(float frac, float duration, float count); ====&lt;br /&gt;
&lt;br /&gt;
:This starts the alert grace period for an AI. Should be called in the same frame as the alert that pushes them into a higher state.&lt;br /&gt;
::&#039;&#039;frac&#039;&#039;: the fraction of the alert below which they should ignore alerts during the grace period.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: the duration of the period in seconds&lt;br /&gt;
::&#039;&#039;count&#039;&#039;: the number of alerts ignored above which the grace period is invalid&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAlertLevel&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the alert level (AI_AlertLevel). This should always be called instead of setting AI_AlertLevel directly.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAudThresh&#039;&#039;&#039;(float val); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBoneMod&#039;&#039;&#039;(float allowBoneMod); ====&lt;br /&gt;
&lt;br /&gt;
:Enables or disables head looking (may be obsolete).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEnemy&#039;&#039;&#039;(entity enemy); ====&lt;br /&gt;
&lt;br /&gt;
:Make the given entity an enemy.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlyOffset&#039;&#039;&#039;(float offset); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the preferred height relative to the player&#039;s view height to fly at.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFlySpeed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Set the speed flying creatures move at. Also sets speed for moveTypeSlide.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setMoveType&#039;&#039;&#039;(float movetype); ====&lt;br /&gt;
&lt;br /&gt;
:Set the current movetype.  movetypes are defined in tdm_ai.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSmokeVisibility&#039;&#039;&#039;(float particle_num, float on); ====&lt;br /&gt;
&lt;br /&gt;
:enables/disables smoke particles on bones.  pass in the particle #, or ALL_PARTICLES for turning on/off all particle systems. particles are spawned in the order they appear in the entityDef&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Sets whether the player can talk to this character or not.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTalkTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the entity (player) trying to talk to the character&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnRate&#039;&#039;&#039;(float rate); ====&lt;br /&gt;
&lt;br /&gt;
:Set the rate the character turns at&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shrivel&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;slideTo&#039;&#039;&#039;(vector position, float time); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawnThrowableProjectile&#039;&#039;&#039;(string projectileName, string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:This method spawns a projectile of the type named by the caller and attaches it to the joint given by the caller.  The projectile becomes the AI&#039;s firable projectile. Returns a pointer to a projectile entity that can be  thrown by the AI. You can use AI_LaunchMissle (e* = launchMissle(v,v) ) to throw the stone.&lt;br /&gt;
::&#039;&#039;projectileName&#039;&#039;: The name of the projectile to spawn (as seen in a .def file) Must be descended from idProjectile&lt;br /&gt;
::&#039;&#039;jointName&#039;&#039;: The name of the joint on the model to which the particle should be attached for throwing. If this is NULL or the empty string, then it is attached to the model center.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:turns off the ragdoll&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopThinking&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;switchState&#039;&#039;&#039;(string stateName); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to the state with the given name, current one is ended.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimAttack&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMove&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testAnimMoveTowardEnemy&#039;&#039;&#039;(string animname); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testChargeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMeleeAttack&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testMoveToPosition&#039;&#039;&#039;(vector position); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwAF&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;throwMoveable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenEntities&#039;&#039;&#039;(entity source, entity dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceBetweenPoints&#039;&#039;&#039;(vector source, vector dest); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance between two points.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToEntity&#039;&#039;&#039;(entity destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;travelDistanceToPoint&#039;&#039;&#039;(vector destination); ====&lt;br /&gt;
&lt;br /&gt;
:Approximate travel distance to point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerParticles&#039;&#039;&#039;(string jointName); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnTo&#039;&#039;&#039;(float yaw); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToEntity&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;turnToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;visScan&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks for enemies or player in the AI&#039;s FOV, using light level and distance. For now the check is only done on the player.  Returns a reference to the sighted actor.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitAction&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wakeOnFlashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:Tells the monster to activate when flashlight shines on them.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wander&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
=== idTestModel ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
=== CBinaryFrobMover ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Close&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the frobmover, regardless of its previous state. Mover must be open, otherwise nothing happens.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;GetFractionalPosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a fraction between 0.00 (closed) and 1.00 (open).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsLocked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is currently locked.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if the mover is open, which is basically the same as &amp;quot;not closed&amp;quot;. A mover is considered closed when it is at its close position.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;IsPickable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true (nonzero) if this frobmover is pickable.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Lock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Locks the mover. Calls to Open() will not succeed after this call. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Open&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the frobmover, regardless of its previous state. The mover will not move when it&#039;s locked. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_StatusUpdate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the lock state. Unlocked movers will be locked and vice versa. The notes above concerning Unlock() still apply if this call unlocks the mover. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ToggleOpen&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the mover state. Closes when fully open, opens when fully closed. If the mover is &amp;quot;interrupted&amp;quot; (e.g. when the player frobbed the mover in between), the move direction depends on the state of the internal &amp;quot;intent_open&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Unlock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unlocks the mover. Calls to Open() will succeed after this call. Depending on the value of the spawnarg &amp;quot;open_on_unlock&amp;quot; the mover might automatically open after this call. &lt;br /&gt;
&lt;br /&gt;
=== idBrittleFracture ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;dampenSound&#039;&#039;&#039;(float dampen); ====&lt;br /&gt;
&lt;br /&gt;
:Toggle whether the shattering sound is dampened on the window, e.g., when covered by moss.&lt;br /&gt;
::&#039;&#039;dampen&#039;&#039;: 1 = dampened, 0 = not dampened&lt;br /&gt;
&lt;br /&gt;
=== idCameraView ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idCameraAnim ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;start&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Starts a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stop&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a spline or anim camera moving.&lt;br /&gt;
&lt;br /&gt;
=== idFuncEmitter ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;emitterAddModel&#039;&#039;&#039;(string modelName, vector modelOffset); ====&lt;br /&gt;
&lt;br /&gt;
:Adds a new particle (or regular, if you wish) model to the emitter, located at modelOffset units away from the emitter&#039;s origin.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitterGetNumModels&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of models/particles this emitter has. Always &amp;gt;= 1.&lt;br /&gt;
&lt;br /&gt;
=== idEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateContacts&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Activate objects sitting on this object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activateTargets&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Causes this entity to activate all it&#039;s targets. Similar to how a trigger activates entities.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addInvItem&#039;&#039;&#039;(entity inv_item); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the given item to the inventory. Depending on the type the passed entity will be removed from the game (as for loot items) or hidden.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addItemToInv&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Adds the entity to the given entity&#039;s inventory. Depending on the type the entity will be removed from the game (as for loot items) or hidden. Example: $book-&amp;gt;addItemToInv($player1);&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Add a target to this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to add as target&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;applyImpulse&#039;&#039;&#039;(entity source, float bodyid, vector point, vector impulse); ====&lt;br /&gt;
&lt;br /&gt;
:Applies an impulse to the entity. Example: entity.applyImpulse($player1, 0, entity.getOrigin(), &#039;0 0 2&#039;);&lt;br /&gt;
::&#039;&#039;source&#039;&#039;: Pass $null_entity or the entity that applies the impulse&lt;br /&gt;
::&#039;&#039;bodyid&#039;&#039;: For articulated figures, ID of the body, 0 for the first (main) body. Otherwise use 0.&lt;br /&gt;
::&#039;&#039;point&#039;&#039;: Point on the body where the impulse is applied to&lt;br /&gt;
::&#039;&#039;impulse&#039;&#039;: Vector of the impulse&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bind&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindPosition&#039;&#039;&#039;(entity master); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position (but not orientation) relative to another entity, such that when the master entity moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToBody&#039;&#039;&#039;(entity master, float bodyID, float orientated); ====&lt;br /&gt;
&lt;br /&gt;
:Bind to AF body&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: entity to bind to&lt;br /&gt;
::&#039;&#039;bodyID&#039;&#039;: AF body ID to bind to&lt;br /&gt;
::&#039;&#039;orientated&#039;&#039;: binds the orientation as well as position, if set to 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bindToJoint&#039;&#039;&#039;(entity master, string boneName, float rotateWithMaster); ====&lt;br /&gt;
&lt;br /&gt;
:Fixes this entity&#039;s position and orientation relative to a bone on another entity, such that when the master&#039;s bone moves, so does this entity.&lt;br /&gt;
::&#039;&#039;master&#039;&#039;: the entity to bind to&lt;br /&gt;
::&#039;&#039;boneName&#039;&#039;: the bone name&lt;br /&gt;
::&#039;&#039;rotateWithMaster&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cacheSoundShader&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensure the specified sound shader is loaded by the system. Prevents cache misses when playing sound shaders.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to cache&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a function on an entity&#039;s script object. See also callGlobalFunction().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGlobalFunction&#039;&#039;&#039;(string functionName, entity other); ====&lt;br /&gt;
&lt;br /&gt;
:calls a global function and passes the other entity along as the first argument calls the function in a new thread, so it continues executing in the current thread right away (unlike entity.callFunction( &amp;quot;blah&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;callGui&#039;&#039;&#039;(float handle, string namedEvent); ====&lt;br /&gt;
&lt;br /&gt;
:Calls a named event in a GUI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canBeUsedBy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the entity can be used by the argument entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canSeeEntity&#039;&#039;&#039;(entity target, float useLighting); ====&lt;br /&gt;
&lt;br /&gt;
:This is a general version of idAI::canSee, that can be used by all entities. It doesn&#039;t regard FOV, it just performs a trace to check whether the target is occluded by world geometry. Is probably useful for stim/response as well Pass useLighting = true to take the lighting of the target entity into account. Use &amp;quot;isEntityHidden&amp;quot; as a script event with a threshold. The constant threshold value for useLighting is defined within the SDK in game/entity.h.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeEntityRelation&#039;&#039;&#039;(entity ent, float relationChange); ====&lt;br /&gt;
&lt;br /&gt;
:This changes the current relation to an entity by adding the new amount.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvIcon&#039;&#039;&#039;(string name, string category, string icon); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory icon of the given item in the given category to &amp;lt;icon&amp;gt;.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvItemCount&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Decreases the inventory item stack count by amount. The item is addressed using the name and category of the item. These are usually defined on the inventory item entity (&amp;quot;inv_name&amp;quot;, &amp;quot;inv_category&amp;quot;)  Amount can be both negative and positive.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeInvLightgemModifier&#039;&#039;&#039;(string name, string category, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the lightgem modifier value of the given item. Valid arguments are between 0 and 32 (which is the maximum lightgem value).&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: name of the item&lt;br /&gt;
::&#039;&#039;category&#039;&#039;: the item&#039;s category&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;changeLootAmount&#039;&#039;&#039;(float type, float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the loot amount of the given Type (e.g. GOODS) by &amp;lt;amount&amp;gt;.  The mission statisic for loot found gets changed too.  The new value of the changed type is returned (e.g. the new GOODS value if this has been changed).  Note: The LOOT_TOTAL type can&#039;t be changed and 0 is returned.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY&lt;br /&gt;
::&#039;&#039;amount&#039;&#039;: can be negative&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAbsence&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:description missing&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copyBind&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:copy bind information of other to this entity (i.e., bind this entity to the same entity that other is bound to)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;createOverlay&#039;&#039;&#039;(string guiFile, float layer); ====&lt;br /&gt;
&lt;br /&gt;
:Creates a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;CreateTimer&#039;&#039;&#039;(float stimId, float hour, float minutes, float seconds, float milliseconds); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;damage&#039;&#039;&#039;(entity inflictor, entity attacker, vector dir, string damageDefName, float damageScale); ====&lt;br /&gt;
&lt;br /&gt;
:Deals damage to this entity (gets translated into the idEntity::Damage() method within the SDK).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage (maybe a projectile)&lt;br /&gt;
::&#039;&#039;attacker&#039;&#039;: the &amp;quot;parent&amp;quot; entity of the inflictor, the one that is responsible for the inflictor (can be the same)&lt;br /&gt;
::&#039;&#039;dir&#039;&#039;: the direction the attack is coming from.&lt;br /&gt;
::&#039;&#039;damageDefName&#039;&#039;: the name of the damage entityDef to know what damage is being dealt to &amp;lt;self&amp;gt; (e.g. &amp;quot;damage_lava&amp;quot;)&lt;br /&gt;
::&#039;&#039;damageScale&#039;&#039;: the scale of the damage (pass 1.0 as default, this should be ok).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;destroyOverlay&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Destroys a GUI overlay. (must be used on the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to another entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;distanceToPoint&#039;&#039;&#039;(vector point); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the distance of this entity to a point.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;extinguishLights&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Extinguishes all lights (i.e. the &amp;lt;self&amp;gt; entity plus all bound lights)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeSound&#039;&#039;&#039;(float channel, float newLevel, float fadeTime); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the sound on this entity to a new level over a period of time.  Use SND_CHANNEL_ANY for all currently playing sounds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;frob&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Frobs the entity (i.e. simulates a frob action performed by the player). Returns TRUE if the entity is frobable, FALSE otherwise.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;frobHilight&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:ishtvan: Tries to make the entity frobhilight or not&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current orientation of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAngularVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindChild&#039;&#039;&#039;(float ind); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the ind_th bind child of this entity or NULL if index is invalid. NOTE: indices start at zero&lt;br /&gt;
::&#039;&#039;ind&#039;&#039;: child index&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getBindMaster&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity&#039;s bindmaster&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBoolKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the boolean value of a specific spawn arg, defaulting to false.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getClipMask&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getColor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getContents&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvCategory&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory category.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvIcon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the icon of the currently highlighted inventory item.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getCurInvItemEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently highlighted inventory item entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemId&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_item_id&amp;quot;). Most items will return an empty string, unless the &amp;quot;inv_item_id&amp;quot; is set on purpose.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurInvItemName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the currently highlighted inventory item (the one defined in &amp;quot;inv_name&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntityKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the entity specified by the spawn arg.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFloatKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the floating point value of a specific spawn arg, defaulting to 0.0f.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGui&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the file currently loaded by a GUI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiFloat&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getGuiInt&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getGuiString&#039;&#039;&#039;(float handle, string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIntKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the integer value of a specific spawn arg, defaulting to 0.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the value of a specific spawn arg, defaulting to &#039;&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightInPVS&#039;&#039;&#039;(float falloff, float scaling); ====&lt;br /&gt;
&lt;br /&gt;
:Computes the sum of all light in the PVS of the entity you call this on, and returns a vector with the sum.&lt;br /&gt;
::&#039;&#039;falloff&#039;&#039;: 0: no falloff with distance  0.5: sqrt(linear) falloff	(dist 100 =&amp;gt; 1/10)  1: linear falloff			(dist 100 =&amp;gt; 1/100)  2: square falloff			(dist 100 =&amp;gt; 1/10000) &lt;br /&gt;
::&#039;&#039;scaling&#039;&#039;: factor to scale the distance, can be used to lower/raise distance factor  after the linear or square scaling has been used good looking values are approx: sqrt(linear): 0.01, linear: 0.1, square 1.0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLinearVelocity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current linear velocity of this entity. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getLocation&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the idLocation entity corresponding to the entity&#039;s current location. This was player-specific before, but is now available to all entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLootAmount&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the amount of loot for the given type (e.g. LOOT_GOODS). Pass LOOT_TOTAL to return the sum of all loot types.&lt;br /&gt;
::&#039;&#039;type&#039;&#039;: one of: LOOT_GOLD, LOOT_GOODS, LOOT_JEWELRY, LOOT_TOTAL&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMass&#039;&#039;&#039;(float body); ====&lt;br /&gt;
&lt;br /&gt;
:Gets mass of a body for an entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMaxs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the maximum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMins&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the minimum corner of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the next inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextKey&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Searches for the name of a spawn arg that matches the prefix.  For example, passing in &amp;quot;attack_target&amp;quot; matches &amp;quot;attack_target1&amp;quot;, &amp;quot;attack_targetx&amp;quot;, &amp;quot;attack_target_enemy&amp;quot;,  etc. The returned string is the name of the key which can then be passed into functions like getKey() to lookup the value of that spawn arg.  This is useful for when you have multiple values to look up, like when you target multiple objects.  To find the next matching key, pass in the previous result and the next key returned will be the first one that matches after the previous result. Pass in &amp;quot;&amp;quot; to get the first match. Passing in a non-existent key is the same as passing in &amp;quot;&amp;quot;. Returns &amp;quot;&amp;quot; when no  more keys match.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current position of this entity (relative to bind parent if any).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrevInvItem&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cycles the standard cursor to the previous inventory item. Returns the item entity pointed to after the operation is complete.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetResponseEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity which should take the response. Some entities like AI heads are not responding themselves to stims, but relay it to another entity (i.e. the bodies they&#039;re attached to).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getShaderParm&#039;&#039;&#039;(float parm); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the size of this entity&#039;s bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundVolume&#039;&#039;&#039;(string soundName); ====&lt;br /&gt;
&lt;br /&gt;
:Get the volume of the sound to play.&lt;br /&gt;
::&#039;&#039;soundName&#039;&#039;: the name of the sound&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTarget&#039;&#039;&#039;(float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the requested target entity.&lt;br /&gt;
::&#039;&#039;num&#039;&#039;: The target number. Starts at 0.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTeam&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current team number.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVectorKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Retrieves the vector value of a specific spawn arg, defaulting to &#039;0 0 0&#039;.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: spawnarg name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantLoc&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getVinePlantNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event important to the growing of vines from vine arrows&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getWorldOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current world-space position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;hasFunction&#039;&#039;&#039;(string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:checks if an entity&#039;s script object has a specific function&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;heal&#039;&#039;&#039;(string healDefName, float healScale); ====&lt;br /&gt;
&lt;br /&gt;
:Heals the entity this is called on using the specified healing entityDef. Returns 1 if the entity could be healed, 0 otherwise (if the entity is already at full health, for ex.)&lt;br /&gt;
::&#039;&#039;healDefName&#039;&#039;: the name of the entityDef containing the healing information (e.g. &amp;quot;heal_potion&amp;quot;)&lt;br /&gt;
::&#039;&#039;healScale&#039;&#039;: the scaling value to be applied to the healAmount found in the healEntityDef&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hide&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity invisible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;hideByLODBias&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;inPVS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns non-zero if this entity is in PVS. For lights, it will return true when the light&#039;s bounding box is in PVS, even though the light may not actually be in PVS. (an unmoved shadowcasting light may not be visible to PVS areas its bounding box intersects with)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isDroppable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether an item may be dropped from the inventory&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isEnemy&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is an enemy.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFriend&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is a friend.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isFrobable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHidden&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if the entity&#039;s model is invisible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isHilighted&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if entity is currently frobhilighted.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInLiquid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 1 if the entity is in or touching a liquid.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isNeutral&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the given entity is neutral.&lt;br /&gt;
::&#039;&#039;ent&#039;&#039;: The entity in question&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isType&#039;&#039;&#039;(string spawnclass); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity is of the given type.&lt;br /&gt;
::&#039;&#039;spawnclass&#039;&#039;: spawn class name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;loadExternalData&#039;&#039;&#039;(string declFile, string prefix); ====&lt;br /&gt;
&lt;br /&gt;
:Load an external xdata declaration.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadows&#039;&#039;&#039;(float noShadows); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false, turning shadowcasting on or off for this entity.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;noShadowsDelayed&#039;&#039;&#039;(float noShadows, float delay); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the noShadow property on the entity to true/false after delay in ms, turning shadows cast by this entity on or off.&lt;br /&gt;
::&#039;&#039;noShadows&#039;&#039;: 1 = disable shadows, 0 = enable shadows&lt;br /&gt;
::&#039;&#039;delay&#039;&#039;: delay in ms&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numBindChildren&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of bound entities lower down in the bind chain than this entity, but be sure to give it the topmost bindmaster&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;numTargets&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of entities this entity has targeted.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propagateSound&#039;&#039;&#039;(string soundName, float propVolMod, float msgTag); ====&lt;br /&gt;
&lt;br /&gt;
:Generates a propagated sound&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSound&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunctions on all entities propagate a sound directly without playing an audible sound&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;propSoundMod&#039;&#039;&#039;(string name, float volMod); ====&lt;br /&gt;
&lt;br /&gt;
:propagate a sound directly with a volume modifier&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomTarget&#039;&#039;&#039;(string ignoreName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random targeted entity. Pass in an entity name to skip that entity.&lt;br /&gt;
::&#039;&#039;ignoreName&#039;&#039;: the name of an entity to ignore&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;rangedThreatTo&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Could this entity threaten the given (target) entity from a distance?&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeBinds&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes all attached entities from the game&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeKey&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Removes a key from an object&#039;s spawnargs, so things like getNextKey() don&#039;t retrieve it.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to remove&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeTarget&#039;&#039;&#039;(entity target); ====&lt;br /&gt;
&lt;br /&gt;
:Remove a target from this entity.&lt;br /&gt;
::&#039;&#039;target&#039;&#039;: the entity to remove from the targets&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;replaceInvItem&#039;&#039;&#039;(entity oldItem, entity newItem); ====&lt;br /&gt;
&lt;br /&gt;
:Replaces the entity &amp;lt;oldItem&amp;gt; with &amp;lt;newItem&amp;gt; in the inventory, while keeping &amp;lt;oldItem&amp;gt;&#039;s inventory position intact.  Note: The position guarantee only applies if &amp;lt;oldItem&amp;gt; and newItem  share the same category. If the categories are different, the position of &amp;lt;newItem&amp;gt; is likely to be different than the one of &amp;lt;oldItem&amp;gt;.  Note that &amp;lt;oldItem&amp;gt; will be removed from the inventory.  If &amp;lt;newItem&amp;gt; is the $null_entity, &amp;lt;oldItem&amp;gt; is just removed and no replacement happens.  Returns 1 if the operation was successful, 0 otherwise.&lt;br /&gt;
::&#039;&#039;newItem&#039;&#039;: can be $null_entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResetTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;reskinCollisionModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:For use after setSkin() on moveables and static models, if the CM needs to be refreshed to update surface properties after a skin change. CM will be regenerated from the original model file with the new skin.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAdd&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseAllow&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseIgnore&#039;&#039;&#039;(float type, entity responder); ====&lt;br /&gt;
&lt;br /&gt;
:This functions must be called on the stim entity. It will add the response to the ignore list, so that subsequent stims, should not trigger the stim anymore.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseSetAction&#039;&#039;&#039;(float type, string action); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ResponseTrigger&#039;&#039;&#039;(entity source, float stimType); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a response on this entity, without a stim (a stand-alone response, so to say)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;RestartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;restorePosition&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns this entity to the position stored in the &amp;quot;origin&amp;quot; spawn arg. This is the position the entity was spawned in unless the &amp;quot;origin&amp;quot; key is changed. Note that there is no guarantee that the entity won&#039;t be stuck in another entity when moved, so care should be taken to make sure that isn&#039;t possible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current orientation of this entity (relative to bind parent if any)&lt;br /&gt;
::&#039;&#039;angles&#039;&#039;: the new orientation&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setAngularVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setClipMask&#039;&#039;&#039;(float clipMask); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the clipmask of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setColor&#039;&#039;&#039;(float parm0, float parm1, float parm2); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the RGB color of this entity (shader parms Parm0, Parm1, Parm2).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setContents&#039;&#039;&#039;(float contents); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the contents of the physics object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;setCurInvCategory&#039;&#039;&#039;(string categoryName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the first item of the named category. Returns 1 on success, 0 on failure (e.g. wrong category name)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;setCurInvItem&#039;&#039;&#039;(string itemName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the inventory cursor to the named item. Returns: the item entity of the newly selected item (can be $null_entity).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setDroppable&#039;&#039;&#039;(float droppable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether an item may be dropped from the inventory. &lt;br /&gt;
::&#039;&#039;droppable&#039;&#039;: if non-zero the item becomes droppable, when called with 0 the item becomes non-droppable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setEntityRelation&#039;&#039;&#039;(entity ent, float relation); ====&lt;br /&gt;
&lt;br /&gt;
:Set a relation to another entity, this can be friendly (&amp;gt;0), neutral(0) or hostile (&amp;lt;0)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobable&#039;&#039;&#039;(float frobable); ====&lt;br /&gt;
&lt;br /&gt;
:Set whether the entity is frobable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGui&#039;&#039;&#039;(float handle, string guiFile); ====&lt;br /&gt;
&lt;br /&gt;
:Loads a new file into an existing GUI.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiFloat&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiInt&#039;&#039;&#039;(float handle, string key, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiString&#039;&#039;&#039;(float handle, string key, string val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a GUI parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setGuiStringFromKey&#039;&#039;&#039;(float handle, string key, entity src, string srcKey); ====&lt;br /&gt;
&lt;br /&gt;
:This is a kludge. It is equivelant to: setGuiString( handle, key, src.getKey(srcKey) ) However, it&#039;s used to bypass the 127 char size limit on script strings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setKey&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key on this entity&#039;s spawn args. Note that most spawn args are evaluated when this entity spawns in, so this will not change the entity&#039;s behavior in most cases. This is chiefly for saving data the script needs in an entity for later retrieval.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: the spawnarg to set&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: the value to store&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLinearVelocity&#039;&#039;&#039;(vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current linear velocity of this entity in units per second. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setModel&#039;&#039;&#039;(string modelName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the model this entity uses&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setName&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of this entity.&lt;br /&gt;
::&#039;&#039;name&#039;&#039;: the new name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setNeverDormant&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enables or prevents an entity from going dormant&lt;br /&gt;
::&#039;&#039;enable&#039;&#039;: 1 = enable, 0 = disable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (relative to it&#039;s bind parent if any)&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: the new origin&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setOwner&#039;&#039;&#039;(entity owner); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the owner of this entity. Entities will never collide with their owner.&lt;br /&gt;
::&#039;&#039;owner&#039;&#039;: the entity which will be made owner of this entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParm&#039;&#039;&#039;(float parm, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: new value&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets shader parms Parm0, Parm1, Parm2, and Parm3 (red, green, blue, and alpha respectively).&lt;br /&gt;
::&#039;&#039;parm0&#039;&#039;: red&lt;br /&gt;
::&#039;&#039;parm1&#039;&#039;: green&lt;br /&gt;
::&#039;&#039;parm2&#039;&#039;: blue&lt;br /&gt;
::&#039;&#039;parm3&#039;&#039;: alpha&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSize&#039;&#039;&#039;(vector min, vector max); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of this entity&#039;s bounding box.&lt;br /&gt;
::&#039;&#039;min&#039;&#039;: minimum corner coordinates&lt;br /&gt;
::&#039;&#039;max&#039;&#039;: maximum corner coordinates&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSkin&#039;&#039;&#039;(string skinName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the skin this entity uses.  Set to &amp;quot;&amp;quot; to turn off the skin.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundVolume&#039;&#039;&#039;(float newLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Set the volume of the sound to play, must be issued before startSoundShader.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTeam&#039;&#039;&#039;(float newTeam); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the team number of this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;SetTimerState&#039;&#039;&#039;(float stimId, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWorldOrigin&#039;&#039;&#039;(vector origin); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the current position of this entity (regardless of any bind parent).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;show&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes this entity visible if it has a model.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startFx&#039;&#039;&#039;(string fx); ====&lt;br /&gt;
&lt;br /&gt;
:Starts an FX on this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSound&#039;&#039;&#039;(string sound, float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Plays the sound specified by the snd_* key/value pair on the channel and returns the length of the sound in seconds. This is the preferred method for playing sounds on an entity since it ensures that the sound is precached.&lt;br /&gt;
::&#039;&#039;sound&#039;&#039;: the spawnarg to reference, e.g. &#039;snd_move&#039;&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;startSoundShader&#039;&#039;&#039;(string shaderName, float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Plays a specific sound shader on the channel and returns the length of the sound in seconds. This is not the preferred method of playing a sound since you must ensure that the sound is loaded.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to play&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to play the sound on&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StartTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimAdd&#039;&#039;&#039;(float type, float radius); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimClearIgnoreList&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:This clears the ignore list for the stim of the given type It can be used if an entity changes state in some way that it would no longer be ignored&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimEnable&#039;&#039;&#039;(float type, float state); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 0 = disabled, 1 = enabled&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StimRemove&#039;&#039;&#039;(float type); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSound&#039;&#039;&#039;(float channel, float netSync); ====&lt;br /&gt;
&lt;br /&gt;
:Stops a specific sound shader on the channel.&lt;br /&gt;
::&#039;&#039;channel&#039;&#039;: the channel to stop playback on&lt;br /&gt;
::&#039;&#039;netSync&#039;&#039;: -&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;StopTimer&#039;&#039;&#039;(float stimId); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;teleportTo&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Teleports the entity to the position of the other entity, plus a possible offset and random offset (defined on the spawnargs of the entity to be teleported)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;touches&#039;&#039;&#039;(entity other); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if this entity touches the other entity.&lt;br /&gt;
::&#039;&#039;other&#039;&#039;: the entity to check against&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unbind&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Detaches this entity from its master.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wait&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of the current thread for the given number of seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFrame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of current thread for one game frame.&lt;br /&gt;
&lt;br /&gt;
=== idAnimatedEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearAllJoints&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on all joints.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearJoint&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Removes any custom transforms on the specified joint.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointAngle&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the angular orientation of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getJointHandle&#039;&#039;&#039;(string jointname); ====&lt;br /&gt;
&lt;br /&gt;
:Looks up the number of the specified joint. Returns INVALID_JOINT if the joint is not found.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getJointPos&#039;&#039;&#039;(float jointnum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position of the joint in world space.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointAngle&#039;&#039;&#039;(float jointnum, float transform_type, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the orientation of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setJointPos&#039;&#039;&#039;(float jointnum, float transform_type, vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Modifies the position of the joint based on the transform type.&lt;br /&gt;
&lt;br /&gt;
=== CFrobButton ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Operate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to operate this entity.&lt;br /&gt;
&lt;br /&gt;
=== CFrobDoor ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoorhandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the handle entity of this door. Can return NULL (== $null_entity)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;OpenDoor&#039;&#039;&#039;(float master); ====&lt;br /&gt;
&lt;br /&gt;
:The OpenDoor method is necessary to give the FrobDoorHandles a  &amp;quot;low level&amp;quot; open routine. The CFrobDoor::Open() call is re-routed to the FrobDoorHandle::Tap() method, so there must be a way to actually let the door open. Which is what this method does.  Note: Shouldn&#039;t be called directly by scripters, call handle-&amp;gt;Tap() instead. Unless you know what you&#039;re doing.&lt;br /&gt;
&lt;br /&gt;
=== CFrobDoorHandle ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetDoor&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated door entity for this handle.&lt;br /&gt;
&lt;br /&gt;
=== CFrobHandle ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Tap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Operates this handle.&lt;br /&gt;
&lt;br /&gt;
=== CFrobLever ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Operate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to operate this entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Switch&#039;&#039;&#039;(float newState); ====&lt;br /&gt;
&lt;br /&gt;
:Move the lever to the on or off position (0 = off).&lt;br /&gt;
&lt;br /&gt;
=== CFrobLock ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Open&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the frobmover, regardless of its previous state. The mover will not move when it&#039;s locked. &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_StatusUpdate&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
=== CFrobLockHandle ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;GetLock&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the associated lock of this handle.&lt;br /&gt;
&lt;br /&gt;
=== tdmFuncShooter ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterFireProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Fires a projectile.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the ammonition&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;shooterGetState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of this shooter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetAmmo&#039;&#039;&#039;(float newAmmo); ====&lt;br /&gt;
&lt;br /&gt;
:Set the ammonition&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;shooterSetState&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:Activates / deactivates the shooter entity.&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = active, 0 = inactive&lt;br /&gt;
&lt;br /&gt;
=== idEntityFx ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idItem ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;respawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Respawn&lt;br /&gt;
&lt;br /&gt;
=== idMoveableItem ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;gib&#039;&#039;&#039;(string damageDefName); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
=== idLight ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeInLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light on over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOutLight&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the light out over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeToLight&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades the light to the given color over a given time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get level (intensity) of a light, &amp;lt;= 0.0 indicates it is off&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getLightOrigin&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the light origin (independent of its visual model)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightParm&#039;&#039;&#039;(float parmNum); ====&lt;br /&gt;
&lt;br /&gt;
:Gets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getRadius&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the light radius.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getShader&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the shader name used by the light.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Off&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity off.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;On&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity on.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightOrigin&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Set origin of lights independent of model origin&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParm&#039;&#039;&#039;(float parmNum, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the red/green/blue/alpha shader parms on the light and the model.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadius&#039;&#039;&#039;(float radius); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the size of the bounding box, x=y=z=radius.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRadiusXYZ&#039;&#039;&#039;(float x, float y, float z); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the width/length/height of the light bounding box.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShader&#039;&#039;&#039;(string shader); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the shader to be used for the light.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setStartedOff&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;smoking&#039;&#039;&#039;(float state); ====&lt;br /&gt;
&lt;br /&gt;
:flame is now smoking (1), or not (0)&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 = smoking, 0 = not smoking&lt;br /&gt;
&lt;br /&gt;
=== idPlayerStart ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idActivator ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPathCorner ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;randomPath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
=== idDamagable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idExplodable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idForceField ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Toggle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the forcefield on and off.&lt;br /&gt;
&lt;br /&gt;
=== idAnimated ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;footstep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchMissiles&#039;&#039;&#039;(string projectilename, string sound, string launchbone, string targetbone, float numshots, float framedelay); ====&lt;br /&gt;
&lt;br /&gt;
:Launches a projectile.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;leftFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to left foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rightFoot&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Changes to right foot and plays footstep sound.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startRagdoll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Switches to a ragdoll taking over the animation.&lt;br /&gt;
&lt;br /&gt;
=== idStaticEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncSmoke ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idVacuumSeparatorEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPortalEntity ===&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortalHandle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the portal handle.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getSoundLoss&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSoundLoss&#039;&#039;&#039;(float loss); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound loss value (dB).&lt;br /&gt;
&lt;br /&gt;
=== idBeam ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idShaking ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idEarthQuake ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncPortal ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncAASPortal ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idFuncAASObstacle ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPhantomObjects ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPortalSky ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== tdmVine ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addDescendant&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canWater&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getPrime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;scaleVine&#039;&#039;&#039;(float factor); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPrime&#039;&#039;&#039;(entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setWatered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Event called using vine.*()&lt;br /&gt;
&lt;br /&gt;
=== idMoveable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;becomeNonSolid&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Makes the moveable non-solid for other entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableDamage&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:enable/disable damage&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isAtRest&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if object is not moving&lt;br /&gt;
&lt;br /&gt;
=== idMover ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover accelerates.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the acceleration time. Set this acceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;accelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates an acceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;bob&#039;&#039;&#039;(float speed, float phase, vector distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation back and forth along the given vector with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;closePortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the mover decelerates.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTime&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the deceleration time. Set this deceleration time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;decelTo&#039;&#039;&#039;(float speed, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a deceleration to the given speed over the given time in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables aligning the mover with the spline direction.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveSpeed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the movement speed.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMoveTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the movement time.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is moving&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if a mover is rotating&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;move&#039;&#039;&#039;(float angle, float distance); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation with the given distance in the given yaw direction. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveSound&#039;&#039;&#039;(string sound); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the sound to be played when the moving.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveTo&#039;&#039;&#039;(entity targetEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to the position of an entity. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;moveToPos&#039;&#039;&#039;(vector pos); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a translation to an absolute position. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;openPortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;removeInitialSplineAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Subtracts the initial spline angles to maintain the initial orientation of the mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotate&#039;&#039;&#039;(vector angleSpeed); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation with the given angular speed. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateDownTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by decreasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateOnce&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the current angles plus the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateTo&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation towards the given Euler angles. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;rotateUpTo&#039;&#039;&#039;(float axis, float angle); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation about the given axis by increasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;speed&#039;&#039;&#039;(float speed); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement speed. Set this speed before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startSpline&#039;&#039;&#039;(entity spline); ====&lt;br /&gt;
&lt;br /&gt;
:Starts moving along a spline stored on the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMoving&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any translational movement.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopRotating&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops any rotational movement.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopSpline&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Stops moving along a spline.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sway&#039;&#039;&#039;(float speed, float phase, vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Initiates a rotation back and forth along the given angles with the given speed and phase.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;time&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the movement time. Set this time before initiating a new move.&lt;br /&gt;
&lt;br /&gt;
=== idMover_Binary ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;closePortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Closes the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;openPortal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Opens the renderer portal associated with this mover.&lt;br /&gt;
&lt;br /&gt;
=== idRotater ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idRiser ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idPlayer ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponName&#039;&#039;&#039;(string weaponName, string displayName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the display name of the given weapon item to something different. Pass an empty string to reset the display name to the definition as found in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;changeWeaponProjectile&#039;&#039;&#039;(string weaponName, string projectileDefName); ====&lt;br /&gt;
&lt;br /&gt;
:Changes the projectile entityDef name of the given weapon (e.g. &amp;quot;broadhead&amp;quot;) to the specified entityDef (e.g. &amp;quot;atdm:projectile_broadhead&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;checkAAS&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMap&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearActiveInventoryMapEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clear the active inventory map entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearMouseDeadTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;customDeath&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;deathMenu&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Lowers and disables the player weapon.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enableWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the player weapon.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;endZoom&#039;&#039;&#039;(float duration); ====&lt;br /&gt;
&lt;br /&gt;
:Starts the zoom out event, which performs a gradual transition back to the default FOV. May be called during a transition as well to intercept a pending zoom in transition.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;exitTeleporter&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getButtons&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the button state from the current user command.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurrentWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player is currently holding.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getCurWeaponName&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the name of the current weapon, as defined by &amp;quot;inv_weapon_name&amp;quot; in the weaponDef.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getDragged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently dragged body. Returns $null_entity if the body is shouldered, the player has nothing in his hands, or he has a non-AF entity in his hands. See also getShouldered(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:This returns the current FOV of the player. You can modify the current FOV with startZoom() and endZoom().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getFrobbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently frobhilighted entity. This includes entities the player has in his hands. Sets &amp;quot;frob only used by&amp;quot; mode&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getGrabbed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently entity in the players hands. Returns $null_entity if the player has nothing in his hands Dragging or shouldering a body counts as grabbing it. See also getDragged(), getShouldered(), getFrobbed().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getImmobilization&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getInventoryOverlay&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the default inventory overlay for the player. All other entities will return an invalid value.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the results of the last mouse gesture in enum form. (see the definition for MOUSEDIR_* for which numbers correspond to which directions)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getMove&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the movement relative to the player&#039;s view angles from the current user command. vector_x = forward, vector_y = right, vector_z = up&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the next hinderance from a source.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextImmobilization&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getNextTurnHinderance&#039;&#039;&#039;(string prefix, string lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Get the next hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Used to get the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getObjectiveState&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current state of the objective with the number ObjNum.  State is one of the following: OBJ_INCOMPLETE = 0, OBJ_COMPLETE = 1, OBJ_INVALID = 2, OBJ_FAILED = 3&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPreviousWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns weaponX where X is the number of the weapon the player was previously holding.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getShouldered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the currently shouldered body, otherwise $null_entity. See also getDragged(), getGrabbed() and getFrobbed().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTurnHinderance&#039;&#039;&#039;(string source); ====&lt;br /&gt;
&lt;br /&gt;
:* Get the hinderance on the view turning from a source&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getViewAngles&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the player view angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWeaponEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity for the player&#039;s weapon&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;giveHealthPool&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:This increases/decreases the healthpool of the player by the given amount. The healthpool is gradually decreased over time, healing (damaging?) the player.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;heldEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity currently being held, or $null_entity if the player&#039;s hands are empty.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;holdEntity&#039;&#039;&#039;(entity entity); ====&lt;br /&gt;
&lt;br /&gt;
:Forces the player to hold an entity (e.g. puts it into the grabber). Drops whatever is in the player&#039;s hands if $null_entity is passed to it. Returns 1 if successful, 0 if not.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionFailed&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;missionSuccess&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;mouseGestureFinished&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the player is not currently doing a mouse gesture.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveCompUnlatch&#039;&#039;&#039;(float ObjNum, float CompNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective component that has latched into a state&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;objectiveUnlatch&#039;&#039;&#039;(float ObjNum); ====&lt;br /&gt;
&lt;br /&gt;
:Unlatch an irreversible objective that has latched into a state&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the game. This should only be called for threads that are explicitly maintained by a special SDK method, because ordinary threads won&#039;t get executed during g_stopTime == true. Note: This is used by the objective GUI threads. Note: Must be called on the player entity, not the sys entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;playStartSound&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;readLightgemModifierFromWorldspawn&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetWeaponProjectile&#039;&#039;&#039;(string weaponName); ====&lt;br /&gt;
&lt;br /&gt;
:Reloads the original projectile def name from the weaponDef. Used to revert a change made by the event changeWeaponProjectile().&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;resetZoom&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cancels any pending zoom transitions and resets the FOV to normal.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ropeRemovalCleanup&#039;&#039;&#039;(entity ropeEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Called when rope arrow ropes are removed, removes stale pointers on the player object.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;saveGame&#039;&#039;&#039;(string filename); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;selectWeapon&#039;&#039;&#039;(string weapon); ====&lt;br /&gt;
&lt;br /&gt;
:Selects the weapon the player is holding.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setActiveInventoryMapEnt&#039;&#039;&#039;(entity mapEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Notify the player about a new active map entity. This clears out any previously active maps.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setFrobOnlyUsedByInv&#039;&#039;&#039;(float OnOff); ====&lt;br /&gt;
&lt;br /&gt;
:Engages or disengages a mode where we only frobhilight entities that can be used by our current inventory item. This also disables general frobactions and only allows &amp;quot;used by&amp;quot; frob actions.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set hinderance from a source.&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setImmobilization&#039;&#039;&#039;(string source, float type); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set immobilization from a source. Warning: Not a finalized version. It&#039;s subject to change, so use it at your own risk.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightgemModifier&#039;&#039;&#039;(string modifierName, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the named lightgem modifier to a certain value. An example would be the player lantern: setLightgemModifier(&amp;quot;lantern&amp;quot;, 32). This way multiple modifiers can be set by concurrent script threads.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveComp&#039;&#039;&#039;(float ObjNum, float CompNum, float state); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of custom objective components&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: objective number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;CompNum&#039;&#039;: component number. Starts counting at 1&lt;br /&gt;
::&#039;&#039;state&#039;&#039;: 1 or 0 for true or false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveEnabling&#039;&#039;&#039;(float ObjNum, string strIn); ====&lt;br /&gt;
&lt;br /&gt;
:Set an objective&#039;s enabling objectives (objectives that must be completed before that objective may be completed).&lt;br /&gt;
::&#039;&#039;strIn&#039;&#039;: takes the form of a string that is a space-delimited list of integer objectives representing the new enabling objectives. E.g. : &#039;1 2 3 4&#039;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOngoing&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective ongoing.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveOptional&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective mandatory.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveState&#039;&#039;&#039;(float ObjNum, float State); ====&lt;br /&gt;
&lt;br /&gt;
:Used to set the state of objectives from the script. For example, use this to invalidate an objective when something happens in your mission. The first argument is the numerical index of the objective (taking &#039;user&#039; objective indices, starting at 1). Choose from the following for the second argument: OBJ_INCOMPLETE, OBJ_COMPLETE, OBJ_INVALID, OBJ_FAILED. Use this on $player1 like $player1.setObjectiveState(1, OBJ_COMPLETE);&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveText&#039;&#039;&#039;(float ObjNum, string newText); ====&lt;br /&gt;
&lt;br /&gt;
:Modify the displayed text for an objective. Can also be a string template like #str_20000&lt;br /&gt;
::&#039;&#039;ObjNum&#039;&#039;: Starts counting at 1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setObjectiveVisible&#039;&#039;&#039;(float ObjNum, float val); ====&lt;br /&gt;
&lt;br /&gt;
:Sets objective visibility.&lt;br /&gt;
::&#039;&#039;val&#039;&#039;: 1 for true, 0 for false&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSavePermissions&#039;&#039;&#039;(float permission); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
::&#039;&#039;permission&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpyglassOverlayBackground&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the background overlay for the spyglass, depending on aspect ratio.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setTurnHinderance&#039;&#039;&#039;(string source, float mCap, float fCap); ====&lt;br /&gt;
&lt;br /&gt;
:Set the hinderance on the view turning from a source&lt;br /&gt;
::&#039;&#039;mCap&#039;&#039;: mCap values from all sources are multiplied together to define a cap&lt;br /&gt;
::&#039;&#039;fCap&#039;&#039;: fCap values are not additive, the smallest one among all the sources is used&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setViewAngles&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the player view angles, e.g. make the player facing this direction. 0 0 0 is east (along the X axis in DR), 0 90 0 north (along the Y axis in DR) 0 180 0 west, 0 270 0 south.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startGamePlayTimer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Resets the game play timer to zero and (re)starts it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startMouseGesture&#039;&#039;&#039;(float key, float thresh, float test, float inverted, float turnHinderance, float decideTime, float deadTime); ====&lt;br /&gt;
&lt;br /&gt;
:Start tracking a mouse gesture that started when the key impulse was pressed. Discretizes analog mouse movement into a few different gesture possibilities. Impulse arg can also be a button, see the UB_* enum in usercmdgen.h. For now, only one mouse gesture check at a time.&lt;br /&gt;
::&#039;&#039;thresh&#039;&#039;: Waits until the threshold mouse input thresh is reached before deciding.&lt;br /&gt;
::&#039;&#039;test&#039;&#039;: determines which test to do (0 = up/down, 1 = left/right, 2 = 4 directions, 3 = 8 directions).&lt;br /&gt;
::&#039;&#039;inverted&#039;&#039;: inverts the movement if set to 1, does not if 0&lt;br /&gt;
::&#039;&#039;turnHinderance&#039;&#039;: Sets the max player view turn rate when checking this mouse gesture (0 =&amp;gt; player view locked, 1.0 =&amp;gt; no effect on view turning)&lt;br /&gt;
::&#039;&#039;decideTime&#039;&#039;: time in milliseconds after which the mouse gesture is auto-decided, in the event that the mouse movement threshold was not reached. A DecideTime of -1 means wait forever until the button is released.&lt;br /&gt;
::&#039;&#039;deadTime&#039;&#039;: how long after attack is pressed that mouse control remains dampened by the fraction turnHinderance.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;startZoom&#039;&#039;&#039;(float duration, float startFOV, float endFOV); ====&lt;br /&gt;
&lt;br /&gt;
:Call this to start the zoom in event. The player FOV is gradually zoomed in until over the given timespan.&lt;br /&gt;
::&#039;&#039;duration&#039;&#039;: duration of the transition in msec&lt;br /&gt;
::&#039;&#039;startFOV&#039;&#039;: The start FOV, this is clamped to [1..179]&lt;br /&gt;
::&#039;&#039;endFOV&#039;&#039;: The end FOV, this is clamped to [1..179]&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopFxFov&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;stopMouseGesture&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;testEvent1&#039;&#039;&#039;(float float_pi, float int_beef, float float_exp, string string_tdm, float float_exp10, float int_food); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;testEvent2&#039;&#039;&#039;(float int_prevres, vector vec_123, float int_food, entity ent_player, entity ent_null, float float_pi, float float_exp); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;testEvent3&#039;&#039;&#039;(entity ent_prevres, vector vec_123, float float_pi, entity ent_player); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;triggerMissionEnd&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;unpauseGame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Unpauses the game. Most scripts are not executed during g_stopTime == true and won&#039;t get into the position of calling this.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;wasDamaged&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Check if the player was damaged this frame.&lt;br /&gt;
&lt;br /&gt;
=== idProjectile ===&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjectileState&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Gets the current state of the projectile. States are defined in tdm_defs.script&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launch&#039;&#039;&#039;(vector start, vector dir, vector velocity); ====&lt;br /&gt;
&lt;br /&gt;
:Launches the projectile from &amp;lt;start&amp;gt; in direction &amp;lt;dir&amp;gt; with the given &amp;lt;velocity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;TDM_Lock_OnLockPicked&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:internal&lt;br /&gt;
&lt;br /&gt;
=== CProjectileResult ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getActualStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getAxialDir&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalAngVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getFinalVel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getIncidenceAngle&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getProjMass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getStruckEnt&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getSurfNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getSurfType&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Getter for projectile result variable&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isVineFriendly&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Vine-arrow event&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetRelations ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetEntityRelation ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ChangeEntityRelation ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idThread ===&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToForward&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a forward vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToRight&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a right vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;angToUp&#039;&#039;&#039;(vector angles); ====&lt;br /&gt;
&lt;br /&gt;
:Returns an up vector for the given Euler angles.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;assert&#039;&#039;&#039;(float condition); ====&lt;br /&gt;
&lt;br /&gt;
:Breaks if the condition is zero. (Only works in debug builds.)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cacheSoundShader&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Ensure the specified sound shader is loaded by the system. Prevents cache misses when playing sound shaders.&lt;br /&gt;
::&#039;&#039;shaderName&#039;&#039;: the sound shader to cache&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;canPlant&#039;&#039;&#039;(vector traceStart, vector traceEnd, entity ignore, entity vine); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ceil&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the smallest integer that is greater than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearPersistantArgs&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Clears data that persists between maps.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;clearSignalThread&#039;&#039;&#039;(float signalNum, entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:Clears the script callback function set for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;copySpawnArgs&#039;&#039;&#039;(entity ent); ====&lt;br /&gt;
&lt;br /&gt;
:copies the spawn args from an entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;cos&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cosine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;CrossProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the cross product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debug_tdm_material&#039;&#039;&#039;(string file); ====&lt;br /&gt;
&lt;br /&gt;
:For temporary debuging purposes only. Should be removed eventually.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugArrow&#039;&#039;&#039;(vector color, vector start, vector end, float size, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugBounds&#039;&#039;&#039;(vector color, vector mins, vector maxs, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugCircle&#039;&#039;&#039;(vector color, vector origin, vector dir, float radius, float numSteps, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;debugLine&#039;&#039;&#039;(vector color, vector start, vector end, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:line drawing for debug visualization.  lifetime of 0 == 1 frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;DotProduct&#039;&#039;&#039;(vector vec1, vector vec2); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the dot product of the two vectors.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;drawText&#039;&#039;&#039;(string text, vector origin, float scale, vector color, float align, float lifetime); ====&lt;br /&gt;
&lt;br /&gt;
:text drawing for debugging. lifetime of 0 == 1 frame.&lt;br /&gt;
::&#039;&#039;align&#039;&#039;: 0 = left, 1 = center, 2 = right&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;emitParticle&#039;&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle); ====&lt;br /&gt;
&lt;br /&gt;
:Start a particle effect in the world without using an entity emitter. Will emit one quad per particle stage when first called with sys.getTime() as the start time. Designed to be called once per frame with the same startTime each call to achieve a normal particle effect, or on demand with sys.getTime() as the startTime for finer grained control, 1 quad at a time. Returns True (1) if there are more particles to be emitted from the stage, False (0) if the stage has released all its quads.&lt;br /&gt;
::&#039;&#039;particle&#039;&#039;: String: name of particle effect.&lt;br /&gt;
::&#039;&#039;startTime&#039;&#039;: Game seconds since map start: use sys.getTime() for the first call unless you want to back-date the particle so that it starts part way through its cycle.&lt;br /&gt;
::&#039;&#039;diversity&#039;&#039;: Randomizer value between 0 and 1. All particles with the same diversity will have the same path and rotation. Use sys.random(1) for a random path.&lt;br /&gt;
::&#039;&#039;origin&#039;&#039;: Origin of the particle effect.&lt;br /&gt;
::&#039;&#039;angle&#039;&#039;: Axis for the particle effect. Use $&amp;lt;entityname&amp;gt;.getAngles() to align the particle to an entity. use &#039;0 0 0&#039; for an upright (world-aligned) particle effect.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;error&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues an error.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeIn&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades towards the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeOut&#039;&#039;&#039;(vector color, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades from the given color over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;fadeTo&#039;&#039;&#039;(vector color, float alpha, float time); ====&lt;br /&gt;
&lt;br /&gt;
:Fades to the given color up to the given alpha over the given time in seconds.&lt;br /&gt;
::&#039;&#039;time&#039;&#039;: in seconds&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;firstPerson&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns view control to the player entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;floor&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the largest integer that is less than or equal to the given value.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getCurrentMissionNum&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the current mission (0-based, the first mission has number 0).&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getcvar&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for a cvar.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getDifficultyLevel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns 0 (Easy), 1 (Medium) or 2 (Hard), depending on the difficulty level of the current mission.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getDifficultyName&#039;&#039;&#039;(float difficultyLevel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the (translated) name of the difficulty level passed as the argument.&lt;br /&gt;
::&#039;&#039;difficultyLevel&#039;&#039;: 0 (Easy), 1 (Medium), 2 (Hard)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getEntity&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity with the specified name.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getFrameTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the length of time between game frames.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getMainAmbientLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity of the main ambient light.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getMissionStatistic&#039;&#039;&#039;(string statisticName); ====&lt;br /&gt;
&lt;br /&gt;
:Returns current mission statistic.&lt;br /&gt;
::&#039;&#039;statisticName&#039;&#039;: Can be one of (case insensitive): 	gamePlayTime: gameplay time in seconds 	damageDealt: damage dealt to enemies 	damageReceived: damage received by player 	healthReceived: health received by player 	pocketsPicked: pockets picked by player 	foundLoot: loot found by player 	missionLoot: total loot available in mission 	totalTimePlayerSeen: total time the player was seen by enemies in seconds. Updates only when AI lose sight of player 	numberTimesPlayerSeen: number of times player was seen by enemies 	numberTimesAISuspicious: number of times AI was &#039;observant&#039; or &#039;suspicious&#039;. A single AI passing through both alert levels will add 2 to the score. 	numberTimesAISearched: number of times AI was &#039;investigating&#039; or &#039;searching&#039;. A single AI passing through both alert levels will add 2 to the score. 	sightingScore: sighting score (number of times player was seen * weight) 	stealthScore: stealth score (sighting score + alerts * weights) 	killedByPlayer: number of enemies killed by player 	knockedOutByPlayer: number of enemies knocked out by player 	bodiesFound: number of times enemies have spotted a body &lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getNextEntity&#039;&#039;&#039;(string key, string value, entity lastMatch); ====&lt;br /&gt;
&lt;br /&gt;
:Discover all entities in the map. Returns $null_entity when no more found.&lt;br /&gt;
::&#039;&#039;key&#039;&#039;: Optional string: prefix for spawnarg key match. E.g. &amp;quot;target&amp;quot; will match &amp;quot;target&amp;quot;, &amp;quot;target1&amp;quot; etc.&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: Optional string: spawnarg value to match. Can be used independently of &#039;&#039;key&#039;&#039;. If &#039;&#039;key&#039;&#039; is not set, all spawnargs will be checked for the value.&lt;br /&gt;
::&#039;&#039;lastMatch&#039;&#039;: Last match: search will start after this entity. Use $null_entity or pass an uninitialized entity variable to start a new search.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPersistantFloat&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getPersistantString&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getPersistantVector&#039;&#039;&#039;(string key); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given persistent arg&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortAISoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortPlayerSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss  scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getPortSoundLoss&#039;&#039;&#039;(float handle); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getRelation&#039;&#039;&#039;(float team1, float team2); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTDMVersion&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Get the current TDM version as integer. The value will be 108 for v1.08, 109 for v1.09 and 200 for v2.00 etc.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTicsPerSecond&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:returns the number of game frames per second.  this is not related to renderer frame rate.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTime&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the current game time in seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceBody&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the body part of the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceEndPos&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the position the trace stopped due to a collision with solid geometry during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getTraceEntity&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a reference to the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getTraceFraction&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed during the last call to trace or tracePoint.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;getTraceJoint&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of the skeletal joint closest to the location on the entity which was hit during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;getTraceNormal&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normal of the hit plane during the last call to trace or tracePoint&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;handleMissionEvent&#039;&#039;&#039;(entity objEnt, float eventType, string argument); ====&lt;br /&gt;
&lt;br /&gt;
:Generic interface for passing on mission events from scripts to the SDK. Available since TDM 1.02&lt;br /&gt;
::&#039;&#039;objEnt&#039;&#039;: the entity that triggered this event (e.g. a readable)&lt;br /&gt;
::&#039;&#039;eventType&#039;&#039;: a numeric identifier (enumerated both in MissionData.h and tdm_defs.script) specifying the type of event&lt;br /&gt;
::&#039;&#039;argument&#039;&#039;: an optional string parameter, eventtype-specific.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;influenceActive&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if an influence is active&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isClient&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:networking - checks for client&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isMultiplayer&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:checks if it&#039;s a multiplayer game&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;killthread&#039;&#039;&#039;(string threadName); ====&lt;br /&gt;
&lt;br /&gt;
:Kills all threads with the specified name&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;log&#039;&#039;&#039;(float x); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the log of the given argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;logString&#039;&#039;&#039;(float logClass, float logType, string output); ====&lt;br /&gt;
&lt;br /&gt;
:This is the script counterpart to DM_LOG&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;music&#039;&#039;&#039;(string shaderName); ====&lt;br /&gt;
&lt;br /&gt;
:Starts playing background music.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;offsetRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;onSignal&#039;&#039;&#039;(float signalNum, entity ent, string functionName); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a script callback function for when the given signal is raised on the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pause&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Pauses the current thread.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pointInLiquid&#039;&#039;&#039;(vector point, entity ignoreEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Checks if a point is in a liquid, returns 1 if this is the case.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;pow&#039;&#039;&#039;(float x, float y); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the power of x to y.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;print&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given string to the console.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;println&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Prints the given line to the console.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;radiusDamage&#039;&#039;&#039;(vector origin, entity inflictor, entity attacker, entity ignore, string damageDefName, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:damages entities within a radius defined by the damageDef.  inflictor is the entity  causing the damage and can be the same as the attacker (in the case   of projectiles, the projectile is the inflictor, while the attacker is the character  that fired the projectile).&lt;br /&gt;
::&#039;&#039;inflictor&#039;&#039;: the entity causing the damage&lt;br /&gt;
::&#039;&#039;ignore&#039;&#039;: an entity to not cause damage to&lt;br /&gt;
::&#039;&#039;dmgPower&#039;&#039;: scales the damage (for cases where damage is dependent on time)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;random&#039;&#039;&#039;(float range); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a random value X where 0 &amp;lt;= X &amp;lt; range.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;say&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Multiplayer - Print this line on the network&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;sessionCommand&#039;&#039;&#039;(string cmd); ====&lt;br /&gt;
&lt;br /&gt;
:Sends the sessioncommand to the game&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setCamera&#039;&#039;&#039;(entity cameraEnt); ====&lt;br /&gt;
&lt;br /&gt;
:Turns over view control to the given camera entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setcvar&#039;&#039;&#039;(string name, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a cvar.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPersistantArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair that persists between maps&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortAISoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:AI sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortPlayerSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Player sound loss scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setPortSoundLoss&#039;&#039;&#039;(float handle, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sound propagation scriptfunction on the sys object&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setRelation&#039;&#039;&#039;(float team1, float team2, float val); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setShaderParm&#039;&#039;&#039;(float parm, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the value of the specified shader parm.&lt;br /&gt;
::&#039;&#039;parm&#039;&#039;: shader parm index&lt;br /&gt;
::&#039;&#039;value&#039;&#039;: new value&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setSpawnArg&#039;&#039;&#039;(string key, string value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a key/value pair to be used when a new entity is spawned.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sin&#039;&#039;&#039;(float degrees); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the sine of the given angle in degrees.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;spawn&#039;&#039;&#039;(string classname); ====&lt;br /&gt;
&lt;br /&gt;
:Creates an entity of the specified classname and returns a reference to the entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;SpawnFloat&#039;&#039;&#039;(string key, float default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the floating point value for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;SpawnString&#039;&#039;&#039;(string key, string default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;SpawnVector&#039;&#039;&#039;(string key, vector default); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the vector for the given spawn argument.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;sqrt&#039;&#039;&#039;(float square); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the square root of the given number.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strFind&#039;&#039;&#039;(string text, string find, float casesensitive, float start, float end); ====&lt;br /&gt;
&lt;br /&gt;
:Return the position of the given substring, counting from 0, or -1 if not found.&lt;br /&gt;
::&#039;&#039;casesensitive&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;start&#039;&#039;: 0&lt;br /&gt;
::&#039;&#039;end&#039;&#039;: -1&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strLeft&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the first num characters&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strLength&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of characters in the string&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strMid&#039;&#039;&#039;(string text, float start, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the characters from start to start + num&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRemove&#039;&#039;&#039;(string text, string remove); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given substring with &amp;quot;&amp;quot;. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;) results in &amp;quot;aa&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strReplace&#039;&#039;&#039;(string text, string remove, string replace); ====&lt;br /&gt;
&lt;br /&gt;
:Replace all occurances of the given string with the replacement string. Example: StrRemove(&amp;quot;abba&amp;quot;,&amp;quot;bb&amp;quot;,&amp;quot;ccc&amp;quot;) results in &amp;quot;accca&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strRight&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns a string composed of the last num characters&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;strSkip&#039;&#039;&#039;(string text, float num); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the string following the first num characters&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToFloat&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the numeric value of the given string.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;strToInt&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the integer value of the given string.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;terminate&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Terminates a thread.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;threadname&#039;&#039;&#039;(string name); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the name of the current thread.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;trace&#039;&#039;&#039;(vector start, vector end, vector mins, vector maxs, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the box from &#039;mins&#039; to &#039;maxs&#039; hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;tracePoint&#039;&#039;&#039;(vector start, vector end, float contents_mask, entity passEntity); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the fraction of movement completed before the trace hits solid geometry when moving from &#039;start&#039; to &#039;end&#039;. The &#039;passEntity&#039; is considered non-solid during the move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent string &#039;&#039;&#039;translate&#039;&#039;&#039;(string input); ====&lt;br /&gt;
&lt;br /&gt;
:Translates a string (like #str_12345) into the current language&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;trigger&#039;&#039;&#039;(entity entityToTrigger); ====&lt;br /&gt;
&lt;br /&gt;
:Triggers the given entity.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;vecLength&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the length of the given vector.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;vecNormalize&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the normalized version of the given vector.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent vector &#039;&#039;&#039;VecToAngles&#039;&#039;&#039;(vector vec); ====&lt;br /&gt;
&lt;br /&gt;
:Returns Euler angles for the given direction.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;wait&#039;&#039;&#039;(float time); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of the current thread for the given number of seconds.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFor&#039;&#039;&#039;(entity mover); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given entity to complete its move.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForRender&#039;&#039;&#039;(entity e); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends the current thread until &#039;e&#039; might have been rendered. It&#039;s event based, so it doesn&#039;t waste CPU repeatedly checking inPVS(). e.inPVS() will very likely be true when the thread resumes. If e.inPVS() is true, calling waitForRender() will probably just wait a frame, unless D3 can figure out that the entity doesn&#039;t need to be rendered. Optimizations regarding shadowcasting lights may not apply to this function - it is based purely off whether or not the entity&#039;s bounding box is visible.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitForThread&#039;&#039;&#039;(float threadNumber); ====&lt;br /&gt;
&lt;br /&gt;
:Waits for the given thread to terminate.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;waitFrame&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Suspends execution of current thread for one game frame.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;warning&#039;&#039;&#039;(string text); ====&lt;br /&gt;
&lt;br /&gt;
:Issues a warning.&lt;br /&gt;
&lt;br /&gt;
=== idSecurityCamera ===&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getSpotLight&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the spotlight used by the camera. Returns null_entity if none is used.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_light&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the spotlight on/off.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;toggle_sweep&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Toggles the camera sweep.&lt;br /&gt;
&lt;br /&gt;
=== Seed ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;cullAll&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Cull (remove from world) all entities.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
=== idSound ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;Off&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity off.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;On&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Turns the entity on.&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Remove ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Show ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Damage ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SessionCommand ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_EndLevel ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_WaitForButton ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetGlobalShaderTime ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetShaderParm ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetShaderTime ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_FadeEntity ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_LightFadeIn ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_LightFadeOut ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_Give ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetModel ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetInfluence ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetKeyVal ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_SetFov ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_CallObjectFunction ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_PostScriptEvent ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_EnableLevelWeapons ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_RemoveWeapons ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTarget_FadeSoundClass ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_AddObjectives ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetObjectiveState ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetObjectiveVisibility ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetObjectiveComponentState ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_StartConversation ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetFrobable ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_CallScriptFunction ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ChangeLockState ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ChangeTarget ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_InterMissionTrigger ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_SetTeam ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== CTarget_ItemRemove ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;disable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Disables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;enable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Enables the mover/trigger&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Multi ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_EntityName ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Timer ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Count ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Hurt ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Fade ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idTrigger_Touch ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;activate&#039;&#039;&#039;(entity activator); ====&lt;br /&gt;
&lt;br /&gt;
:Activates this entity as if it was activated by a trigger.&lt;br /&gt;
::&#039;&#039;activator&#039;&#039;: the entity that caused the action (usually the player)&lt;br /&gt;
&lt;br /&gt;
=== idWeapon ===&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;addToClip&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;allowDrop&#039;&#039;&#039;(float allow); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoAvailable&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Number of shots left in inventory&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;ammoInClip&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animDone&#039;&#039;&#039;(float channel, float blendOutFrames); ====&lt;br /&gt;
&lt;br /&gt;
:Returns true if the animation playing on the given channel is completed considering a number of blend frames.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;animIsPaused&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Return whether the given anim channel is paused&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;clipSize&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;createProjectile&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;ejectBrass&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;flashlight&#039;&#039;&#039;(float enable); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getBlendFrames&#039;&#039;&#039;(float channel); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;getLightParm&#039;&#039;&#039;(float parmNum); ====&lt;br /&gt;
&lt;br /&gt;
:Gets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getOwner&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the owning entity&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent entity &#039;&#039;&#039;getWorldModel&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Returns the entity that controls the world model&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;isInvisible&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;launchProjectiles&#039;&#039;&#039;(float num_projectiles, float spread, float fuseOffset, float launchPower, float dmgPower); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;melee&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netEndReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;netReload&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;nextWeapon&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:No description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;pauseAnim&#039;&#039;&#039;(float channel, float bPause); ====&lt;br /&gt;
&lt;br /&gt;
:Pause all animations playing on the given channel. NOTE: Can also be used used by idWeapons&lt;br /&gt;
::&#039;&#039;bPause&#039;&#039;: true = pause, false = unpause&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playAnim&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Do not use, this is part of TDM&#039;s internal mechanics. Use playCustomAnim() on AI.in scripts instead of this. Plays the given animation on the given channel. Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;playCycle&#039;&#039;&#039;(float channel, string animName); ====&lt;br /&gt;
&lt;br /&gt;
:Continuously repeats the given animation on the given channel.  Returns false if anim doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setBlendFrames&#039;&#039;&#039;(float channel, float blendFrame); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the number of frames to blend between animations on the given channel.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParm&#039;&#039;&#039;(float parmNum, float value); ====&lt;br /&gt;
&lt;br /&gt;
:Sets a shader parameter.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;setLightParms&#039;&#039;&#039;(float parm0, float parm1, float parm2, float parm3); ====&lt;br /&gt;
&lt;br /&gt;
:Sets the red/green/blue/alpha shader parms on the light and the model.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachment&#039;&#039;&#039;(string attName, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment.&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;showAttachmentInd&#039;&#039;&#039;(float index, float show); ====&lt;br /&gt;
&lt;br /&gt;
:Show or hide an attachment by array index.&lt;br /&gt;
::&#039;&#039;index&#039;&#039;: starts at 0&lt;br /&gt;
::&#039;&#039;show&#039;&#039;: 1 shows attachment, 0 hides it.&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent float &#039;&#039;&#039;totalAmmoCount&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:Amount of ammo in inventory. since each shot may use more than 1 ammo, this is different than ammoAvailable()&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;useAmmo&#039;&#039;&#039;(float amount); ====&lt;br /&gt;
&lt;br /&gt;
:Eats the specified amount of ammo&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponHolstered&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponLowering&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponOutOfAmmo&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReady&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponReloading&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponRising&#039;&#039;&#039;(); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
==== scriptEvent void &#039;&#039;&#039;weaponState&#039;&#039;&#039;(string stateFunction, float blendFrames); ====&lt;br /&gt;
&lt;br /&gt;
:no description&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=19971</id>
		<title>Upcoming Fan Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Upcoming_Fan_Missions&amp;diff=19971"/>
		<updated>2018-05-04T17:13:24Z</updated>

		<summary type="html">&lt;p&gt;Grayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a community editable list of upcoming Fan Missions. &lt;br /&gt;
&lt;br /&gt;
As with the main Fan Missions wiki, please do not directly link to any copyright infringing material.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Estimated Release Date&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Last Update&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Mission Size&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;15%&amp;quot;|Series&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT UPCOMING MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Braeden Church&lt;br /&gt;
|grayman&lt;br /&gt;
|None&lt;br /&gt;
|2018-06&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Cleaning Up the Neighbourhood&lt;br /&gt;
|some1stoleit&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry418523}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Chronicles of Skulduggery: Pearls and Swine&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417974}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Seed of the Lodestar &lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry417992}}&lt;br /&gt;
|In Beta&lt;br /&gt;
|2018-02-06&lt;br /&gt;
|VERY BIG!!!!!!!&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Order of Thieves: Qualifying Examination (Working Title) &lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-306#entry419272}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-16&lt;br /&gt;
|unknown&lt;br /&gt;
|The Order of Thieves&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-302#entry415161}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Judith&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-307#entry419303}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP&lt;br /&gt;
|the_deep&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-304#entry416919}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP Venice style mission&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-303#entry416616}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-12-21&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Nohcelf&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-299#entry411874}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-09-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Amadeus&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry410684}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-15&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-298#entry411014}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-08-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Fingernail (Mod Founder!)&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-296#entry407248}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-07-04&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Aosys&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401570}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-14&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-293#entry401454}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-02-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Dunedain19&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry400031}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-01-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-292#entry401007}} {{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-294#entry404753}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission (Meanwhile in Newfoundland...)&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-289#entry396542}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-11-02&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Demagogue&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-283#entry391040}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-06-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Unexpected Guest&lt;br /&gt;
|refl3ks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-288#entry396176}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-10-25&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Capela&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-274#entry385818}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2016-01-28&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-268#entry383869}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Ascension &lt;br /&gt;
|Kvorning&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-233#entry353437}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-08-27&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Chedap&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-230#entry350680}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-07-23&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Railgun&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-218#entry343613}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2014-04-16&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Un-named WIP mission &lt;br /&gt;
|Krypt&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page-201#entry326281}}&lt;br /&gt;
|TBC&lt;br /&gt;
|2013-11-13&lt;br /&gt;
|unknown&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Iceclaw&lt;br /&gt;
|Bikerdude, Fidcal.&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|The Nexus&lt;br /&gt;
|Jdude, Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/ Restless Plunder]&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Forumlink|http://www.thedarkmod.com/posts/crucible-of-omens-news-feed/}}&lt;br /&gt;
|2014?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 4 - The Warrens]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2018&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 5 - Deceit]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2018&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 6 - Corruption]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 7 - The Builders&#039; Forge]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284 William Steele 8 - At Wood&#039;s End]&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12904-william-steele/page__view__findpost__p__262284}}&lt;br /&gt;
|2019&lt;br /&gt;
|2018-05-04&lt;br /&gt;
|Unknown&lt;br /&gt;
|William Steele&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.mindplaces.com/darkmod/team.php The Dead Gathers]&lt;br /&gt;
|Greebo, Angua&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__207519}}&lt;br /&gt;
|2010-07-08&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/12800-dram-blackheart-manor-and-airships/page__view__findpost__p__259351 Blackstone manor]&lt;br /&gt;
|Dram, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://www.mindplaces.com/darkmod/team.php}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102 Manor Royale]&lt;br /&gt;
|Fidcal, Squill.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__223102}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/11340-geometry-detail-and-lighting/page__p__221942__hl__cave__fromsearch__1&amp;amp;#entry221942 The Buried Cloister]&lt;br /&gt;
|Jdude, Fidcal, Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11340-geometry-detail-and-lighting/}}&lt;br /&gt;
|2014-02-17&lt;br /&gt;
|2015?&lt;br /&gt;
|XXL&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974 Unknown]&lt;br /&gt;
|Goldchocobo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__326974}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2013-11-21&lt;br /&gt;
|M?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/ Closemouthed Shadows 2 Dark Vendetta]&lt;br /&gt;
|LordSavage&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/13348-announcing-closemouthed-shadows-dark-vendetta-closemouthed-shadows-2/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-27&lt;br /&gt;
|M?&lt;br /&gt;
|Closemouthed Shadows&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__282318 A Favored Treatment]&lt;br /&gt;
|fllood&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__344056}}{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__368824}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2015-03-28&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070 Pagan Tree Village?]&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__281070}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-03-12&lt;br /&gt;
|L?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971 Moving Train Mission?]&lt;br /&gt;
|Chuzhoi&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__279971}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-02-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199 Unknown Title?]&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__278199}}&lt;br /&gt;
|After TDM 1.08?&lt;br /&gt;
|2012-02-11&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478 Unknown Title?]&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__276478}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2012-01-20&lt;br /&gt;
|M?&lt;br /&gt;
|Selis Woderose?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172 Girl with a Rabbit]&lt;br /&gt;
|ithel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10403-tdm-fan-mission-lists-released-and-upcoming/page__view__findpost__p__267172}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-09-26&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/ Old Friends]&lt;br /&gt;
|Johannes Burock&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12167-johannes-box/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-01-29&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513 HSC 11, Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/13055-halloween-speed-build-contest/page__view__findpost__p__270513}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-11-08&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown HSC related&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325 Unknown?]&lt;br /&gt;
|Xcen&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__260325}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2011-06-17&lt;br /&gt;
|M?&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923 Unknown?]&lt;br /&gt;
|ungoliant&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__211923}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__212354}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-03&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676 Winter Map?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__238676}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-12-01&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932 Noble Cave?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10003-so-what-are-you-working-on-right-now/page__view__findpost__p__210932}} {{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/7911-doom-3-does-not-have-any-problems-pushing-polys/page__view__findpost__p__156144}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-02&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912 Cathedral?]&lt;br /&gt;
|AluminumHaste&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/7664-cathedral-ive-been-working-on/page__view__findpost__p__150912}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2009-11&lt;br /&gt;
|0&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|Wreckers reach&lt;br /&gt;
|Bikerdude, Jdude, Lemonyfresh.&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10966-anyone-want-to-join-me/}}&lt;br /&gt;
|2015?&lt;br /&gt;
|2014/02/17&lt;br /&gt;
|L&lt;br /&gt;
|Crucible of Omens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://forums.thedarkmod.com/index.php?/topic/10985-the-sly-project/ The Sly Project?]&lt;br /&gt;
|Oszkár Winkler, With help from RailGun, Mr Mike, Goldchocobo&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/darkmod/index.php?/topic/10985-the-sly-project/}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|2010-08&lt;br /&gt;
|L&lt;br /&gt;
|5 missions long campaign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the official release mission list, please visit:&lt;br /&gt;
&lt;br /&gt;
[[Fan Missions for The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Security_Camera&amp;diff=19929</id>
		<title>Security Camera</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Security_Camera&amp;diff=19929"/>
		<updated>2018-04-19T11:50:24Z</updated>

		<summary type="html">&lt;p&gt;Grayman: /* Security Camera */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Security Camera==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;New with TDM 2.07. Current WIP will change this page.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security camera (aka remote camera) has been a part of TDM for years, but has been rarely, if ever, used. Recent problems came to light when trying to use it, so I (grayman) decided to flesh it out for 2.06. That done, some issues supporting a more Thief-like camera model were discovered too late in the 2.06 release cycle to safely accommodate required changes in the camera, so work will continue into 2.07.&lt;br /&gt;
&lt;br /&gt;
The security camera is different than the cinematic camera discussed in [[Cutscenes]]. The cinematic camera takes over the entire screen and presents to the player what the camera sees. The security camera paints its view on a func_static display provided by the map author.&lt;br /&gt;
&lt;br /&gt;
There are different types of cameras:&lt;br /&gt;
&lt;br /&gt;
* A rotating camera that sweeps back and forth.&lt;br /&gt;
* A stationary camera that doesn&#039;t move.&lt;br /&gt;
* A camera that uses the view from another entity (typically a target_null) to show a scene on its display screen.&lt;br /&gt;
&lt;br /&gt;
The camera provides the following features:&lt;br /&gt;
&lt;br /&gt;
* An optional spotlight that points forward, lighting the area in the direction the camera faces. This spotlight can be toggled on/off.&lt;br /&gt;
* The ability to toggle the camera power on/off. This is useful if the mapper wants to give the player the ability to shut down power to an area.&lt;br /&gt;
* The ability to halt a rotating camera so it stops sweeping. It then becomes equivalent to a stationary camera. Sweeping can be started back up again.&lt;br /&gt;
* The camera will normally spot the player, but this can be toggled on/off. When the player is spotted, the camera initially plays a short alert sound. The player is given a short time to hide, but when that time expires and the player is still in view, another alarm sounds. This alarm will play intermittently for a while, even if the player moves out of sight. This second alarm will alert nearby guards.&lt;br /&gt;
* If the camera has targets, these will be activated when the second &amp;quot;player alarm&amp;quot; plays. This gives the map author the ability to play a more powerful alarm than the one given off by the camera. (Or to do a variety of other things.)&lt;br /&gt;
&lt;br /&gt;
==The Security Camera Entity and its Spawnargs==&lt;br /&gt;
&lt;br /&gt;
The camera is &#039;&#039;func_securitycamera&#039;&#039;, and it&#039;s found in the &#039;&#039;Func&#039;&#039; folder in DR. It comes with a default model, which the map author can change if he wishes.&lt;br /&gt;
&lt;br /&gt;
Place the camera entity in your map, and orient it toward its starting direction. A rotating camera will sweep clockwise, then halt a moment, then sweep back counter-clockwise.&lt;br /&gt;
&lt;br /&gt;
Spawnargs:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;rotate&amp;quot; - If &amp;quot;1&amp;quot; (default) the camera will rotate. If &amp;quot;0&amp;quot;, the camera becomes stationary.&lt;br /&gt;
* &amp;quot;scanDist&amp;quot; - The distance limit for spotting the player, and how far forward the spotlight will travel. Default is 200 units. &lt;br /&gt;
* &amp;quot;sweepSpeed&amp;quot; - How many seconds it takes a rotating camera to complete a sweep in one direction. Default is 5 seconds.&lt;br /&gt;
* &amp;quot;health&amp;quot; - Cameras can be &#039;killed&#039;. Default is 100.&lt;br /&gt;
* &amp;quot;scanFov&amp;quot; - The camera&#039;s FOV. Default is 90 degrees.&lt;br /&gt;
* &amp;quot;sweepAngle&amp;quot; - The angle of sweep. Default is 90 degrees. You can cause a camera to initially sweep in the counter-clockwise direction by setting this to a negative number.&lt;br /&gt;
* &amp;quot;seePlayer&amp;quot; - If &amp;quot;1&amp;quot; (default) the camera will react if it sees the player. If &amp;quot;0&amp;quot;, it won&#039;t.&lt;br /&gt;
* &amp;quot;sightResume&amp;quot; - How long the camera pauses after losing sight of the player. When this expires, the camera will resume scanning. Default is 1.5 seconds.&lt;br /&gt;
* &amp;quot;sightTime&amp;quot; - After spotting the player, the camera will pause this amount of time before it sounds an alarm. Default is 5 seconds. This gives the player some time to hide.&lt;br /&gt;
* &amp;quot;sweepWait&amp;quot; - How long the pause is after a sweep completes and starting the return sweep. Default is 0.5 seconds.&lt;br /&gt;
* &amp;quot;wait&amp;quot; - How long the camera will play its alarm after spotting the player (and deciding it&#039;s really the player). Default is 20 seconds. If the player is still visible at the end of this time, the clock will start over again. Otherwise, the camera will pause &amp;quot;sightResume&amp;quot; seconds, then return to scanning.&lt;br /&gt;
* &amp;quot;spotLight&amp;quot; - If &amp;quot;1&amp;quot; the camera will start with a spotlight. If you choose not to start with a spotlight, change the camera&#039;s skin spawnarg to &amp;quot;security_camera_on_spotlight_off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Important Spawnargs if you change the camera model:&lt;br /&gt;
&lt;br /&gt;
The default camera uses spawnargs to place its &#039;eye&#039; and spotlight. If you use a different model, you might need to change these.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;viewOffset&amp;quot; - A vector that defines the offset of the camera&#039;s &#039;eye&#039; from the camera&#039;s origin.&lt;br /&gt;
* &amp;quot;lightOffset&amp;quot; - A vector that defines the spotlight offset from the camera&#039;s origin.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;cameraTarget&amp;quot; Spawnarg:&lt;br /&gt;
&lt;br /&gt;
For a camera that&#039;s displaying its view on a screen, this spawnarg can be left undefined.&lt;br /&gt;
&lt;br /&gt;
For a camera that&#039;s replacing its own view with that of another entity (i.e. a target_null), set the following:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cameraTarget&amp;quot; - The name of the entity supplying the view.&lt;br /&gt;
&lt;br /&gt;
==The Display Screen==&lt;br /&gt;
&lt;br /&gt;
The display screen where the camera&#039;s image is shown is a func_static patch that uses the shader &#039;&#039;textures/darkmod/camera&#039;&#039;. Size the patch appropriately.&lt;br /&gt;
&lt;br /&gt;
Spawnargs:&lt;br /&gt;
&lt;br /&gt;
* cameraTarget - The name of the camera whose view will be painted on this display.&lt;br /&gt;
&lt;br /&gt;
If you plan to use more than one camera in your mission, or if the camera display will appear in the same player POV as the sky or reflective water surfaces, you&#039;ll need to copy the material shader &#039;&#039;textures/darkmod/camera&#039;&#039; (in materials/tdm_security_camera.mtr) to a map-specific *.mtr file, rename it to something like &#039;&#039;camera1&#039;&#039;, and give it a unique &#039;&#039;map&#039;&#039; keyword. Place this file in your mission&#039;s &#039;&#039;materials&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
For example, if you have two cameras in your mission, you would assign one of these shaders to the display for the first camera, and the other shader to the display for the second:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
camera1&lt;br /&gt;
{&lt;br /&gt;
	qer_editorimage textures/editor/cameragui.tga&lt;br /&gt;
	noshadows&lt;br /&gt;
	{&lt;br /&gt;
		red Parm0&lt;br /&gt;
		green Parm1&lt;br /&gt;
		blue Parm2&lt;br /&gt;
		remoteRenderMap 232 232 // width / height of render image, ie resolution of screen&lt;br /&gt;
  		scale -1, -1&lt;br /&gt;
		translate -1, -1&lt;br /&gt;
		map &amp;quot;camera1&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
camera2&lt;br /&gt;
{&lt;br /&gt;
	qer_editorimage textures/editor/cameragui.tga&lt;br /&gt;
	noshadows&lt;br /&gt;
	{&lt;br /&gt;
		red Parm0&lt;br /&gt;
		green Parm1&lt;br /&gt;
		blue Parm2&lt;br /&gt;
		remoteRenderMap 232 232 // width / height of render image, ie resolution of screen&lt;br /&gt;
  		scale -1, -1&lt;br /&gt;
		translate -1, -1&lt;br /&gt;
		map &amp;quot;camera2&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the &#039;&#039;map &amp;quot;camera1&amp;quot;&#039;&#039; and &#039;&#039;map &amp;quot;camera2&amp;quot;&#039;&#039; lines. These unique names allow the renderer to correctly display both camera displays in the same mission.&lt;br /&gt;
&lt;br /&gt;
==Examining a Test Map==&lt;br /&gt;
&lt;br /&gt;
You can obtain a test map with sample cameras in it here: [http://ftp.thedarkmod.com/tutorials/RemoteCamera/camerawiki.pk4 camerawiki.pk4].&lt;br /&gt;
&lt;br /&gt;
Open the map &#039;&#039;camerawiki.map&#039;&#039; in Dark Radiant. In this map, we have examples of the different cameras.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cw1.jpg|256px|thumb|right|cam1]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A rotating camera that sweeps back and forth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This camera (&#039;&#039;cam1&#039;&#039;) starts its rotation at 135 degrees (assuming +X is 0 degrees), and sweeps clockwise until it reaches 45 degrees. It pauses for a moment, then return-sweeps back to 135 degrees. It has a spotlight.&lt;br /&gt;
&lt;br /&gt;
The display for &#039;&#039;cam1&#039;&#039; is on the wall behind it. (Don&#039;t worry about the material being displayed backward.)&lt;br /&gt;
&lt;br /&gt;
The display patch uses a custom material &#039;&#039;camera1&#039;&#039; (provided in the camerawiki/materials/camera.mtr file). It&#039;s custom because there are other displays in this test map.&lt;br /&gt;
&lt;br /&gt;
The four buttons below the display do the following (from left to right):&lt;br /&gt;
&lt;br /&gt;
* Toggle Power - targets &#039;&#039;cam1&#039;&#039; directly. When power is off, the display screen is hidden. You can simulate an &amp;quot;off&amp;quot; screen by making sure there&#039;s a black material behind the display. You could also place a glass material behind the display.&lt;br /&gt;
* Toggle Spotlight - calls the &#039;&#039;toggleSCSpotlight()&#039;&#039; routine in the camera&#039;s scriptobject, turning the spotlight on/off&lt;br /&gt;
* Toggle Player Sighting - calls the &#039;&#039;toggleSCPlayer()&#039;&#039; routine in the camera&#039;s scriptobject, turning Player detection on/off&lt;br /&gt;
* Toggle Sweep - calls the &#039;&#039;toggleSCSweep()&#039;&#039; routine in the camera&#039;s scriptobject, turning camera sweep on/off&lt;br /&gt;
&lt;br /&gt;
[[Image:Cw2.jpg|256px|thumb|right|cam1&#039;s display]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&#039;&#039;&#039;A stationary camera that doesn&#039;t move&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Cw3.jpg|320px|thumb|right|cam2 and its display]]&lt;br /&gt;
This camera (&#039;&#039;cam2&#039;&#039;)  is stationary, w/o a spotlight.&lt;br /&gt;
&lt;br /&gt;
Its display, to its left, uses a custom material &#039;&#039;camera2&#039;&#039; (provided in the camerawiki/materials/camera.mtr file). It&#039;s custom because there are other displays in this test map.&lt;br /&gt;
&lt;br /&gt;
The two buttons below the display do the following (from left to right):&lt;br /&gt;
&lt;br /&gt;
* Toggle Power - targets &#039;&#039;cam2&#039;&#039; directly. When power is off, the display screen is hidden.&lt;br /&gt;
* Toggle Player Sighting - calls the &#039;&#039;toggleSCPlayer()&#039;&#039; routine in the camera&#039;s scriptobject, turning Player detection on/off&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A camera that uses the view from another entity (typically a target_null) to show a scene on its display screen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Cw6.jpg|320px|thumb|right|cam3&#039;s display]]&lt;br /&gt;
&lt;br /&gt;
This camera (&#039;&#039;cam3&#039;&#039;) is stationary, w/o a spotlight, and it doesn&#039;t spot the player. In the test map, you&#039;ll find it in the blue room. Note that the camera uses the following spawnarg:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cameraTarget&amp;quot; &amp;quot;Cam3View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you look in the room where the guard is standing, you&#039;ll see a &#039;&#039;target_null&#039;&#039; named &#039;&#039;Cam3View&#039;&#039;, which provides the view to the display screen.&lt;br /&gt;
&lt;br /&gt;
Look at the other spawnargs on the camera. You&#039;ll see that it doesn&#039;t rotate, it doesn&#039;t have a spotlight, and it won&#039;t spot the player.&lt;br /&gt;
&lt;br /&gt;
This camera could be used for something like &#039;peeking through keyholes&#039;, though that functionality hasn&#039;t been tested in 2.06. It would most likely need an accompanying &#039;player ear&#039; in the observed room (not yet implemented). To simulate a keyhole, the display screen would be placed inside the opening. You&#039;d also need a companion camera looking the other way (room-&amp;gt;hall).&lt;br /&gt;
&lt;br /&gt;
The button below the display does the following&lt;br /&gt;
&lt;br /&gt;
* Toggle Power - targets &#039;&#039;cam3&#039;&#039; directly. When power is off, the display screen is hidden.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Grayman</name></author>
	</entry>
</feed>